summaryrefslogtreecommitdiff
path: root/keycopy.sh
diff options
context:
space:
mode:
Diffstat (limited to 'keycopy.sh')
-rw-r--r--keycopy.sh49
1 files changed, 47 insertions, 2 deletions
diff --git a/keycopy.sh b/keycopy.sh
index f7779b4..9f2f435 100644
--- a/keycopy.sh
+++ b/keycopy.sh
@@ -23,11 +23,56 @@ nocomments()
23 sed 's/#.*//; /^ *$/d' 23 sed 's/#.*//; /^ *$/d'
24} 24}
25 25
26
27write_config()
28{
29 conn=$1
30 remote_addrs=$2
31 id=$3
32 cat > /etc/swanctl/conf.d/"$conn".conf <<END
33connections {
34 ${conn} {
35 remote_addrs = ${remote_addrs}
36 vips = ::
37 local {
38 pubkeys = ssh_host_rsa_key.pub
39 auth = pubkey
40 id = ${id}
41 }
42 remote {
43 id = "${remote_addrs}"
44 pubkeys = ${conn}.pub
45 auth = pubkey
46 }
47 children {
48 child {
49 remote_ts = 0::0/0
50 mode = tunnel
51 dpd_action = restart
52 }
53 }
54 }
55}
56secrets {
57 private1 {
58 file = ssh_host_rsa_key
59 }
60}
61END
62}
63
26test_new_config() 64test_new_config()
27{ 65{
28 ipsec stop 66 ipsec stop
29 cp andy.conf /etc/swanctl/conf.d/ 67
30 nocomments < andy.conf 68 yourip=68.48.18.140
69 iface=$(ip -oneline route get "$yourip" | sed -ne 's/.* dev \([^ ]*\) .*/\1/p')
70 [ "$iface" ] || return
71 mymac=$(ip -oneline -6 addr show dev "$iface" | sed -ne 's/.* inet6 fe80::\([^/]*\)\/.*/\1/p')
72 [ "$mymac" ] || return
73
74 write_config andy "$yourip" "$mymac"
75
31 ipsec start 76 ipsec start
32 sleep 2 77 sleep 2
33 swanctl -c 78 swanctl -c