ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FreeBSDAdmin/DNS/reverse.pl
Revision: 845
Committed: 2006-07-25T23:47:46-07:00 (18 years, 11 months ago) by douglas
Content type: text/x-sh
Original Path: FreeBSDAdmin/DNS/reverse.sh
File size: 1581 byte(s)
Log Message:
Woo!

File Contents

# User Rev Content
1 douglas 845 #!/usr/local/bin/bash
2     # Douglas Thrift
3     #
4     # Reverse
5     #
6     # $Id$
7    
8     function usage()
9     {
10     echo "Usage: `basename $0` [previous] hostname address"
11     exit 1
12     }
13    
14     case $# in
15     (2)
16     if grep -Eq '^[-.a-z0-9]+$' <<<$1; then hostname=$1; else usage; fi
17     if grep -Eq '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' <<<$2; then address=$2; else usage; fi
18     ;;
19     (3)
20     if grep -Eq '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' <<<$1; then previous=$1; else usage; fi
21     if grep -Eq '^[-.a-z0-9]+$' <<<$2; then hostname=$2; else usage; fi
22     if grep -Eq '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' <<<$3; then address=$3; else usage; fi
23     ;;
24     (*)
25     usage
26     ;;
27     esac
28    
29     function reverse()
30     {
31     echo "`sed -Ee 's/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/\4.\3.\2.\1/' <<<$1`.in-addr.arpa"
32     }
33    
34     domainname=`reverse $address`
35     zonefile=master/$domainname
36    
37     if [[ -z $previous ]]; then
38     cat > $zonefile <<EOF
39     \$ORIGIN .
40     \$TTL 3600 ; 1 hour
41     $domainname IN SOA ns.douglasthrift.net. admin.douglasthrift.net. (
42     `date +%Y%m%d`01 ; serial
43     7200 ; refresh (2 hours)
44     3600 ; retry (1 hour)
45     604800 ; expire (1 week)
46     3600 ; minimum (1 hour)
47     )
48     NS ns.douglasthrift.net.
49     PTR $hostname.
50     EOF
51     cat >> named.conf <<EOF
52    
53     # $hostname
54     zone "$domainname" {
55     type master;
56     file "$zonefile";
57     };
58     EOF
59     else
60     olddomainname=`reverse $previous`
61     oldzonefile=master/$olddomainname
62     sed -e "s/$olddomainname/$domainname/" -e "s/[0-9]{10} ; serial$/`date +%Y%m%d`01 ; serial/" $oldzonefile > $zonefile
63     sed -i '' -e "s/$olddomainname/$domainname/" named.conf
64     rm -f $oldzonefile
65     fi

Properties

Name Value
svn:executable *
svn:keywords Id