]> Cypherpunks.ru repositories - govpn.git/blobdiff - doc/server.texi
Replace Argon2 with Balloon hashing
[govpn.git] / doc / server.texi
index 4fd074c0d391d220a6b1b328994c733e1fd3bbb4..325d317cb4b435f88398e56d51382166919c008f 100644 (file)
@@ -1,75 +1,87 @@
-@node Server part
+@node Server
 @section Server part
 
-Except for common @code{-mtu}, @code{-stats}, options server has the
-following ones:
+Except for common @ref{Stats, -stats}, @ref{EGD, -egd}, @ref{Syslog, -syslog}
+options server has the following ones:
 
-@table @code
-@item -bind
-Address (@code{host:port} format) we must bind to.
-@item -peers
-Path to the directory containing peers information, database.
-@end table
-
-Peers directory must contain subdirectories with the names of client's
-identities in hexadecimal notation. Each subdirectory has the following
-files:
-
-@table @code
-
-@item key
-@strong{Required}. Contains corresponding authentication PSK key in
-hexadecimal notation.
+@table @option
 
-@item up.sh
-@strong{Required}. up-script executes each time connection with the
-client is established. It's @emph{stdout} output must contain TAP
-interface name on the first string. This script can be simple
-@code{echo tap10}, or maybe more advanced like this:
-    @example
-    #!/bin/sh
-    $tap=$(ifconfig tap create)
-    ifconfig $tap inet6 fc00::1/96 mtu 1412 up
-    echo $tap
-    @end example
+@item -proto
+@ref{Network, Network protocol} to use. Can be @emph{udp} (default),
+@emph{tcp} or @emph{all}.
 
-@item down.sh
-Optional. Same as @code{up.sh} above, but executes when connection is
-lost.
-
-@item name
-Optional. Contains human readable username. Used to beauty output of
-@ref{Stats}.
-
-@item timeout
-Optional. Contains @ref{Timeout} setting (decimal notation) in seconds.
-Otherwise default minute timeout will be used.
-
-@item noncediff
-Optional. Contains allowable @ref{Nonce difference} setting (decimal
-notation).
+@item -bind
+Address (@code{host:port} format) we must bind to.
 
-@item noise
-Optional. Contains either "1" (enable @ref{Noise} adding), or "0".
+@item -conf
+Path to YAML file with the configuration.
 
-@item cpr
-Optional. Contains @ref{CPR} setting (decimal notation) in KiB/sec.
+@item -proxy
+Start trivial HTTP @ref{Proxy} server on specified @emph{host:port}.
 
 @end table
 
-Each minute server refreshes peers directory contents and adds newly
-appeared identities, deletes an obsolete ones.
-
-You can use convenient @code{utils/newclient.sh} script for new client
+Configuration file is YAML file with following example structure:
+
+@verbatim
+stargrave:                          <-- Peer human readable name
+    iface: tap10                    <-- OPTIONAL TAP interface name
+    mtu: 1515                       <-- OPTIONAL overriden MTU
+    up: ./stargrave-up.sh           <-- OPTIONAL up-script
+    down: ./stargrave-down.sh       <-- OPTIONAL down-script
+    timeout: 60                     <-- OPTIONAL overriden timeout
+    timesync: 0                     <-- OPTIONAL time synchronization requirement
+    noise: No                       <-- OPTIONAL noise enabler
+    cpr: 64                         <-- OPTIONAL constant packet rate, KiB/sec
+    encless: No                     <-- OPTIONAL Encryptionless mode
+    verifier: $baloon...            <-- verifier received from client
+[...]
+@end verbatim
+
+At least one of either @code{iface} or @code{up} must be specified. If
+you specify @code{iface}, then it will be forcefully used to determine
+what TAP interface will be used. If it is not specified, then
+up-@ref{Scripts, script} must output interface's name to stdout
+(first output line).
+
+For example up-script can be just @code{echo tap10}, or more advanced
+like the following one:
+
+@verbatim
+#!/bin/sh
+$tap=$(ifconfig tap create)
+ifconfig $tap inet6 fc00::1/96 mtu 1412 up
+echo $tap
+@end verbatim
+
+Each minute server rereads and refreshes peers configuration and adds
+newly appeared identities, deletes an obsolete ones.
+
+You can use convenient @command{utils/newclient.sh} script for new client
 creation:
 
-@example
+@verbatim
 % ./utils/newclient.sh Alice
-9b40701bdaf522f2b291cb039490312
-@end example
-
-@code{9b40701bdaf522f2b291cb039490312} is client's identification.
-@code{peers/9b40701bdaf522f2b291cb039490312/name} contains @emph{Alice},
-@code{peers/9b40701bdaf522f2b291cb039490312/key} contains authentication key and
-@code{peers/9b40701bdaf522f2b291cb039490312/up.sh} contains currently
-dummy empty up-script.
+[...]
+Your client verifier is: $balloon$s=32768,t=16,p=2$bwR5VjeCYIQaa8SeaI3rqg
+
+Place the following YAML configuration entry on the server's side:
+
+    Alice:
+        up: /path/to/up.sh
+        iface: or TAP interface name
+        verifier: $balloon$s=32768,t=16,p=2$bwR5VjeCYIQaa8SeaI3rqg$KCNIqfS4DGsBTtVytamAzcISgrlEWvNxan1UfBrFu10
+@end verbatim
+
+Example configuration file:
+@verbatim
+stargrave:
+    iface: tap0
+    verifier: $balloon$s=32768,t=16,p=2$VMirzcshcHuG2V4jhUsEjw$X5fC07L8k61h3S1Oro/rC76+m0oGDTA9Bq+aWJ1uOgY
+slow:
+    iface: tap1
+    encless: Yes
+    mtu: 9000
+    cpr: 384
+    verifier: $balloon$s=32768,t=16,p=2$YbIA5garDqCOhtI/2EZVNg$gOo5vcEGynmpeepNscwclicfZsWxzgYFRLbgG21EZ1U
+@end verbatim