74 lines
1.6 KiB
Bash
Executable File
74 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
KEY=/etc/bind/eoddns_key.key
|
|
ZONE=ddns.entrouvert.org
|
|
HOSTNAME=$REMOTE_USER.$ZONE
|
|
|
|
echo "Content-type: text/html"
|
|
echo ""
|
|
echo "<html><head><title>Whitelist des travailleurs</title></head>"
|
|
echo "<body>"
|
|
echo "<h2>Whitelist des travailleurs</h2>"
|
|
|
|
if echo "$QUERY_STRING" | grep -q '^bye'
|
|
then
|
|
BYE=/bin/true
|
|
echo "<h3>retrait de $HOSTNAME</h3>"
|
|
else
|
|
BYE=/bin/false
|
|
echo "<h3>$HOSTNAME = $REMOTE_ADDR</h3>"
|
|
ADD="update add ${HOSTNAME}. 60 A $REMOTE_ADDR"
|
|
ADD_WILD="update add *.${HOSTNAME}. 60 CNAME ${HOSTNAME}."
|
|
fi
|
|
|
|
echo "<pre>"
|
|
nsupdate -k $KEY << EONSUPDATE
|
|
server ${ZONE}
|
|
zone ${ZONE}
|
|
update delete ${HOSTNAME}. A
|
|
update delete *.${HOSTNAME}. CNAME
|
|
${ADD}
|
|
${ADD_WILD}
|
|
show
|
|
send
|
|
answer
|
|
EONSUPDATE
|
|
echo "</pre>"
|
|
|
|
if ! $BYE; then
|
|
echo "<h3>... et sera présente dans les divers pare-feux d'ici 5 minutes (au plus).</h3>"
|
|
fi
|
|
|
|
if [ ! -z "$QUERY_STRING" ]; then
|
|
NAME=`echo "$QUERY_STRING" | sed -n 's/^.*name=\([A-Za-z0-9_-]*\).*$/\1/p'`
|
|
IP=`echo "$QUERY_STRING" | sed -n 's/^.*ip=\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*$/\1/p'`
|
|
if [ ! -z "$NAME" ]; then
|
|
NAME=${NAME}-${REMOTE_USER}.${ZONE}
|
|
echo "<h2>Zone *.$NAME</h2>"
|
|
|
|
if [ ! -z "$IP" ]; then
|
|
echo "<h3>*.$NAME = $IP</h3>"
|
|
ADD_ZONE="update add ${NAME}. 60 A $IP"
|
|
ADD_WILD_ZONE="update add *.${NAME}. 60 CNAME ${NAME}."
|
|
else
|
|
echo "<h3>retrait de *.$NAME</h3>"
|
|
fi
|
|
|
|
echo "<pre>"
|
|
nsupdate -k $KEY << EONSUPDATE
|
|
server ${ZONE}
|
|
zone ${ZONE}
|
|
update delete ${NAME}. A
|
|
update delete *.${NAME}. CNAME
|
|
${ADD_ZONE}
|
|
${ADD_WILD_ZONE}
|
|
show
|
|
send
|
|
answer
|
|
EONSUPDATE
|
|
echo "</pre>"
|
|
fi
|
|
fi
|
|
|
|
echo "</body></html>"
|