]> Cypherpunks.ru repositories - govpn.git/blob - utils/newclient.sh
Merge branch 'develop'
[govpn.git] / utils / newclient.sh
1 #!/bin/sh -e
2
3 [ -n "$1" ] || {
4     cat <<EOF
5 Example script for creating new user peer for GoVPN.
6 It generates random client's identity, ask for passphrase, generates
7 verifier and shows you example JSON entry for server configuration.
8
9 Usage: $0 <username>
10 EOF
11     exit 1
12 }
13
14 username=$1
15 peerid=$(dd if=/dev/urandom bs=16 count=1 2>/dev/null | hexdump -ve '"%02x"')
16 [ $(echo -n $peerid | wc -c) = 32 ] || peerid=0"$peerid"
17 umask 077
18 passphrase=$(mktemp)
19 $(dirname $0)/storekey.sh $passphrase
20 verifier=$(govpn-verifier -id $peerid -key $passphrase)
21 rm -f $passphrase
22 echo
23
24 cat <<EOF
25 Your id is: $peerid
26
27 Place the following JSON configuration entry on the server's side:
28
29     "$peerid": {
30         "name": "$username",
31         "up": "/path/to/up.sh",
32         "verifier": "$verifier"
33     }
34
35 Verifier was generated with:
36
37     $(dirname $0)/storekey.sh /tmp/passphrase
38     govpn-verifier -id $peerid -key /tmp/passphrase
39
40 Create up.sh script that will output on the first line TAP interface
41 name that must be used for the peer. For example:
42
43     % umask 077
44     % ed /path/to/up.sh
45     a
46     #!/bin/sh
47     echo tap0
48     .
49     wq
50     20
51     % chmod +x /path/to/up.sh
52 EOF