Subversion Repositories My Stuff

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
19 kardasa 1
#!/bin/sh
2
 
3
#####################################################################
4
# Script to generate bind configuration for many domains for
5
# one server
6
#
7
# This script is distributed in the hope that it will be useful,
8
# but WITHOUT ANY WARRANTY; without even the implied warranty of
9
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
# GNU General Public License for more details.
11
# Author: Andrzej Kardaƛ
12
# License: GPLv3 
13
# The full version of the licencse can be obtainted by visiting: 
14
# http://www.gnu.org/licenses/gpl.html
15
#######################################################################
16
BIND_DIR=/chroot/dns/var/bind/
17
MASTER_CONF_FILE=${BIND_DIR}conf/master.conf
18
SLAVE_CONF_FILE=${BIND_DIR}conf/slave.conf
19
SLAVE_DIR=slave
20
MASTER_DIR=master
21
SERIAL=$(date +"%Y%m%y")01
22
MASTER_SERVER_IP="X.X.X.X"
23
SLAVE_SERVERS_NAMES="nameserver1 nameserver2"
24
HOSTNAME=short_server_name
25
CNAMES="www"
26
MX=
27
MX_IP=X.X.X.X
28
FILE=${2}
29
 
30
#Checking the list of parameters
31
 
32
if ( [ $#  -lt 2 ] ) then
33
 
34
echo "To few arguments were passed to script"
35
echo "Usage ./bind_config.sh type zone_list_file"
36
echo "Type can be master | slave"
37
 
38
exit 0
39
fi
40
 
41
#Creating the zone files
42
 
43
if [ "${1}" = "master" ]; then
44
 
45
while read line
46
        do
47
                echo "zone \"$line\" IN { type master; file \"${MASTER_DIR}/$line\"; };" >> ${MASTER_CONF_FILE}
48
                echo "" >  ${BIND_DIR}${MASTER_DIR}/$line
49
                echo "\$TTL 600" >>  ${BIND_DIR}${MASTER_DIR}/$line
50
                echo "; $line" >>  ${BIND_DIR}${MASTER_DIR}/$line
51
                echo "@       IN      SOA     ${HOSTNAME}.$line. hostmaster.$line. (" >>  ${BIND_DIR}${MASTER_DIR}/$line
52
                echo "                        ${SERIAL}      ; serial" >>  ${BIND_DIR}${MASTER_DIR}/$line
53
                echo "                        12h             ; refresh" >>  ${BIND_DIR}${MASTER_DIR}/$line
54
                echo "                        1h              ; retry" >>  ${BIND_DIR}${MASTER_DIR}/$line
55
                echo "                        2w              ; expire" >>  ${BIND_DIR}${MASTER_DIR}/$line
56
                echo "                        1h              ; minimum" >>  ${BIND_DIR}${MASTER_DIR}/$line
57
                echo "                        )" >>  ${BIND_DIR}${MASTER_DIR}/$line
58
                echo "" >>  ${BIND_DIR}${MASTER_DIR}/$line
59
                echo "        IN      NS      ${HOSTNAME}.$line." >>  ${BIND_DIR}${MASTER_DIR}/$line
60
                for server in ${SLAVE_SERVERS_NAMES}
61
                do
62
                        echo "        IN      NS      $server." >>  ${BIND_DIR}${MASTER_DIR}/$line
63
                done
64
                if [ ${MX} ]; then
65
                        echo "        IN      MX      10      ${MX}.$line." >>  ${BIND_DIR}${MASTER_DIR}/$line
66
                fi
67
                echo "@                       IN      A       ${MASTER_SERVER_IP}" >>  ${BIND_DIR}${MASTER_DIR}/$line
68
                echo "" >>  ${BIND_DIR}${MASTER_DIR}/$line
69
                echo "; host_records" >>  ${BIND_DIR}${MASTER_DIR}/$line
70
                echo "localhost               IN      A       127.0.0.1" >>  ${BIND_DIR}${MASTER_DIR}/$line
71
                echo "${HOSTNAME}                 IN      A       ${MASTER_SERVER_IP}" >>  ${BIND_DIR}${MASTER_DIR}/$line
72
                if [ ${MX} ]; then
73
                        echo "${MX}             IN      A       ${MASTER_SERVER_IP}" >>  ${BIND_DIR}${MASTER_DIR}/$line
74
                fi
75
                for cname in ${CNAMES}
76
                do
77
                        echo "${cname}               IN      CNAME       ${HOSTNAME}" >>  ${BIND_DIR}${MASTER_DIR}/$line
78
                done
79
        done < ${FILE}
80
 
81
elif [ "${1}" = "slave" ]; then
82
 
83
        while read line
84
                do
85
                        echo "zone \"$line\" IN { type slave; masters{ ${MASTER_SERVER_IP}; }; file \"${SLAVE_DIR}/$line\"; };" >> ${SLAVE_CONF_FILE}
86
                done < ${FILE}
87
 
88
else
89
 
90
        echo "Usage ./bind_zone_config.sh type zone_list_file"
91
        echo "Type can be master | slave"
92
        exit 0
93
fi