SAM: Simplify list of 3.2 changes since the details are now in the main part of the spec

This commit is contained in:
zzz
2016-01-03 13:20:58 +00:00
parent 96029fd419
commit 516f0dc867

View File

@ -54,56 +54,48 @@ Version 3.1 was introduced in I2P release 0.9.14.
<h3>Version 3.2 Changes</h3>
<p>
Version 3.2 was introduced in I2P release 0.9.24.
</p>
<h4>I2CP Port and Protocol Support</h4>
<ul>
<li>SESSION CREATE now supports options FROM_PORT=nnnn and TO_PORT=nnnn to set default I2P ports
<li>SESSION CREATE STYLE=RAW now supports option PROTOCOL=nnn to set default I2P protocol (18 otherwise)
<li>STREAM CONNECT, DATAGRAM SEND, and RAW SEND now support new options FROM_PORT=nnnn and TO_PORT=nnnn
to override default I2P ports for that connection
<li>RAW SEND now supports option PROTOCOL=nnn to override default I2P RAW protocol value (18)
<li>SESSION CREATE options FROM_PORT and TO_PORT
<li>SESSION CREATE STYLE=RAW option PROTOCOL
<li>STREAM CONNECT, DATAGRAM SEND, and RAW SEND options FROM_PORT and TO_PORT
<li>RAW SEND option PROTOCOL
<li>DATAGRAM RECEIVED, RAW RECEIVED, and forwarded or received streams and repliable datagrams,
now appends to the first line is FROM_PORT=nnnn TO_PORT=nnnn to indicate I2P ports
<li>For a RAW session forwarded to an external port, if the option HEADER=true is provided,
the forwarded raw datagram will be prepended with a line containing PROTOCOL=nnn FROM_PORT=nnnn TO_PORT=nnnn
The line ends with \n.
includes FROM_PORT and TO_PORT
<li>RAW session option HEADER=true will cause
the forwarded raw datagrams to be prepended with a line containing PROTOCOL=nnn FROM_PORT=nnnn TO_PORT=nnnn
<li>The first line of datagrams sent through port 7655 may now start with any 3.x version
<li>The first line of datagrams sent through port 7655 may have, after the destination,
any of the options FROM_PORT=nnnn TO_PORT=nnnn PROTOCOL=nnn
<li>RAW RECEIVED now appends to the first line PROTOCOL=nnn to indicate I2P protocol
<li>Client and server may now send: PING [arbitrary text] on the control port,
with the response:
PONG [arbitrary text from the ping], to be used for control socket keepalive.
Either side may close the session and socket if no response is received in a reasonable time, implementation dependent.
<li>For authorization, client adds USER="xxx" PASSWORD="yyy" to the HELLO parameters.
Double quotes for user and password are recommended but not required.
A double quote inside a user or password must be escaped with a backslash.
On failure the server will reply with an I2P_ERROR and a message.
<li>(optional feature) Authorization configuration with the AUTH command.
A SAM server may implement these commands to facilite persistent storage of credentials.
<ul>
<li>AUTH ENABLE enables authorization on subsequent connections
<li>AUTH DISABLE disables authorization on subsequent connections
<li>AUTH ADD USER="foo" PASSWORD="bar" adds a user/password
<li>AUTH REMOVE USER="foo" removes this user
</ul>
Double quotes for user and password are recommended but not required.
A double quote inside a user or password must be escaped with a backslash.
On failure the server will reply with an I2P_ERROR and a message.
<li>Multiple concurrent pending STREAM ACCEPTs are allowed on the same session ID (even with the same port).
Prior to 3.2, concurrent accepts would fail with ALREADY_ACCEPTING.
<li>The server's control socket may optionally offer SSL/TLS support, as configured on the server and client.
Implementations may offer other transport layers as well; this is outside the scope of the protocol definition.
<li>For STREAM FORWARD, client may add SSL=true to use an SSL socket
<li>New commands QUIT, STOP and EXIT will close the session and socket. Implementation is optional,
for ease in testing via telnet.
<li>The first line of datagrams sent through port 7655 may contain
any of the options FROM_PORT, TO_PORT, PROTOCOL
<li>RAW RECEIVED includes PROTOCOL=nnn
</ul>
<h4>SSL and Authentication</h4>
<ul>
<li>USER/PASSWORD in the HELLO parameters for authorization. See below.
<li>Optional authorization configuration with the AUTH command. See below.
<li>Optional SSL/TLS support on the control socket
<li>STREAM FORWARD option SSL=true
</ul>
<h4>Multithreading</h4>
<ul>
<li>Concurrent pending STREAM ACCEPTs are allowed on the same session ID.
</ul>
<h4>Command Line Parsing and Keepalive</h4>
<ul>
<li>Optional commands QUIT, STOP and EXIT to close the session and socket. See below.
<li>Command parsing will properly handle UTF-8
<li>Command parsing reliably handles whitespace inside quotes
<li>A backslash '\' may escape quotes on the command line
<li>It is recommended but not required that the server map commands to upper case, for ease in testing via telnet.
Do not map keys to upper case, as this would corrupt I2CP options.
<li>Recommended that the server map commands to upper case, for ease in testing via telnet.
<li>Empty option values such as PROTOCOL or PROTOCOL= may be allowed, implementation dependent.
<li>PING/PONG for keepalive. See below.
<li>Servers may implement timeouts for the HELLO or subsequent commands, implementation dependent.
</ul>
</p>