ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FreeBSDAdmin/VPN/mpd-up.sh
Revision: 862
Committed: 2006-08-08T18:22:59-07:00 (18 years, 10 months ago) by douglas
Content type: text/x-sh
File size: 1662 byte(s)
Log Message:
Oh! So that's what it is!

File Contents

# User Rev Content
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     root=`dirname $0`
11 douglas 862 interface=`grep -E '^ng[0-9]+$' <<<$1`
12 douglas 856 local_ip=`grep -E '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' <<<$3`
13     remote_ip=`grep -E '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' <<<$4`
14     authname=$5
15    
16     function usage()
17     {
18     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]"
19     exit 1
20     }
21    
22     for (( index = 6; index <= $#; ++index )); do
23     case $(eval "echo \"\${$index}\"") in
24     (dns@(1|2))
25     eval "declare \${$index}=\$(grep -E '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' <<<\${$((++index))})"
26     if eval "[[ -z \$$(eval "echo \${$((index - 1))}") ]]"; then
27     usage
28     fi
29     ;;
30     (*)
31     usage
32     ;;
33     esac
34     done
35    
36     if [[ -z $interface ]] || [[ $2 != inet ]] || [[ -z $local_ip ]] || [[ -z $remote_ip ]] || [[ -z $authname ]]; then
37     usage
38     fi
39    
40 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'`
41    
42     if [[ -z $hostname ]]; then
43 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`
44 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`
45 douglas 856 fi
46    
47 douglas 859 source $root/mpd-common.sh
48 douglas 856
49     nsupdate <<EOF
50     key $name $secret
51     update delete $hostname IN A
52     update add $hostname 300 IN A $remote_ip
53 douglas 859 send`if [[ -n $reverse ]]; then echo "
54 douglas 856 update delete $reverse IN PTR
55     update add $reverse 300 IN PTR $hostname
56 douglas 861 send"; fi`
57 douglas 856 EOF
58    
59     echo $hostname $reverse > ~/.mpd-nsupdate.$interface

Properties

Name Value
svn:executable *
svn:keywords Id