Changeset fcbfd75


Ignore:
Timestamp:
Apr 6, 2009 6:39:30 AM (11 years ago)
Author:
mkvore-commit <mkvore-commit@…>
Branches:
master
Children:
ab84a5c
Parents:
4d27f18
Message:

SAMv3: alternate form of calling SAMBridge.main. Usage message updated.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/sam/java/src/net/i2p/sam/SAMBridge.java

    r4d27f18 rfcbfd75  
    5252
    5353    private static final int SAM_LISTENPORT = 7656;
     54   
    5455    public static final String DEFAULT_SAM_KEYFILE = "sam.keys";
    55     public static final String PROP_DATAGRAM_HOST = "sam.datagram.host";
    56     public static final String PROP_DATAGRAM_PORT = "sam.datagram.port";
    57     public static final String DEFAULT_DATAGRAM_HOST = "0.0.0.0";
    58     public static final String DEFAULT_DATAGRAM_PORT = "7655";
     56    public static final String PROP_TCP_HOST = "sam.tcp.host";
     57    public static final String PROP_TCP_PORT = "sam.tcp.port";
     58    protected static final String DEFAULT_TCP_HOST = "0.0.0.0";
     59    protected static final String DEFAULT_TCP_PORT = "7656";
     60   
     61    public static final String PROP_DATAGRAM_HOST = "sam.udp.host";
     62    public static final String PROP_DATAGRAM_PORT = "sam.udp.port";
     63    protected static final String DEFAULT_DATAGRAM_HOST = "0.0.0.0";
     64    protected static final String DEFAULT_DATAGRAM_PORT = "7655";
    5965
    6066   
     
    200206    }
    201207   
     208    static class HelpRequested extends Exception {static final long serialVersionUID=0x1;}
     209   
    202210    /**
    203211     * Usage:
    204212     *  <pre>SAMBridge [ keyfile [listenHost ] listenPort [ name=val ]* ]</pre>
    205      *
     213     * or:
     214     *  <pre>SAMBridge [ name=val ]* </pre>
     215     * 
    206216     * name=val options are passed to the I2CP code to build a session,
    207217     * allowing the bridge to specify an alternate I2CP host and port, tunnel
     
    212222        String keyfile = DEFAULT_SAM_KEYFILE;
    213223        int port = SAM_LISTENPORT;
    214         String host = "0.0.0.0";
     224        String host = DEFAULT_TCP_HOST;
    215225        Properties opts = null;
    216226        if (args.length > 0) {
    217             keyfile = args[0];
    218             int portIndex = 1;
    219             try {
    220                 port = Integer.parseInt(args[portIndex]);
    221             } catch (NumberFormatException nfe) {
    222                 host = args[1];
    223                 portIndex++;
    224                 try {
    225                     port = Integer.parseInt(args[portIndex]);
    226                 } catch (NumberFormatException nfe1) {
    227                     usage();
    228                     return;
    229                 }
    230             }
    231             opts = parseOptions(args, portIndex+1);
     227                try {
     228                        opts = parseOptions(args, 0);
     229                        keyfile = args[0];
     230                        int portIndex = 1;
     231                        try {
     232                                if (args.length>portIndex) port = Integer.parseInt(args[portIndex]);
     233                        } catch (NumberFormatException nfe) {
     234                                host = args[portIndex];
     235                                portIndex++;
     236                                try {
     237                                        if (args.length>portIndex) port = Integer.parseInt(args[portIndex]);
     238                                } catch (NumberFormatException nfe1) {
     239                                        try {
     240                                                port = Integer.parseInt(opts.getProperty(SAMBridge.PROP_TCP_PORT, SAMBridge.DEFAULT_TCP_PORT));
     241                                                host = opts.getProperty(SAMBridge.PROP_TCP_HOST, SAMBridge.DEFAULT_TCP_HOST);
     242                                        } catch (NumberFormatException e) {
     243                                                usage();
     244                                                return;
     245                                        }
     246                                }
     247                        }
     248                } catch (HelpRequested e) {
     249                        usage();
     250                        return;
     251                }
    232252        }
    233253        SAMBridge bridge = new SAMBridge(host, port, opts, keyfile);
     
    245265    }
    246266
    247     private static Properties parseOptions(String args[], int startArgs) {
     267    private static Properties parseOptions(String args[], int startArgs) throws HelpRequested {
    248268        Properties props = new Properties();
    249269        // skip over first few options
    250270        for (int i = startArgs; i < args.length; i++) {
     271                if (args[i].equals("-h")) throw new HelpRequested();
    251272            int eq = args[i].indexOf('=');
    252273            if (eq <= 0) continue;
     
    264285    private static void usage() {
    265286        System.err.println("Usage: SAMBridge [keyfile [listenHost] listenPortNum[ name=val]*]");
     287        System.err.println("or:");
     288        System.err.println("       SAMBridge [ name=val ]*");
    266289        System.err.println(" keyfile: location to persist private keys (default sam.keys)");
    267290        System.err.println(" listenHost: interface to listen on (0.0.0.0 for all interfaces)");
     
    269292        System.err.println(" name=val: options to pass when connecting via I2CP, such as ");
    270293        System.err.println("           i2cp.host=localhost and i2cp.port=7654");
     294        System.err.println("");
     295        System.err.println("Host and ports of the SAM bridge can be specified with the alternate");
     296        System.err.println("form by specifying options "+SAMBridge.PROP_TCP_HOST+" and/or "+
     297                        SAMBridge.PROP_TCP_PORT);
     298        System.err.println("");
     299        System.err.println("Options "+SAMBridge.PROP_DATAGRAM_HOST+" and "+SAMBridge.PROP_DATAGRAM_PORT+
     300                        " specify the listening ip");
     301        System.err.println("range and the port of SAM datagram server. This server is");
     302        System.err.println("only launched after a client creates the first SAM datagram");
     303        System.err.println("or raw session, after a handshake with SAM version >= 3.0.");
     304        System.err.println("");
     305        System.err.println("The option loglevel=[DEBUG|WARN|ERROR|CRIT] can be used");
     306        System.err.println("for tuning the log verbosity.\n");
    271307    }
    272308   
Note: See TracChangeset for help on using the changeset viewer.