]> Cypherpunks.ru repositories - govpn.git/blobdiff - utils/newclient.sh
up.sh is not forcefully required
[govpn.git] / utils / newclient.sh
index 620aac71538a6240294a4c7adc24f2577c5994c6..2c2a811e49aeb5863ecc763d9b4aa56d94ac4ea4 100755 (executable)
@@ -1,16 +1,12 @@
 #!/bin/sh -e
 
-getrand()
-{
-    local size=$1
-    dd if=/dev/random bs=$size count=1 2>/dev/null | hexdump -ve '"%02x"'
-}
+PATH=$PATH:.
 
 [ -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.
+It asks for passphrase, generates verifier and shows you example
+JSON entry for server configuration.
 
 Usage: $0 <username>
 EOF
@@ -18,9 +14,28 @@ EOF
 }
 
 username=$1
-peerid=$(getrand 16)
 umask 077
-mkdir -p peers/$peerid
-getrand 32 > peers/$peerid/key
-touch peers/$peerid/$1
-echo peers/$peerid/$1
+passphrase=$(mktemp)
+$(dirname $0)/storekey.sh $passphrase
+verifier=$(govpn-verifier -key $passphrase)
+rm -f $passphrase
+verifierS=$(echo $verifier | sed 's/^\(.*\) .*$/\1/')
+verifierC=$(echo $verifier | sed 's/^.* \(.*\)$/\1/')
+echo
+
+cat <<EOF
+Your client verifier is: $verifierC
+
+Place the following JSON configuration entry on the server's side:
+
+    "$username": {
+        "up": "/path/to/up.sh",
+        "iface": "or TAP interface name",
+        "verifier": "$verifierS"
+    }
+
+Verifier was generated with:
+
+    $(dirname $0)/storekey.sh /tmp/passphrase
+    govpn-verifier -key /tmp/passphrase
+EOF