Changeset e77c5bd


Ignore:
Timestamp:
Nov 27, 2015 1:44:07 PM (5 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
9f625a0
Parents:
31ace20
Message:

add session options

Location:
apps/sam/java/src/net/i2p/sam/client
Files:
2 edited

Legend:

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

    r31ace20 re77c5bd  
    4545   
    4646    private static final int STREAM=0, DG=1, V1DG=2, RAW=3, V1RAW=4;
    47     private static final String USAGE = "Usage: SAMStreamSend [-s] [-m mode] [-v version] [-b samHost] [-p samPort] [-u user] [-w password] peerDestFile dataDir\n" +
     47    private static final String USAGE = "Usage: SAMStreamSend [-s] [-m mode] [-v version] [-b samHost] [-p samPort] [-o opt=val] [-u user] [-w password] peerDestFile dataDir\n" +
    4848                                        "       modes: stream: 0; datagram: 1; v1datagram: 2; raw: 3; v1raw: 4\n" +
    49                                         "       -s: use SSL";
     49                                        "       -s: use SSL\n" +
     50                                        "       multiple -o session options are allowed";
    5051
    5152    public static void main(String args[]) {
    52         Getopt g = new Getopt("SAM", args, "sb:m:p:u:v:w:");
     53        Getopt g = new Getopt("SAM", args, "sb:m:o:p:u:v:w:");
    5354        boolean isSSL = false;
    5455        int mode = STREAM;
     
    5859        String user = null;
    5960        String password = null;
     61        String opts = "";
    6062        int c;
    6163        while ((c = g.getopt()) != -1) {
     
    7981            case 'b':
    8082                host = g.getOptarg();
     83                break;
     84
     85            case 'o':
     86                opts = opts + ' ' + g.getOptarg();
    8187                break;
    8288
     
    119125        SAMStreamSend sender = new SAMStreamSend(ctx, host, port,
    120126                                                      args[startArgs], args[startArgs + 1]);
    121         sender.startup(version, isSSL, mode, user, password);
     127        sender.startup(version, isSSL, mode, user, password, opts);
    122128    }
    123129   
     
    134140    }
    135141   
    136     public void startup(String version, boolean isSSL, int mode, String user, String password) {
     142    public void startup(String version, boolean isSSL, int mode, String user, String password, String sessionOpts) {
    137143        if (_log.shouldLog(Log.DEBUG))
    138144            _log.debug("Starting up");
     
    145151                _log.debug("Reader created");
    146152            OutputStream out = sock.getOutputStream();
    147             String ourDest = handshake(out, version, true, eventHandler, mode, user, password);
     153            String ourDest = handshake(out, version, true, eventHandler, mode, user, password, sessionOpts);
    148154            if (ourDest == null)
    149155                throw new IOException("handshake failed");
     
    158164                    _log.debug("Reader2 created");
    159165                out = sock2.getOutputStream();
    160                 String ok = handshake(out, version, false, eventHandler, mode, user, password);
     166                String ok = handshake(out, version, false, eventHandler, mode, user, password, "");
    161167                if (ok == null)
    162168                    throw new IOException("2nd handshake failed");
     
    216222    /** @return our b64 dest or null */
    217223    private String handshake(OutputStream samOut, String version, boolean isMaster,
    218                              SAMEventHandler eventHandler, int mode, String user, String password) {
     224                             SAMEventHandler eventHandler, int mode, String user, String password,
     225                             String opts) {
    219226        synchronized (samOut) {
    220227            try {
     
    247254                else
    248255                    style = "RAW";
    249                 String req = "SESSION CREATE STYLE=" + style + " DESTINATION=TRANSIENT " + _conOptions + "\n";
     256                String req = "SESSION CREATE STYLE=" + style + " DESTINATION=TRANSIENT " + _conOptions + ' ' + opts + '\n';
    250257                samOut.write(req.getBytes());
    251258                samOut.flush();
  • apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java

    r31ace20 re77c5bd  
    4848   
    4949    private static final int STREAM=0, DG=1, V1DG=2, RAW=3, V1RAW=4;
    50     private static final String USAGE = "Usage: SAMStreamSink [-s] [-m mode] [-v version] [-b samHost] [-p samPort] [-u user] [-w password] myDestFile sinkDir\n" +
     50    private static final String USAGE = "Usage: SAMStreamSink [-s] [-m mode] [-v version] [-b samHost] [-p samPort] [-o opt=val] [-u user] [-w password] myDestFile sinkDir\n" +
    5151                                        "       modes: stream: 0; datagram: 1; v1datagram: 2; raw: 3; v1raw: 4\n" +
    52                                         "       -s: use SSL";
     52                                        "       -s: use SSL\n" +
     53                                        "       multiple -o session options are allowed";
    5354
    5455    public static void main(String args[]) {
     
    6162        String user = null;
    6263        String password = null;
     64        String opts = "";
    6365        int c;
    6466        while ((c = g.getopt()) != -1) {
     
    8284            case 'b':
    8385                host = g.getOptarg();
     86                break;
     87
     88            case 'o':
     89                opts = opts + ' ' + g.getOptarg();
    8490                break;
    8591
     
    122128        SAMStreamSink sink = new SAMStreamSink(ctx, host, port,
    123129                                                    args[startArgs], args[startArgs + 1]);
    124         sink.startup(version, isSSL, mode, user, password);
     130        sink.startup(version, isSSL, mode, user, password, opts);
    125131    }
    126132   
     
    137143    }
    138144   
    139     public void startup(String version, boolean isSSL, int mode, String user, String password) {
     145    public void startup(String version, boolean isSSL, int mode, String user, String password, String sessionOpts) {
    140146        if (_log.shouldLog(Log.DEBUG))
    141147            _log.debug("Starting up");
     
    148154            if (_log.shouldLog(Log.DEBUG))
    149155                _log.debug("Reader created");
    150             String ourDest = handshake(out, version, true, eventHandler, mode, user, password);
     156            String ourDest = handshake(out, version, true, eventHandler, mode, user, password, sessionOpts);
    151157            if (ourDest == null)
    152158                throw new IOException("handshake failed");
     
    166172                if (_log.shouldLog(Log.DEBUG))
    167173                    _log.debug("Reader2 created");
    168                 String ok = handshake(out, version, false, eventHandler, mode, user, password);
     174                String ok = handshake(out, version, false, eventHandler, mode, user, password, "");
    169175                if (ok == null)
    170176                    throw new IOException("2nd handshake failed");
     
    394400    /** @return our b64 dest or null */
    395401    private String handshake(OutputStream samOut, String version, boolean isMaster,
    396                              SAMEventHandler eventHandler, int mode, String user, String password) {
     402                             SAMEventHandler eventHandler, int mode, String user, String password,
     403                             String sopts) {
    397404        synchronized (samOut) {
    398405            try {
     
    469476                else
    470477                    style = "RAW";
    471                 String req = "SESSION CREATE STYLE=" + style + " DESTINATION=" + dest + " " + _conOptions + "\n";
     478                String req = "SESSION CREATE STYLE=" + style + " DESTINATION=" + dest + ' ' + _conOptions + ' ' + sopts + '\n';
    472479                samOut.write(req.getBytes());
    473480                samOut.flush();
Note: See TracChangeset for help on using the changeset viewer.