| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #!/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
|