aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/powerdns.xml208
1 files changed, 181 insertions, 27 deletions
diff --git a/packages/powerdns.xml b/packages/powerdns.xml
index e236e35d..70643f7b 100644
--- a/packages/powerdns.xml
+++ b/packages/powerdns.xml
@@ -3,9 +3,6 @@
<name>nmap</name>
<donotsave>true</donotsave>
<preoutput>yes</preoutput>
- <additional_files_needed>
- <item>http://www.pfsense.com/packages/config/powerdns.schema</item>
- </additional_files_needed>
<!-- Menu is where this packages menu will appear -->
<menu>
<name>PowerDNS</name>
@@ -16,28 +13,185 @@
<!-- Do not save invokes a simple input menu and will not update
the configuration database. -->
<fields>
- </fields>
- <custom_php_deinstall_command>
- system("rm -rf /usr/local/pgsql");
- system("/usr/sbin/pw userdel pgsql");
- system("/usr/bin/killall -9 postgres");
- echo "&lt;p&gt;";
- echo "Reboot required... One moment...";
- echo "&lt;p&gt;";
- system("/sbin/shutdown -r now");
- </custom_php_deinstall_command>
- <custom_php_install_command>
- echo "&lt;pre&gt;";
- echo "Creating DB...";
- system("/usr/bin/su -l pgsql -c initdb");
- echo "Starting DB...";
- system("/usr/local/etc/rc.d/010.pgsql.sh start");
- system("/usr/bin/su -l pgsql -c \"dropdb powerdns\" ");
- system("/usr/bin/su -l pgsql -c \"createdb powerdns\" ");
- echo "Creating DB Schema...";
- system("cat /usr/local/pkg/powerdns.schema | /usr/bin/su -l pgsql -c \"psql powerdns\" ");
- system("cat /usr/local/www/powerdnsadmin-0.3/docs/postgresql.sql | /usr/bin/su -l pgsql -c \"psql powerdns\" ");
- </custom_php_install_command>
- <custom_add_php_command>
- </custom_add_php_command>
+ <field>
+ <fielddescr>pgsql Password</fielddescr>
+ <fieldname>password</fieldname>
+ <description>Enter the pgsql users password.</description>
+ <type>password</type>
+ </field>
+ <field>
+ <fielddescr>pgsql Password AGAIN</fielddescr>
+ <fieldname>passwordagain</fieldname>
+ <type>password</type>
+ </field>
+ <field>
+ <fielddescr>IP Address</fielddescr>
+ <fieldname>ipaddress</fieldname>
+ <type>input</type>
+ <value>0.0.0.0</value>
+ <description>(0.0.0.0 to bind to all)</description>
+ </field>
+ <field>
+ <fielddescr>Cache Time to Live</fielddescr>
+ <fieldname>cachettl</fieldname>
+ <type>input</type>
+ <value>20</value>
+ <description>Recommended value: 20</description>
+ </field>
+ <field>
+ <fielddescr>Master</fielddescr>
+ <fieldname>master</fieldname>
+ <type>select</type>
+ <options>
+ <option><name>Yes</name><value>yes</value></option>
+ <option><name>No</name><value>no</value></option>
+ </options>
+ </field>
+ <field>
+ <fielddescr>Slave</fielddescr>
+ <fieldname>slave</fieldname>
+ <type>select</type>
+ <options>
+ <option><name>No</name><value>no</value></option>
+ <option><name>Yes</name><value>yes</value></option>
+ </options>
+ </field>
+ </fields>
+ <custom_php_deinstall_command>
+ system("/usr/local/bin/pg_ctl -m immediate");
+ system("rm -rf /usr/local/pgsql");
+ system("/usr/sbin/pw userdel pgsql");
+ system("/usr/bin/killall -9 postgres");
+ echo "&lt;p&gt;";
+ echo "Reboot required... One moment...";
+ echo "&lt;p&gt;";
+ system("/sbin/shutdown -r now");
+ </custom_php_deinstall_command>
+ <custom_php_install_command>
+ echo "&lt;pre&gt;";
+ echo "Creating DB...";
+ system("/usr/bin/su -l pgsql -c initdb");
+ system("/usr/local/etc/rc.d/010.pgsql.sh start");
+ system("/usr/bin/su -l pgsql -c \"dropdb powerdns\" ");
+ system("/usr/bin/su -l pgsql -c \"createdb powerdns\" ");
+ $fout = fopen("/usr/local/pkg/powerdns.schema","w");
+ /* DATABASE SCHEMA */
+ fwrite($fout, "create table domains (\n");
+ fwrite($fout, "id SERIAL PRIMARY KEY,\n");
+ fwrite($fout, "name VARCHAR(255) NOT NULL,\n");
+ fwrite($fout, "master VARCHAR(20) DEFAULT NULL,\n");
+ fwrite($fout, "last_check INT DEFAULT NULL,\n");
+ fwrite($fout, "type VARCHAR(6) NOT NULL,\n");
+ fwrite($fout, "notified_serial INT DEFAULT NULL,\n");
+ fwrite($fout, "account VARCHAR(40) DEFAULT NULL\n");
+ fwrite($fout, ");\n");
+ fwrite($fout, "CREATE UNIQUE INDEX name_index ON domains(name);\n");
+ fwrite($fout, "CREATE TABLE records (\n");
+ fwrite($fout, " id SERIAL PRIMARY KEY,\n");
+ fwrite($fout, " domain_id INT DEFAULT NULL,\n");
+ fwrite($fout, " name VARCHAR(255) DEFAULT NULL,\n");
+ fwrite($fout, " type VARCHAR(6) DEFAULT NULL,\n");
+ fwrite($fout, " content VARCHAR(255) DEFAULT NULL,\n");
+ fwrite($fout, " ttl INT DEFAULT NULL,\n");
+ fwrite($fout, " prio INT DEFAULT NULL,\n");
+ fwrite($fout, " change_date INT DEFAULT NULL,\n");
+ fwrite($fout, " CONSTRAINT domain_exists\n");
+ fwrite($fout, " FOREIGN KEY(domain_id) REFERENCES domains(id)\n");
+ fwrite($fout, " ON DELETE CASCADE\n");
+ fwrite($fout, ");\n");
+ fwrite($fout, "CREATE INDEX rec_name_index ON records(name);\n");
+ fwrite($fout, "CREATE INDEX nametype_index ON records(name,type);\n");
+ fwrite($fout, "CREATE INDEX domain_id ON records(domain_id);\n");
+ fwrite($fout, "create table supermasters (\n");
+ fwrite($fout, " ip VARCHAR(25) NOT NULL,\n");
+ fwrite($fout, " nameserver VARCHAR(255) NOT NULL,\n");
+ fwrite($fout, " account VARCHAR(40) DEFAULT NULL\n");
+ fwrite($fout, ");\n");
+ fwrite($fout, "GRANT SELECT ON supermasters TO pgsql;\n");
+ fwrite($fout, "GRANT ALL ON domains TO pgsql;\n");
+ fwrite($fout, "GRANT ALL ON domains_id_seq TO pgsql;\n");
+ fwrite($fout, "GRANT ALL ON records TO pgsql;\n");
+ fwrite($fout, "GRANT ALL ON records_id_seq TO pgsql;\n");
+ fclose($fout);
+ system("cat /usr/local/pkg/powerdns.schema | /usr/bin/su -l pgsql -c \"psql powerdns\" ");
+ echo "Installation completed!";
+ </custom_php_install_command>
+ <custom_add_php_command>
+ if($password == $passwordagain) {
+ $fd = popen("/usr/sbin/pw usermod -n pgsql -H 0", "w");
+ $salt = md5(time());
+ $crypted_pw = crypt($_POST['password'],$salt);
+ fwrite($fd, $crypted_pw);
+ pclose($fd);
+ $fout = fopen("/usr/local/etc/pdns.conf","w");
+ fwrite($fout, "launch=gpgsql\n");
+ fwrite($fout, "gpgsql-host=127.0.0.1\n");
+ fwrite($fout, "gpgsql-dbname=powerdns\n");
+ fwrite($fout, "fwrite($fout, "gpgsql-user=pgsql\n");
+ fwrite($fout, "gpgsql-password=" . $_POST['password'] . "\n");
+ fwrite($fout, "chroot=/var/empty\n");
+ fwrite($fout, "disable-tcp=no\n");
+ fwrite($fout, "guardian=yes\n");
+ fwrite($fout, "webserver=yes\n");
+ fwrite($fout, "webserver-address=127.0.0.1\n");
+ fwrite($fout, "webserver-port=8081\n");
+ fwrite($fout, "local-address=" . $ipaddress . "\n";");
+ fwrite($fout, "master=" . $POST['master'] . "\n");
+ fwrite($fout, "slave=" . $POST['slave'] . "\n");
+ fwrite($fout, "cache-ttl=" . $POST['cachettl'] . "\n");
+ /* XXX: TODO */
+ fwrite($fout, "# allow-axfr-ips=\n");
+ fwrite($fout, "# allow-recursion=\n");
+ fwrite($fout, "# config-dir=/etc\n");
+ fwrite($fout, "# config-name=\n");
+ fwrite($fout, "# control-console=no\n");
+ fwrite($fout, "# default-soa-name=ns.example.com\n");
+ fwrite($fout, "# disable-axfr=no\n");
+ fwrite($fout, "# distributor-threads=3\n");
+ fwrite($fout, "# fancy-records=no\n");
+ fwrite($fout, "# launch=\n");
+ fwrite($fout, "# lazy-recursion=yes\n");
+ fwrite($fout, "# load-modules=\n");
+ fwrite($fout, "# local-ipv6=\n");
+ fwrite($fout, "# local-port=53\n");
+ fwrite($fout, "# log-dns-details=\n");
+ fwrite($fout, "# log-failed-updates=\n");
+ fwrite($fout, "# logfile=pdns.log\n");
+ fwrite($fout, "# logging-facility=\n");
+ fwrite($fout, "# loglevel=4\n");
+ fwrite($fout, "# max-queue-length=5000\n");
+ fwrite($fout, "# max-tcp-connections=10\n");
+ fwrite($fout, "# module-dir=/usr/local/bin/../lib\n");
+ fwrite($fout, "# negquery-cache-ttl=60\n");
+ fwrite($fout, "# only-soa=org\n");
+ fwrite($fout, "# out-of-zone-additional-processing=no\n");
+ fwrite($fout, "# query-cache-ttl=20\n");
+ fwrite($fout, "# query-logging=no\n");
+ fwrite($fout, "# queue-limit=1500\n");
+ fwrite($fout, "# receiver-threads=1\n");
+ fwrite($fout, "# recursive-cache-ttl=10\n");
+ fwrite($fout, "# recursor=no\n");
+ fwrite($fout, "# setgid=\n");
+ fwrite($fout, "# setuid=\n");
+ fwrite($fout, "# skip-cname=no\n");
+ fwrite($fout, "# slave=no\n");
+ fwrite($fout, "# slave-cycle-interval=60\n");
+ fwrite($fout, "# soa-minimum-ttl=3600\n");
+ fwrite($fout, "# soa-serial-offset=0\n");
+ fwrite($fout, "# socket-dir=/var/run\n");
+ fwrite($fout, "# strict-rfc-axfrs=no\n");
+ fwrite($fout, "# urlredirector=127.0.0.1\n");
+ fwrite($fout, "# use-logfile=no\n");
+ fwrite($fout, "# webserver-password=\n");
+ fwrite($fout, "# webserver-print-arguments=no\n");
+ fwrite($fout, "# wildcard-url=no\n");
+ fwrite($fout, "# wildcards=\n");
+ fclose($fout);
+ system("/usr/local/bin/pg_ctl -m smart");
+ system("/usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start");
+ } else {
+ echo "Passwords do not much!
+ exit;
+ }
+ </custom_add_php_command>
</packagegui> \ No newline at end of file