Changeset 5eef43d2


Ignore:
Timestamp:
Oct 8, 2008 2:57:02 PM (12 years ago)
Author:
sponge <sponge@…>
Branches:
master
Children:
00d537e
Parents:
caaf0cc
Message:

BOB "option" added, next small push will have an API fix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/BOB/src/net/i2p/BOB/doCMDS.java

    rcaaf0cc r5eef43d2  
    4747        // FIX ME
    4848        // I need a better way to do versioning, but this will do for now.
    49         public static final String BMAJ = "00",  BMIN = "00",  BREV = "01",  BEXT = "-6";
     49        public static final String BMAJ = "00",  BMIN = "00",  BREV = "01",  BEXT = "-8pre";
    5050        public static final String BOBversion = BMAJ + "." + BMIN + "." + BREV + BEXT;
    5151        private Socket server;
     
    5959        private Log _log;
    6060        /* database strings */
     61        private static final String P_DEST = "DESTINATION";
    6162        private static final String P_INHOST = "INHOST";
    6263        private static final String P_INPORT = "INPORT";
     
    7374        private static final String C_help = "help";
    7475        private static final String C_clear = "clear";
     76        private static final String C_getdest = "getdest";
    7577        private static final String C_getkeys = "getkeys";
    7678        private static final String C_getnick = "getnick";
     
    7981        private static final String C_list = "list";
    8082        private static final String C_newkeys = "newkeys";
     83        private static final String C_option = "option";
    8184        private static final String C_outhost = "outhost";
    8285        private static final String C_outport = "outport";
     
    9497                {C_help, C_help + " <command> * Get help on a command."},
    9598                {C_clear, C_clear + " * Clear the current nickname out of the list."},
     99                {C_getdest, C_getdest + " * Return the destination for the current nickname."},
    96100                {C_getkeys, C_getkeys + " * Return the keypair for the current nickname."},
    97101                {C_getnick, C_getnick + " tunnelname * Set the nickname from the database."},
     
    100104                {C_list, C_list + " * List all tunnels."},
    101105                {C_newkeys, C_newkeys + " * Generate a new keypair for the current nickname."},
     106                {C_option, C_option + " I2CPoption=something * Set an I2CP option. NOTE: Don't use any spaces."},
    102107                {C_outhost, C_outhost + " hostname | IP * Set the outbound hostname or IP."},
    103108                {C_outport, C_outport + " port_number * Set the outbound port that nickname contacts."},
    104                 {C_quiet, C_quiet + " *"},
     109                {C_quiet, C_quiet + " True | False * Don't send to the application the incoming destination."},
    105110                {C_quit, C_quit + " * Quits this session with BOB."},
    106111                {C_setkeys, C_setkeys + " BASE64_keypair * Sets the keypair for the current nickname."},
     
    113118                        C_help + " " +
    114119                        C_clear + " " +
     120                        C_getdest + " " +
    115121                        C_getkeys + " " +
    116122                        C_getnick + " " +
     
    119125                        C_list + " " +
    120126                        C_newkeys + " " +
     127                        C_option + " " +
    121128                        C_outhost + " " +
    122129                        C_outport + " " +
     
    134141
    135142        /**
    136          * 
     143         *
    137144         * @param server
    138145         * @param props
     
    147154        }
    148155
    149         /** 
     156        /**
    150157         * Try to print info from the database
    151          * 
     158         *
    152159         * @param out
    153160         * @param info
     
    165172        /**
    166173         * Print true or false if an object exists
    167          * 
     174         *
    168175         * @param out
    169176         * @param info
     
    177184        /**
    178185         * Print an error message
    179          * 
     186         *
    180187         * @param out
    181188         */
     
    186193        /**
    187194         * Dump various information from the database
    188          * 
     195         *
    189196         * @param out
    190197         * @param info
     
    220227        /**
    221228         * Is this nickname's tunnel active?
    222          * 
     229         *
    223230         * @param Arg
    224231         * @return true if the tunnel is active
     
    233240        /**
    234241         * Does the base64 information look OK
    235          * 
     242         *
    236243         * @param data
    237244         * @return
     
    248255         * The actual parser.
    249256         * It probabbly needs a rewrite into functions, but I kind-of like inline code.
    250          * 
     257         *
    251258         */
    252259        public void run() {
     
    284291                                                        }
    285292                                                }
    286 
     293                                        } else if(Command.equals(C_getdest)) {
     294                                                if(ns) {
     295                                                        if(dk) {
     296                                                                out.println("OK " + nickinfo.get(P_DEST));
     297                                                        } else {
     298                                                                out.println("ERROR keys not set.");
     299                                                        }
     300                                                } else {
     301                                                        nns(out);
     302                                                }
    287303                                        } else if(Command.equals(C_list)) {
    288304                                                // Produce a formatted list of all nicknames
     
    312328                                                                        dk = true;
    313329                                                                        nickinfo.add(P_KEYS, prikey.toByteArray());
     330                                                                        nickinfo.add(P_DEST, d.toBase64());
    314331                                                                        // System.out.println(prikey.toByteArray().length);
    315                                                                         out.println("OK " + d.toBase64());
     332                                                                        out.println("OK " + nickinfo.get(P_DEST));
    316333                                                                } catch(IOException ioe) {
    317334                                                                        BOB.error("Error generating keys" + ioe);
     
    395412                                                } else {
    396413                                                        out.println("ERROR tunnel is active");
     414                                                }
     415                                        } else if(Command.equals(C_option)) {
     416                                                if(ns) {
     417                                                        if(tunnelactive(nickinfo)) {
     418                                                                out.println("ERROR tunnel is active");
     419                                                        } else {
     420                                                                StringTokenizer otoken = new StringTokenizer(Arg, "="); // use a space as a delimiter
     421                                                                if(otoken.countTokens() != 2) {
     422                                                                        out.println("ERROR to many or no options.");
     423                                                                } else {
     424                                                                        String pname = otoken.nextToken();
     425                                                                        String pval = otoken.nextToken();
     426                                                                        Properties Q = (Properties)nickinfo.get(P_PROPERTIES);
     427                                                                        Q.setProperty(pname, pval);
     428                                                                        nickinfo.add(P_PROPERTIES, Q);
     429                                                                        out.println("OK " + pname + " set to " + pval);
     430                                                                }
     431                                                        }
     432                                                } else {
     433                                                        nns(out);
    397434                                                }
    398435                                        } else if(Command.equals(C_getnick)) {
     
    505542                                                                        tunnel = new MUXlisten(nickinfo, _log);
    506543                                                                        Thread t = new Thread(tunnel);
     544                                                                        nickinfo.add(P_STARTING, true);
    507545                                                                        t.start();
    508                                                                         nickinfo.add(P_STARTING, true);
    509546                                                                        out.println("OK tunnel starting");
    510547                                                                } catch(I2PException e) {
Note: See TracChangeset for help on using the changeset viewer.