1 |
#!/bin/sh |
2 |
# DHCP Client Exit Hooks |
3 |
# |
4 |
# Douglas Thrift |
5 |
# |
6 |
# $Id$ |
7 |
|
8 |
tunnelbroker() |
9 |
{ |
10 |
local pass=`python -c "import getpass, hashlib; print hashlib.md5(getpass.getpass('tunnelbroker pass: ')).hexdigest()"` |
11 |
read -p 'tunnelbroker user_id: ' -r user_id |
12 |
read -p 'tunnelbroker tunnel_id: ' -r tunnel_id |
13 |
export CURL_CA_BUNDLE=`mktemp -t dhclient` |
14 |
cat >$CURL_CA_BUNDLE <<-EOF |
15 |
-----BEGIN CERTIFICATE----- |
16 |
MIICsTCCAhoCCQC8IBpX67SYlzANBgkqhkiG9w0BAQQFADCBnDELMAkGA1UEBhMC |
17 |
VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEDAOBgNVBAcTB0ZyZW1vbnQxIDAeBgNV |
18 |
BAoTF0h1cnJpY2FuZSBFbGVjdHJpYywgTExDMQ0wCwYDVQQLEwRJUFY2MRkwFwYD |
19 |
VQQDExB0dW5uZWxicm9rZXIubmV0MRowGAYJKoZIhvcNAQkBFgtpbmZvQGhlLm5l |
20 |
dDAeFw0wNzA3MTEwMTM1MzFaFw0xNzA3MDgwMTM1MzFaMIGcMQswCQYDVQQGEwJV |
21 |
UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEQMA4GA1UEBxMHRnJlbW9udDEgMB4GA1UE |
22 |
ChMXSHVycmljYW5lIEVsZWN0cmljLCBMTEMxDTALBgNVBAsTBElQVjYxGTAXBgNV |
23 |
BAMTEHR1bm5lbGJyb2tlci5uZXQxGjAYBgkqhkiG9w0BCQEWC2luZm9AaGUubmV0 |
24 |
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXJHwlKn5pdUqFAZGGYI8sluS+ |
25 |
luS2NiihelZTXAGkE8hrlkS3Xj3AYLknddWgcoTXVMlI9LK0tEQMPZBIV/QXjXHq |
26 |
HvhOb4hoT14w+VbySPRXGDqUiakJYBnNFZiIR8OA51AwM9+pUZGkNEAJYMXE+Th8 |
27 |
euta8zxjPS0kEgjGbwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAFVFliiWM802HDqY |
28 |
loveIJOZdcnXhpQuYmnDgHHC9PAadOVcYzdkkmBoQ1APSfugkHEc7zc/vzjiMlVs |
29 |
62PFaqFxi692CknGCnwyCn+Hm/PFWx+YnOyNLCji2oOYbTZre97n5iZKrOk/hJZO |
30 |
y7bsxRNdmUWgy0urugi331F9y7cf |
31 |
-----END CERTIFICATE----- |
32 |
EOF |
33 |
curl -4 "https://tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$pass&user_id=$user_id&tunnel_id=$tunnel_id" |
34 |
echo |
35 |
rm $CURL_CA_BUNDLE |
36 |
unset CURL_CA_BUNDLE |
37 |
if ! grep -q "^gifconfig_${tunnelbroker_gif:=gif0}=\"$new_ip_address $tunnelbroker_server\"$" /etc/rc.conf; then |
38 |
sed -Ee "s/^(gifconfig_$tunnelbroker_gif=\").*( $tunnelbroker_server\")$/\1$new_ip_address\2/" -i '' /etc/rc.conf |
39 |
ifconfig $tunnelbroker_gif tunnel $new_ip_address $tunnelbroker_server |
40 |
fi |
41 |
} |
42 |
|
43 |
dns() |
44 |
{ |
45 |
read -p 'dns key: ' -r key |
46 |
read -p 'dns secret: ' -r secret |
47 |
nsupdate -d <<-EOF |
48 |
key $key $secret |
49 |
update delete $hostname A |
50 |
update add $hostname 3600 A $new_ip_address |
51 |
send |
52 |
EOF |
53 |
} |
54 |
|
55 |
case ${reason:=RENEW} in |
56 |
BOUND|RENEW|REBIND|REBOOT) |
57 |
case `hostname -s` in |
58 |
justonenight) |
59 |
hostname='ellwoodbeach.douglasthrift.net' |
60 |
tunnelbroker_server='66.220.18.42' |
61 |
;; |
62 |
backhome) |
63 |
hostname='mustang.douglasthrift.net' |
64 |
;; |
65 |
esac |
66 |
|
67 |
: ${new_ip_address:=`host -t a $hostname | cut -d ' ' -f 4`} |
68 |
|
69 |
[ -n "$tunnelbroker_server" ] && tunnelbroker |
70 |
|
71 |
dns |
72 |
;; |
73 |
esac |