nsupdate.cgi

This commit is contained in:
Thomas NOËL 2018-03-21 11:32:38 +01:00
parent c9d1675946
commit cda1e80c1c
1 changed files with 73 additions and 0 deletions

73
nsupdate.cgi Executable file
View File

@ -0,0 +1,73 @@
#!/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&eacute;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>"