From 075ac7ab43bee022ae88f6e07d5fb1471f40d7bd Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 9 Jul 2020 17:05:06 +0000 Subject: [PATCH] SAM: Rename 3.3 control session --- ...MasterSession.java => PrimarySession.java} | 20 +++---- .../src/net/i2p/sam/SAMStreamSession.java | 4 +- .../java/src/net/i2p/sam/SAMv3Handler.java | 16 +++--- .../src/net/i2p/sam/client/SAMStreamSend.java | 50 +++++++++--------- .../src/net/i2p/sam/client/SAMStreamSink.java | 52 +++++++++---------- 5 files changed, 71 insertions(+), 71 deletions(-) rename apps/sam/java/src/net/i2p/sam/{MasterSession.java => PrimarySession.java} (95%) diff --git a/apps/sam/java/src/net/i2p/sam/MasterSession.java b/apps/sam/java/src/net/i2p/sam/PrimarySession.java similarity index 95% rename from apps/sam/java/src/net/i2p/sam/MasterSession.java rename to apps/sam/java/src/net/i2p/sam/PrimarySession.java index 19d102951f..8fa11429ff 100644 --- a/apps/sam/java/src/net/i2p/sam/MasterSession.java +++ b/apps/sam/java/src/net/i2p/sam/PrimarySession.java @@ -36,7 +36,7 @@ * * @since 0.9.25 */ -class MasterSession extends SAMv3StreamSession implements SAMDatagramReceiver, SAMRawReceiver, +class PrimarySession extends SAMv3StreamSession implements SAMDatagramReceiver, SAMRawReceiver, SAMMessageSess, I2PSessionMuxedListener { private final SAMv3Handler handler; private final SAMv3DatagramServer dgs; @@ -55,13 +55,13 @@ class MasterSession extends SAMv3StreamSession implements SAMDatagramReceiver, S * @throws IOException * @throws DataFormatException */ - public MasterSession(String nick, SAMv3DatagramServer dgServer, SAMv3Handler handler, Properties props) + public PrimarySession(String nick, SAMv3DatagramServer dgServer, SAMv3Handler handler, Properties props) throws IOException, DataFormatException, SAMException { super(nick); for (int i = 0; i < INVALID_OPTS.length; i++) { String p = INVALID_OPTS[i]; if (props.containsKey(p)) - throw new SAMException("MASTER session options may not contain " + p); + throw new SAMException("PRIMARY session options may not contain " + p); } dgs = dgServer; sessions = new ConcurrentHashMap(4); @@ -78,7 +78,7 @@ public MasterSession(String nick, SAMv3DatagramServer dgServer, SAMv3Handler han */ @Override public void start() { - Thread t = new I2PAppThread(streamAcceptor, "SAMMasterAcceptor"); + Thread t = new I2PAppThread(streamAcceptor, "SAMPrimaryAcceptor"); t.start(); } @@ -208,7 +208,7 @@ public synchronized String remove(String nick, Properties props) { */ public void receiveDatagramBytes(Destination sender, byte[] data, int proto, int fromPort, int toPort) throws IOException { - throw new IOException("master session"); + throw new IOException("primary session"); } /** @@ -220,7 +220,7 @@ public void stopDatagramReceiving() {} * @throws IOException always */ public void receiveRawBytes(byte[] data, int proto, int fromPort, int toPort) throws IOException { - throw new IOException("master session"); + throw new IOException("primary session"); } /** @@ -235,19 +235,19 @@ public void stopRawReceiving() {} /** @throws I2PException always */ @Override public void connect(SAMv3Handler handler, String dest, Properties props) throws I2PException { - throw new I2PException("master session"); + throw new I2PException("primary session"); } /** @throws SAMException always */ @Override public void accept(SAMv3Handler handler, boolean verbose) throws SAMException { - throw new SAMException("master session"); + throw new SAMException("primary session"); } /** @throws SAMException always */ @Override public void startForwardingIncoming(Properties props, boolean sendPorts) throws SAMException { - throw new SAMException("master session"); + throw new SAMException("primary session"); } /** does nothing */ @@ -268,7 +268,7 @@ public int getListenPort() { } /** - * Close the master session + * Close the primary session * Overridden to stop the acceptor. */ @Override diff --git a/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java index 4724cadb7e..b56fca6a97 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java +++ b/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java @@ -379,7 +379,7 @@ public boolean closeConnection(int id) { * @since 0.9.25 moved from subclass SAMv3StreamSession to implement SAMMessageSess */ public boolean sendBytes(String s, byte[] b, int pr, int fp, int tp) throws I2PSessionException { - throw new I2PSessionException("Unsupported in STREAM or MASTER session"); + throw new I2PSessionException("Unsupported in STREAM or PRIMARY session"); } /** @@ -391,7 +391,7 @@ public boolean sendBytes(String s, byte[] b, int pr, int fp, int tp, boolean sendLeaseSet, int sendTags, int tagThreshold, int expiration) throws I2PSessionException { - throw new I2PSessionException("Unsupported in STREAM or MASTER session"); + throw new I2PSessionException("Unsupported in STREAM or PRIMARY session"); } /** diff --git a/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java b/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java index e7c5f55bc8..6b6265f928 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java +++ b/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java @@ -136,7 +136,7 @@ Session getSession() { } /** - * For subsessions created by MasterSession + * For subsessions created by PrimarySession * @since 0.9.25 */ void setSession(SAMv3RawSession sess) { @@ -144,7 +144,7 @@ void setSession(SAMv3RawSession sess) { } /** - * For subsessions created by MasterSession + * For subsessions created by PrimarySession * @since 0.9.25 */ void setSession(SAMv3DatagramSession sess) { @@ -152,7 +152,7 @@ void setSession(SAMv3DatagramSession sess) { } /** - * For subsessions created by MasterSession + * For subsessions created by PrimarySession * @since 0.9.25 */ void setSession(SAMv3StreamSession sess) { @@ -463,7 +463,7 @@ protected boolean execSessionMessage(String opcode, Properties props) { allProps.putAll(i2cpProps); allProps.putAll(props); - if (style.equals("MASTER")) { + if (style.equals("PRIMARY") || style.equals("MASTER")) { // We must put these here, as SessionRecord.getProps() makes a copy, // and the socket manager is instantiated in the // SAMStreamSession constructor. @@ -501,9 +501,9 @@ protected boolean execSessionMessage(String opcode, Properties props) { streamSession = v3; this.session = v3; v3.start(); - } else if (style.equals("MASTER")) { + } else if (style.equals("PRIMARY") || style.equals("MASTER")) { SAMv3DatagramServer dgs = bridge.getV3DatagramServer(props); - MasterSession v3 = new MasterSession(nick, dgs, this, allProps); + PrimarySession v3 = new PrimarySession(nick, dgs, this, allProps); streamSession = v3; datagramSession = v3; rawSession = v3; @@ -521,8 +521,8 @@ protected boolean execSessionMessage(String opcode, Properties props) { // prevent trouble in finally block ok = true; if (streamSession == null || datagramSession == null || rawSession == null) - return writeString(SESSION_ERROR, "Not a MASTER session"); - MasterSession msess = (MasterSession) session; + return writeString(SESSION_ERROR, "Not a PRIMARY session"); + PrimarySession msess = (PrimarySession) session; String msg; if (opcode.equals("ADD")) { msg = msess.add(nick, style, props); diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java index 30f0af0864..dcf4347e10 100644 --- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java +++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java @@ -55,19 +55,19 @@ public class SAMStreamSend { private static I2PSSLSocketFactory _sslSocketFactory; private static final int STREAM=0, DG=1, V1DG=2, RAW=3, V1RAW=4; - private static final int MASTER=8; + private static final int PRIMARY=8; private static final String USAGE = "Usage: SAMStreamSend [-s] [-x] [-m mode] [-v version] [-b samHost] [-p samPort]\n" + " [-o opt=val] [-u user] [-w password] peerDestFile dataDir\n" + " modes: stream: 0; datagram: 1; v1datagram: 2; raw: 3; v1raw: 4\n" + " default is stream\n" + " -s: use SSL\n" + - " -x: use master session (forces -v 3.3)\n" + + " -x: use primary session (forces -v 3.3)\n" + " multiple -o session options are allowed"; public static void main(String args[]) { Getopt g = new Getopt("SAM", args, "sxhb:m:o:p:u:v:w:"); boolean isSSL = false; - boolean isMaster = false; + boolean isPrimary = false; int mode = STREAM; String version = "3.3"; String host = "127.0.0.1"; @@ -83,7 +83,7 @@ public static void main(String args[]) { break; case 'x': - isMaster = true; + isPrimary = true; break; case 'm': @@ -132,8 +132,8 @@ public static void main(String args[]) { System.err.println(USAGE); return; } - if (isMaster) { - mode += MASTER; + if (isPrimary) { + mode += PRIMARY; version = "3.3"; } if ((user == null && password != null) || @@ -175,8 +175,8 @@ public void startup(String version, boolean isSSL, int mode, String user, String _log.debug("Reader created"); OutputStream out = sock.getOutputStream(); String ourDest = handshake(out, version, true, eventHandler, mode, user, password, sessionOpts); - if (mode >= MASTER) - mode -= MASTER; + if (mode >= PRIMARY) + mode -= PRIMARY; if (ourDest == null) throw new IOException("handshake failed"); if (_log.shouldLog(Log.DEBUG)) @@ -246,10 +246,10 @@ private Socket connect(boolean isSSL) throws IOException { } /** - * @param isMaster is this the control socket + * @param isPrimary is this the control socket * @return our b64 dest or null */ - private String handshake(OutputStream samOut, String version, boolean isMaster, + private String handshake(OutputStream samOut, String version, boolean isPrimary, SAMEventHandler eventHandler, int mode, String user, String password, String opts) { synchronized (samOut) { @@ -267,7 +267,7 @@ private String handshake(OutputStream samOut, String version, boolean isMaster, _log.debug("Hello reply found: " + hisVersion); if (hisVersion == null) throw new IOException("Hello failed"); - if (!isMaster) + if (!isPrimary) return "OK"; _isV3 = VersionComparator.comp(hisVersion, "3") >= 0; if (_isV3) { @@ -279,14 +279,14 @@ private String handshake(OutputStream samOut, String version, boolean isMaster, _v3ID = "xx€€xx" + _v3ID; _conOptions = "ID=" + _v3ID; } - boolean masterMode; // are we using v3.3 master session + boolean primaryMode; // are we using v3.3 primary session String command; - if (mode >= MASTER) { - masterMode = true; + if (mode >= PRIMARY) { + primaryMode = true; command = "ADD"; - mode -= MASTER; + mode -= PRIMARY; } else { - masterMode = false; + primaryMode = false; command = "CREATE DESTINATION=TRANSIENT"; } String style; @@ -297,19 +297,19 @@ else if (mode == DG || mode == V1DG) else // RAW or V1RAW style = "RAW"; - if (masterMode) { + if (primaryMode) { if (mode == V1DG || mode == V1RAW) - throw new IllegalArgumentException("v1 dg/raw incompatible with master session"); - String req = "SESSION CREATE DESTINATION=TRANSIENT STYLE=MASTER ID=masterSend " + opts + '\n'; + throw new IllegalArgumentException("v1 dg/raw incompatible with primary session"); + String req = "SESSION CREATE DESTINATION=TRANSIENT STYLE=PRIMARY ID=primarySend " + opts + '\n'; samOut.write(req.getBytes("UTF-8")); samOut.flush(); if (_log.shouldLog(Log.DEBUG)) - _log.debug("SESSION CREATE STYLE=MASTER sent"); + _log.debug("SESSION CREATE STYLE=PRIMARY sent"); boolean ok = eventHandler.waitForSessionCreateReply(); if (!ok) - throw new IOException("SESSION CREATE STYLE=MASTER failed"); + throw new IOException("SESSION CREATE STYLE=PRIMARY failed"); if (_log.shouldLog(Log.DEBUG)) - _log.debug("SESSION CREATE STYLE=MASTER reply found: " + ok); + _log.debug("SESSION CREATE STYLE=PRIMARY reply found: " + ok); // PORT required even if we aren't listening for this test if (mode != STREAM) opts += " PORT=9999"; @@ -320,7 +320,7 @@ else if (mode == DG || mode == V1DG) if (_log.shouldLog(Log.DEBUG)) _log.debug("SESSION " + command + " sent"); boolean ok; - if (masterMode) + if (primaryMode) ok = eventHandler.waitForSessionAddReply(); else ok = eventHandler.waitForSessionCreateReply(); @@ -329,7 +329,7 @@ else if (mode == DG || mode == V1DG) if (_log.shouldLog(Log.DEBUG)) _log.debug("SESSION " + command + " reply found: " + ok); - if (masterMode) { + if (primaryMode) { // do a bunch more req = "SESSION ADD STYLE=STREAM FROM_PORT=99 ID=stream99\n"; samOut.write(req.getBytes("UTF-8")); @@ -559,7 +559,7 @@ public void run() { closed(); // stop the reader, since we're only doing this once for testing // you wouldn't do this in a real application - // closing the master socket too fast will kill the data socket flushing through + // closing the primary socket too fast will kill the data socket flushing through try { Thread.sleep(10000); } catch (InterruptedException ie) {} diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java index 4e1fe06396..23cef46da8 100644 --- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java +++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java @@ -58,7 +58,7 @@ public class SAMStreamSink { private static I2PSSLSocketFactory _sslSocketFactory; private static final int STREAM=0, DG=1, V1DG=2, RAW=3, V1RAW=4, RAWHDR = 5, FORWARD = 6, FORWARDSSL=7; - private static final int MASTER=8; + private static final int PRIMARY=8; private static final String USAGE = "Usage: SAMStreamSink [-s] [-m mode] [-v version] [-b samHost] [-p samPort]\n" + " [-o opt=val] [-u user] [-w password] myDestFile sinkDir\n" + " modes: stream: 0; datagram: 1; v1datagram: 2;\n" + @@ -66,7 +66,7 @@ public class SAMStreamSink { " stream-forward: 6; stream-forward-ssl: 7\n" + " default is stream\n" + " -s: use SSL to connect to bridge\n" + - " -x: use master session (forces -v 3.3)\n" + + " -x: use primary session (forces -v 3.3)\n" + " multiple -o session options are allowed"; private static final int V3FORWARDPORT=9998; private static final int V3DGPORT=9999; @@ -74,7 +74,7 @@ public class SAMStreamSink { public static void main(String args[]) { Getopt g = new Getopt("SAM", args, "sxhb:m:p:u:v:w:"); boolean isSSL = false; - boolean isMaster = false; + boolean isPrimary = false; int mode = STREAM; String version = "3.3"; String host = "127.0.0.1"; @@ -90,7 +90,7 @@ public static void main(String args[]) { break; case 'x': - isMaster = true; + isPrimary = true; break; case 'm': @@ -139,8 +139,8 @@ public static void main(String args[]) { System.err.println(USAGE); return; } - if (isMaster) { - mode += MASTER; + if (isPrimary) { + mode += PRIMARY; version = "3.3"; } if ((user == null && password != null) || @@ -181,8 +181,8 @@ public void startup(String version, boolean isSSL, int mode, String user, String if (_log.shouldLog(Log.DEBUG)) _log.debug("Reader created"); String ourDest = handshake(out, version, true, eventHandler, mode, user, password, sessionOpts); - if (mode >= MASTER) - mode -= MASTER; + if (mode >= PRIMARY) + mode -= PRIMARY; if (ourDest == null) throw new IOException("handshake failed"); if (_log.shouldLog(Log.DEBUG)) @@ -578,10 +578,10 @@ private Socket connect(boolean isSSL) throws IOException { } /** - * @param isMaster is this the control socket + * @param isPrimary is this the control socket * @return our b64 dest or null */ - private String handshake(OutputStream samOut, String version, boolean isMaster, + private String handshake(OutputStream samOut, String version, boolean isPrimary, SAMEventHandler eventHandler, int mode, String user, String password, String sopts) { synchronized (samOut) { @@ -598,7 +598,7 @@ private String handshake(OutputStream samOut, String version, boolean isMaster, _log.debug("Hello reply found: " + hisVersion); if (hisVersion == null) throw new IOException("Hello failed"); - if (!isMaster) { + if (!isPrimary) { // only for v3 //String req = "STREAM ACCEPT SILENT=true ID=" + _v3ID + "\n"; // TO_PORT not supported until 3.2 but 3.0-3.1 will ignore @@ -650,7 +650,7 @@ else if (mode == FORWARDSSL) if (_log.shouldLog(Log.DEBUG)) _log.debug("Requesting new transient destination"); } - if (isMaster) { + if (isPrimary) { byte[] id = new byte[5]; _context.random().nextBytes(id); _v3ID = Base32.encode(id); @@ -661,14 +661,14 @@ else if (mode == FORWARDSSL) // and give it to the SAM server dest = _destFile; } - boolean masterMode; // are we using v3.3 master session + boolean primaryMode; // are we using v3.3 primary session String command; - if (mode >= MASTER) { - masterMode = true; + if (mode >= PRIMARY) { + primaryMode = true; command = "ADD"; - mode -= MASTER; + mode -= PRIMARY; } else { - masterMode = false; + primaryMode = false; command = "CREATE DESTINATION=" + dest; } String style; @@ -685,19 +685,19 @@ else if (mode == RAW) else style = "RAW HEADER=true PORT=" + V3DGPORT; - if (masterMode) { + if (primaryMode) { if (mode == V1DG || mode == V1RAW) - throw new IllegalArgumentException("v1 dg/raw incompatible with master session"); - String req = "SESSION CREATE DESTINATION=" + dest + " STYLE=MASTER ID=masterSink " + sopts + '\n'; + throw new IllegalArgumentException("v1 dg/raw incompatible with primary session"); + String req = "SESSION CREATE DESTINATION=" + dest + " STYLE=PRIMARY ID=primarySink " + sopts + '\n'; samOut.write(req.getBytes("UTF-8")); samOut.flush(); if (_log.shouldLog(Log.DEBUG)) - _log.debug("SESSION CREATE STYLE=MASTER sent"); + _log.debug("SESSION CREATE STYLE=PRIMARY sent"); boolean ok = eventHandler.waitForSessionCreateReply(); if (!ok) - throw new IOException("SESSION CREATE STYLE=MASTER failed"); + throw new IOException("SESSION CREATE STYLE=PRIMARY failed"); if (_log.shouldLog(Log.DEBUG)) - _log.debug("SESSION CREATE STYLE=MASTER reply found: " + ok); + _log.debug("SESSION CREATE STYLE=PRIMARY reply found: " + ok); } String req = "SESSION " + command + " STYLE=" + style + ' ' + _conOptions + ' ' + sopts + '\n'; @@ -707,7 +707,7 @@ else if (mode == RAW) _log.debug("SESSION " + command + " sent"); //if (mode == STREAM) { boolean ok; - if (masterMode) + if (primaryMode) ok = eventHandler.waitForSessionAddReply(); else ok = eventHandler.waitForSessionCreateReply(); @@ -716,7 +716,7 @@ else if (mode == RAW) if (_log.shouldLog(Log.DEBUG)) _log.debug("SESSION " + command + " reply found: " + ok); //} - if (masterMode) { + if (primaryMode) { // do a bunch more req = "SESSION ADD STYLE=STREAM FROM_PORT=99 ID=stream99\n"; samOut.write(req.getBytes("UTF-8")); @@ -736,7 +736,7 @@ else if (mode == RAW) samOut.write(req.getBytes("UTF-8")); req = "SESSION REMOVE ID=notfound\n"; samOut.write(req.getBytes("UTF-8")); - req = "SESSION REMOVE ID=masterSink\n"; // shouldn't remove ourselves + req = "SESSION REMOVE ID=primarySink\n"; // shouldn't remove ourselves samOut.write(req.getBytes("UTF-8")); samOut.flush(); }