1 |
douglas |
856 |
#!/usr/local/bin/bash |
2 |
|
|
# MPD Interface Up |
3 |
|
|
# |
4 |
|
|
# Douglas Thrift |
5 |
|
|
# |
6 |
|
|
# $Id$ |
7 |
|
|
|
8 |
|
|
shopt -s extglob |
9 |
|
|
|
10 |
|
|
function usage() |
11 |
|
|
{ |
12 |
|
|
echo -e "Usage: `basename $0` \e[1minterface\e[0m inet \e[1mlocal-ip remote-ip authname\e[0m [dns1 \e[1mserver-ip\e[0m] [dns2 \e[1mserver-ip\e[0m]" |
13 |
|
|
exit 1 |
14 |
|
|
} |
15 |
|
|
|
16 |
douglas |
1005 |
[[ $# -ne 5 ]] && [[ $# -ne 7 ]] && [[ $# -ne 9 ]] && usage |
17 |
|
|
|
18 |
|
|
root=`dirname $0` |
19 |
|
|
|
20 |
|
|
source $root/mpd-common.sh |
21 |
|
|
|
22 |
|
|
declare -a dns |
23 |
|
|
|
24 |
douglas |
856 |
for (( index = 6; index <= $#; ++index )); do |
25 |
|
|
case $(eval "echo \"\${$index}\"") in |
26 |
|
|
(dns@(1|2)) |
27 |
douglas |
1005 |
: $((++index)) |
28 |
|
|
|
29 |
|
|
if [[ $(eval "echo \"\${$((index))}\"") =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then |
30 |
|
|
dns[${#dns}]=${BASH_REMATCH[0]} |
31 |
|
|
else |
32 |
douglas |
856 |
usage |
33 |
|
|
fi |
34 |
|
|
;; |
35 |
|
|
(*) |
36 |
|
|
usage |
37 |
|
|
;; |
38 |
|
|
esac |
39 |
|
|
done |
40 |
|
|
|
41 |
douglas |
859 |
hostname=`host $remote_ip | sed -Ee 's/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.in-addr.arpa domain name pointer ([a-z.-]+)/\1/p;d'` |
42 |
|
|
|
43 |
|
|
if [[ -z $hostname ]]; then |
44 |
douglas |
856 |
hostname=`sed -E 's/^[0-9]{1,3}\.[0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})$/vpn-\1-\2.douglasthrift.net./' <<<$remote_ip` |
45 |
douglas |
859 |
reverse=`sed -E 's/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/\4.\3.\2.\1.in-addr.arpa./' <<<$remote_ip` |
46 |
douglas |
856 |
fi |
47 |
|
|
|
48 |
douglas |
1005 |
key |
49 |
douglas |
856 |
|
50 |
|
|
nsupdate <<EOF |
51 |
|
|
key $name $secret |
52 |
|
|
update delete $hostname IN A |
53 |
|
|
update add $hostname 300 IN A $remote_ip |
54 |
douglas |
859 |
send`if [[ -n $reverse ]]; then echo " |
55 |
douglas |
856 |
update delete $reverse IN PTR |
56 |
|
|
update add $reverse 300 IN PTR $hostname |
57 |
douglas |
861 |
send"; fi` |
58 |
douglas |
856 |
EOF |
59 |
|
|
|
60 |
|
|
echo $hostname $reverse > ~/.mpd-nsupdate.$interface |