This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
misc-thomas/nsupdate.cgi

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&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>"