aktxyz - 2007-09-05

To get ubuntu bind9 setup with mysql-bind requires numerous steps.  This script should help out.

#!/bin/bash

# http://mysql-bind.sourceforge.net/
# http://64.233.169.104/search?q=cache:KBLLwTfSZ7kJ:www.kutukupret.com/index.php%3Foption%3Dcom_content%26task%3Dview%26id%3D80%26Itemid%3D37+%22apt-get+source%22+%22dpkg-buildpackage%22+bind9&hl=en&ct=clnk&cd=6&gl=us

#===== root
# sudo passwd root
# su root
echo must be root to run

#===== prep
apt-get update
apt-get install libmysqlclient15-dev
apt-get install libssl-dev
apt-get install libtool
sudo apt-get install debhelper

#===== get bind
cd /usr/src
apt-get source bind9
cd bind9-*

#===== get mysql-bind
wget http://superb-east.dl.sourceforge.net/sourceforge/mysql-bind/mysql-bind-0-1.tgz
tar zxvf mysql-bind-0-1.tgz

#===== copy mysql-bind
cp mysql-bind-0.1/mysqldb.c bin/named
cp mysql-bind-0.1/mysqldb.h bin/named/include

#===== add mysql-bind to named Makefile
cp bin/named/Makefile.in bin/named/Makefile.in.orig
#cp bin/named/Makefile.in.orig bin/named/Makefile.in
ruby -i.bup -ne 'puts $_.gsub(/^DBDRIVER_OBJS =$/,    "DBDRIVER_OBJS = mysqldb.@O@")'                            bin/named/Makefile.in
ruby -i.bup -ne 'puts $_.gsub(/^DBDRIVER_SRCS =$/,    "DBDRIVER_SRCS = mysqldb.c")'                              bin/named/Makefile.in
ruby -i.bup -ne 'puts $_.gsub(/^DBDRIVER_INCLUDES =$/,"DBDRIVER_INCLUDES = -I/usr/include/mysql -DBIG_JOINS=1")' bin/named/Makefile.in
ruby -i.bup -ne 'puts $_.gsub(/^DBDRIVER_LIBS =$/,    "DBDRIVER_LIBS = -L/usr/lib/mysql -lmysqlclient")'         bin/named/Makefile.in
diff bin/named/Makefile.in bin/named/Makefile.in.orig

#===== add mysql-bind to named main.c
cp bin/named/main.c bin/named/main.c.orig
#cp bin/named/main.c.orig bin/named/main.c
ruby -i.bup -ne 'puts $_.gsub(/.*xxdb\.h.*/, "#include \"mysqldb.h\"")' bin/named/main.c
ruby -i.bup -ne 'puts $_.gsub(/.*xxdb_init.*/, "mysqldb_init();")' bin/named/main.c
ruby -i.bup -ne 'puts $_.gsub(/.*xxdb_clear.*/, "mysqldb_clear();")' bin/named/main.c
diff bin/named/main.c bin/named/main.c.orig

#===== build
rm -rf mysql-bind-0.1
rm mysql-bind-0-1.tgz
dpkg-buildpackage

#===== install
cd /usr/src
dpkg -i *.deb

#===== setup database
echo manual step to setup database
# log into mysql
#CREATE DATABASE bind;
#USE bind;
#CREATE TABLE mydomain (
#name varchar(255) default NULL,
#ttl int(11) default NULL,
#rdtype varchar(255) default NULL,
#rdata varchar(255) default NULL
#) TYPE=MyISAM;
#
#INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'SOA', 'mydomain.com. www.mydomain.com. 200309181 28800 7200 86400 28800');
#INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'ns0.mydomain.com.');
#INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'ns1.mydomain.com.');
#INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com.');
#INSERT INTO mydomain VALUES ('w0.mydomain.com', 259200, 'A', '192.168.1.1');
#INSERT INTO mydomain VALUES ('w1.mydomain.com', 259200, 'A', '192.168.1.2');
#INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'CNAME', 'w0.mydomain.com.');
#INSERT INTO mydomain VALUES ('mail.mydomain.com', 259200, 'CNAME', 'w0.mydomain.com.');
#INSERT INTO mydomain VALUES ('ns0.mydomain.com', 259200, 'CNAME', 'w0.mydomain.com.');
#INSERT INTO mydomain VALUES ('ns1.mydomain.com', 259200, 'CNAME', 'w1.mydomain.com.');
#INSERT INTO mydomain VALUES ('www.mydomain.com', 259200, 'CNAME', 'w0.mydomain.com.');
#INSERT INTO mydomain VALUES ('ftp.mydomain.com', 259200, 'CNAME', 'w0.mydomain.com.');

#===== add to your cong /etc/bind/named.conf.local
echo manual step to setup named.conf
# remember to update the user and password
#zone "mydomain.com" {
#type master;
#database "mysqldb bind mydomain 127.0.0.1 mysqluser mysqlpassword";
#};

#===== restart bind
/etc/init.d/bind9 restart

#===== test
dig @localhost w1.mydomain.com