2 changed files with 175 additions and 8 deletions
@ -0,0 +1,154 @@
|
||||
#!/bin/sh |
||||
|
||||
case "$1" in |
||||
gmysql) |
||||
dbtype=MySQL |
||||
;; |
||||
gpgsql) |
||||
dbtype=PostgreSQL |
||||
;; |
||||
*) |
||||
echo "usage: $0 [ gmysql | gpgsql ]" |
||||
exit 1 |
||||
;; |
||||
esac |
||||
|
||||
while [ ".$db" = . ]; do |
||||
echo "Please enter the name of the database to be created:" |
||||
read db |
||||
done |
||||
|
||||
while [ ".$root" = . ]; do |
||||
echo "Please enter the name of the database administrator account:" |
||||
read root |
||||
done |
||||
|
||||
while [ ".$pdnsadm" = . ]; do |
||||
echo "Please enter the name of the DNS administrator account:" |
||||
read pdnsadm |
||||
done |
||||
|
||||
while [ ".$pdns" = . ]; do |
||||
echo "Please enter the name of the DNS user account:" |
||||
read pdns |
||||
done |
||||
|
||||
echo "" |
||||
echo "The $dbtype database '$db' will be created by '$root'." |
||||
echo "Access is granted to the DNS administrator '$pdnsadm'" |
||||
echo "and the DNS user '$pdns'." |
||||
echo "" |
||||
|
||||
case "$1" in |
||||
gmysql) |
||||
echo "Please log in as the $dbtype database administrator ($root)" |
||||
mysql -u$root -p mysql <<EOFEOF |
||||
DROP DATABASE $db; |
||||
CREATE DATABASE $db; |
||||
GRANT ALL ON $db TO $pdnsadm WITH GRANT OPTION |
||||
EOFEOF |
||||
if [ $? -gt 0 ]; then exit 1; fi |
||||
echo "The database has been created" |
||||
echo "" |
||||
echo "Please log in as the $dbtype DNS administrator ($pdnsadm)" |
||||
mysql -u$pdnsadm -p $db <<EOFEOF |
||||
CREATE TABLE domains ( |
||||
id INT auto_increment, |
||||
name VARCHAR(255) NOT NULL, |
||||
master VARCHAR(20) DEFAULT NULL, |
||||
last_check INT DEFAULT NULL, |
||||
type VARCHAR(6) NOT NULL, |
||||
notified_serial INT DEFAULT NULL, |
||||
account VARCHAR(40) DEFAULT NULL, |
||||
primary key (id) |
||||
)type=InnoDB; |
||||
|
||||
CREATE UNIQUE INDEX name_index ON domains(name); |
||||
|
||||
CREATE TABLE records ( |
||||
id INT auto_increment, |
||||
domain_id INT DEFAULT NULL, |
||||
name VARCHAR(255) DEFAULT NULL, |
||||
type VARCHAR(6) DEFAULT NULL, |
||||
content VARCHAR(255) DEFAULT NULL, |
||||
ttl INT DEFAULT NULL, |
||||
prio INT DEFAULT NULL, |
||||
change_date INT DEFAULT NULL, |
||||
primary key(id) |
||||
)type=InnoDB; |
||||
|
||||
CREATE INDEX rec_name_index ON records(name); |
||||
CREATE INDEX nametype_index ON records(name,type); |
||||
CREATE INDEX domain_id ON records(domain_id); |
||||
|
||||
CREATE TABLE supermasters ( |
||||
ip VARCHAR(25) NOT NULL, |
||||
nameserver VARCHAR(255) NOT NULL, |
||||
account VARCHAR(40) DEFAULT NULL |
||||
); |
||||
|
||||
GRANT SELECT ON supermasters TO $pdns; |
||||
GRANT ALL ON domains TO $pdns; |
||||
EOFEOF |
||||
if [ $? -gt 0 ]; then exit 1; fi |
||||
echo "The database has been populated" |
||||
echo "" |
||||
;; |
||||
gpgsql) |
||||
echo "Please log in as the $dbtype database administrator ($root)" |
||||
psql -U $root $db <<EOFEOF |
||||
DROP DATABASE $db; |
||||
CREATE DATABASE $db; |
||||
GRANT ALL ON $db TO $pdnsadm WITH GRANT OPTION; |
||||
EOFEOF |
||||
if [ $? -gt 0 ]; then exit 1; fi |
||||
echo "The database has been created" |
||||
echo "" |
||||
echo "Please log in as the $dbtype DNS administrator ($pdnsadm)" |
||||
psql -U $pdnsadm $db <<EOFEOF |
||||
CREATE TABLE domains ( |
||||
id SERIAL PRIMARY KEY, |
||||
name VARCHAR(255) NOT NULL, |
||||
master VARCHAR(20) DEFAULT NULL, |
||||
last_check INT DEFAULT NULL, |
||||
type VARCHAR(6) NOT NULL, |
||||
notified_serial INT DEFAULT NULL, |
||||
account VARCHAR(40) DEFAULT NULL |
||||
); |
||||
CREATE UNIQUE INDEX name_index ON domains(name); |
||||
|
||||
CREATE TABLE records ( |
||||
id SERIAL PRIMARY KEY, |
||||
domain_id INT DEFAULT NULL, |
||||
name VARCHAR(255) DEFAULT NULL, |
||||
type VARCHAR(6) DEFAULT NULL, |
||||
content VARCHAR(255) DEFAULT NULL, |
||||
ttl INT DEFAULT NULL, |
||||
prio INT DEFAULT NULL, |
||||
change_date INT DEFAULT NULL, |
||||
CONSTRAINT domain_exists |
||||
FOREIGN KEY(domain_id) REFERENCES domains(id) |
||||
ON DELETE CASCADE |
||||
); |
||||
|
||||
CREATE INDEX rec_name_index ON records(name); |
||||
CREATE INDEX nametype_index ON records(name,type); |
||||
CREATE INDEX domain_id ON records(domain_id); |
||||
|
||||
CREATE TABLE supermasters ( |
||||
ip VARCHAR(25) NOT NULL, |
||||
nameserver VARCHAR(255) NOT NULL, |
||||
account VARCHAR(40) DEFAULT NULL |
||||
); |
||||
|
||||
GRANT SELECT ON supermasters TO $pdns; |
||||
GRANT ALL ON domains TO $pdns; |
||||
GRANT ALL ON domains_id_seq TO $pdns; |
||||
GRANT ALL ON records TO $pdns; |
||||
GRANT ALL ON records_id_seq TO $pdns; |
||||
EOFEOF |
||||
if [ $? -gt 0 ]; then exit 1; fi |
||||
echo "The database has been populated" |
||||
echo "" |
||||
;; |
||||
esac |
||||
Loading…
Reference in new issue