Do not forget about setting @code{GOMAXPROC} environment variable for
using more than one CPU.
+At first you have to generate client's authentication key and client's
+unique identification. There is @code{utils/newclient.sh} script for
+convenience.
+
+@example
+% ./utils/newclient.sh Alice
+peers/9b40701bdaf522f2b291cb039490312/Alice
+@end example
+
+@code{9b40701bdaf522f2b291cb039490312} is client's identification.
+@code{Alice} is just an empty file that can help to search them like
+this: @verb{|find peers -name Alice|}. @code{key} file inside peer's
+directory contains authentication key.
+
GNU/Linux IPv4 client-server example:
@example
-server% mkdir -p peers/CLIENTID
-server% umask 066
-server% echo MYLONG64HEXKEY > peers/CLIENTID/key
server% echo "#!/bin/sh" > peers/CLIENTID/up.sh
-server% echo "echo tap10" > peers/CLIENTID/up.sh
+server% echo "echo tap10" >> peers/CLIENTID/up.sh
server% chmod 500 peers/CLIENTID/up.sh
server% ip addr add 192.168.0.1/24 dev wlan0
server% tunctl -t tap10
FreeBSD IPv6 client-server example:
@example
-server% mkdir -p peers/CLIENTID
-server% umask 066
-server% echo MYLONG64HEXKEY > peers/CLIENTID/key
-server% echo "#!/bin/sh" >
server% cat > peers/CLIENTID/up.sh <<EOF
#!/bin/sh
$tap=$(ifconfig tap create)
--- /dev/null
+#!/bin/sh -e
+
+getrand()
+{
+ local size=$1
+ dd if=/dev/random bs=$size count=1 2>/dev/null | hexdump -ve '"%02x"'
+}
+
+[ -n "$1" ] || {
+ cat <<EOF
+Example script for creating new user peer for GoVPN.
+It just creates directory with random peer ID and random key in it,
+and adds empty file with human readable username.
+
+Usage: $0 <username>
+EOF
+ exit 1
+}
+
+username=$1
+peerid=$(getrand 16)
+umask 077
+mkdir -p peers/$peerid
+getrand 32 > peers/$peerid/key
+touch peers/$peerid/$1
+echo peers/$peerid/$1