If, for whatever reason, you've managed to delete your zones db files, you can use this script to recreate them.
Note, this will destroy all of your previous zone data, so you'll want to ensure you really want to start all zones over again.
Any custom zone data that was added will be removed.
You'd only want to be using this if you have no other alternatives for recovering your dns data.
Create a new script called fix_db.sh, and fill it with this code:
#!/bin/shÂ
NAMED_DIR=/var/named
DA_USERS_DIR=/usr/local/directadmin/data/users
NS1=`grep ns1= /usr/local/directadmin/conf/directadmin.conf | cut -d= -f2`
NS2=`grep ns2= /usr/local/directadmin/conf/directadmin.conf | cut -d= -f2`
for DA_USER in `ls ${DA_USERS_DIR}`; do
{
for DOMAIN in `cat ${DA_USERS_DIR}/${DA_USER}/domains.list; cat ${DA_USERS_DIR}/${DA_USER}/domains/*.pointers 2>/dev/null | cut -d= -f1;`; do
{
echo $DOMAIN
rm ${NAMED_DIR}/${DOMAIN}.db
if [ ! -r "${NAMED_DIR}/${DOMAIN}.db" ]; then
IP=`cat ${DA_USERS_DIR}/${DA_USER}/domains/${DOMAIN}.conf | grep ip= | cut -d= -f2`
echo "\$TTL 14400" Â > Â ${NAMED_DIR}/${DOMAIN}.db
echo "@ Â Â Â Â IN Â Â Â SOA Â Â ${NS1}. Â Â Â Â hostmaster.${DOMAIN}. (" Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo " Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 2010101901" Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo " Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 14400" Â Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo " Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 3600" Â Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo " Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1209600" Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo " Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 86400 )" Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "" Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "${DOMAIN}. Â Â Â Â 14400 Â IN Â Â Â Â Â Â Â NS Â Â Â ${NS1}." Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "${DOMAIN}. Â Â Â Â 14400 Â IN Â Â Â Â Â Â Â NS Â Â Â ${NS2}." Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "" Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "${DOMAIN}. Â Â Â Â 14400 Â IN Â Â Â Â Â Â Â A Â Â Â ${IP}" Â Â Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "ftp        14400  IN        A    ${IP}"               >> ${NAMED_DIR}/${DOMAIN}.db
echo "localhost     14400  IN        A    127.0.0.1"                >> ${NAMED_DIR}/${DOMAIN}.db
echo "mail        14400  IN        A    ${IP}"               >> ${NAMED_DIR}/${DOMAIN}.db
echo "pop        14400  IN        A    ${IP}"               >> ${NAMED_DIR}/${DOMAIN}.db
echo "smtp        14400  IN        A    ${IP}"               >> ${NAMED_DIR}/${DOMAIN}.db
echo "www        14400  IN        A    ${IP}"               >> ${NAMED_DIR}/${DOMAIN}.db
echo "" Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "${DOMAIN}. Â Â Â Â 14400 Â IN Â Â Â Â Â Â Â MX Â Â Â 10 mail" Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "${DOMAIN}. Â Â Â Â 14400 Â IN Â Â Â Â Â Â Â TXT Â Â \"v=spf1 a mx ip4:${IP} ~all\"" Â Â >> ${NAMED_DIR}/${DOMAIN}.db
echo "" Â >> ${NAMED_DIR}/${DOMAIN}.db
for SUB in `cat ${DA_USERS_DIR}/${DA_USER}/domains/${DOMAIN}.subdomains`; do
{
echo "${SUB} Â Â Â Â Â Â Â 14400 Â IN Â Â Â Â Â Â Â A Â Â Â ${IP}" Â Â Â Â Â Â Â Â Â Â Â Â Â Â >> ${NAMED_DIR}/${DOMAIN}.db
}
done;
chown bind:bind ${NAMED_DIR}/${DOMAIN}.db
echo " Â - database created."
fi
}
done;
}
done;
Thanks to Desmond from from w3media for contributing this script.