File: ldap2bind

package info (click to toggle)
ldap2zone 0.2-3.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 148 kB
  • sloc: ansic: 325; sh: 219; makefile: 5
file content (92 lines) | stat: -rwxr-xr-x 2,103 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/sh

[ -r /etc/default/ldap2zone ] && . /etc/default/ldap2zone

case "$LDAP_URI" in 
ldap://*|ldaps://*) ;; 
 *) LDAP_URI="ldap://${LDAP_URI}" ;; 
 esac

LDAPSEARCH=`which ldapsearch`

if [ -z "${LDAPSEARCH}" ]; then
        echo "ldapsearch program not in $PATH. Exiting..."
        exit 1
fi

LDAP_URI_PARAM=${LDAP_URI:+"-H $LDAP_URI"}

if [ "$ALLOW_NOTIFY" ]; then
        ALLOW_NOTIFY="$ALLOW_NOTIFY";
else ALLOW_NOTIFY=;
fi

if [ "$ALLOW_UPDATE" ]; then
	ALLOW_UPDATE_PARAM="allow-update {$ALLOW_UPDATE};";
else ALLOW_UPDATE_PARAM=;
fi

if [ "$ALLOW_TRANSFER" ]; then
	ALLOW_TRANSFER_PARAM="allow-transfer {$ALLOW_TRANSFER};";
else ALLOW_TRANSFER_PARAM=;
fi

ZONES=`ldapsearch -LLL $LDAP_URI_PARAM -x "(objectClass=dNSZone)" zoneName | grep zoneName: | sort | uniq | awk '{print $2}'`
ldap2zone=`which ldap2zone`
rndc=`which rndc`

if [ -z "${ZONES}" ]; then
	echo "No domains configured. Exiting..."
	exit 0
fi

if [ -z "${rndc}" ]; then
	echo "rndc program not in $PATH. Exiting..."
	exit 1
fi

if [ -z "${ldap2zone}" ]; then
	echo "ldap2zone program not in $PATH. Exiting..."
	exit 1
fi

if [ ! -d $BIND_DIR ]; then
	echo "The directory specified as $BIND_DIR does not exist. Exiting..."
	exit 1
fi

if [ ! -d $BIND_DATA ]; then
        echo "The directory specified as $BIND_DATA does not exist. Exiting..."
        exit 1
fi


if [ -w $BIND_DIR/named.conf.ldap2zone ]; then
	>${BIND_DIR}/named.conf.ldap2zone
	for domain in $ZONES; do
		cat << EOF >> ${BIND_DIR}/named.conf.ldap2zone
zone "${domain}" {
	type master;
	$ALLOW_NOTIFY
	file "${BIND_DATA}/${PREFIX}${domain}";
	$ALLOW_UPDATE_PARAM
	$ALLOW_TRANSFER_PARAM
};
EOF
	done
	$rndc reconfig
fi

for domain in $ZONES; do
	if $ldap2zone $domain $LDAP_URI $TTL > /tmp/$domain; then
		lines=$(cat /tmp/$domain | wc -l)
		[ $lines -gt 1 ] && mv /tmp/$domain $BIND_DATA/${PREFIX}${domain}
	fi

	result=$($rndc reload $domain 2>&1)
	if [ $? -ne 0 ]; then
                logger -t ldap2bind "Reloading the zone '$domain' failed: $result\n"
	else
                logger -t ldap2bind "Reloading the zone '$domain' was successful\n"
	fi
done