bridge (now with a script to start it, too)
[nikiroo-utils.git] / src / be / nikiroo / utils / main / bridge.java
1 package be.nikiroo.utils.main;
2
3 import be.nikiroo.utils.TraceHandler;
4 import be.nikiroo.utils.serial.server.ServerBridge;
5
6 /**
7 * Serialiser bridge (starts a {@link ServerBridge} and can thus intercept
8 * communication between a client and a server).
9 *
10 * @author niki
11 */
12 public class bridge {
13 /**
14 * Start a bridge between 2 servers.
15 *
16 * @param args
17 * an array containing:
18 * <ul>
19 * <li>The bridge name</li>
20 * <li>The bridge port</li>
21 * <li>TRUE for an SSL bridge, FALSE for plain text</li>
22 * <li>The forward server host</li>
23 * <li>The forward server port</li>
24 * <li>TRUE for an SSL forward server, FALSE for plain text</li>
25 * <li>(optional) a trace level</li>
26 * <li>(optional) a truncate size for data</li>
27 * </ul>
28 */
29 public static void main(String[] args) {
30 final TraceHandler tracer = new TraceHandler(true, false, 0);
31 try {
32 if (args.length < 6) {
33 tracer.error("Invalid syntax.\n"
34 + "Syntax: [name] [port] [ssl] [fhost] [fport] [fssl] ([trace level]) ([max])\n"
35 + "\tname: the bridge name\n"
36 + "\tport: the bridge port\n"
37 + "\tssl: TRUE for an SSL bridge, FALSE for plain text\n"
38 + "\tfhost: the forward server host\n"
39 + "\tfport: the forward server port\n"
40 + "\tfssl: TRUE for an SSL forward server, FALSE for plain text\n"
41 + "\ttrace level: the optional trace level (default is 1)\n"
42 + "\tmax: the maximum size after which to truncate data\n");
43 return;
44 }
45
46 int i = 0;
47 String name = args[i++];
48 int port = Integer.parseInt(args[i++]);
49 boolean ssl = Boolean.parseBoolean(args[i++]);
50 String fhost = args[i++];
51 int fport = Integer.parseInt(args[i++]);
52 boolean fssl = Boolean.parseBoolean(args[i++]);
53
54 int traceLevel = 1;
55 if (args.length > 6) {
56 traceLevel = Integer.parseInt(args[i++]);
57 }
58 int maxPrintSize = 0;
59 if (args.length > 7) {
60 maxPrintSize = Integer.parseInt(args[i++]);
61 }
62
63 ServerBridge bridge = new ServerBridge(name, port, ssl, fhost,
64 fport, fssl);
65 bridge.setTraceHandler(new TraceHandler(true, true, traceLevel,
66 maxPrintSize));
67 bridge.run();
68 } catch (Exception e) {
69 tracer.error(e);
70 }
71 }
72 }