#!/usr/bin/perl
#
# This script feeds the values from the parser script into the database.
# Usage: ./feed-pdnsdb.pl [dbpassword]
# 

use strict;

# -------------------------------------
# configuration variables
# -------------------------------------

my $dbuser="pdns";
my $dbpass;
my $dbhost="localhost";
my $dbdatabase="pdnsdb";
my $mysqlclient="mysql";

my $parsescript="/home/gem/public_html/fulhack/powerdyndns/parse-leases.pl";

my $fjortis_domain_id=1; # FIXME: do dynamic lookup of domainid.
my $fatal_domain_id=43; # FIXME: do dynamic lookup of domainid.
my $reverse_domain_id=2; # FIXME: do dynamic lookup of domainid.

my $ttl=600;

my $debug=0;

# -------------------------------------
# End of configuration
# -------------------------------------

$dbpass=<STDIN>;
chomp($dbpass);

sub createdbcmd {
	return "" if not $mysqlclient;

	my $dbcmd = $mysqlclient;

	if ($dbuser) {
		$dbcmd .= " -u " . $dbuser;
	}

	if ($dbpass) {
		$dbcmd .= " --password=$dbpass";
	}

	if ($dbhost) {
		$dbcmd .= " -h " . $dbhost;
	}

	return $dbcmd;
}

my $dbcmd = createdbcmd();

if ($parsescript) {
	open (PL, $parsescript . " |") or die("Could not execute dhcp leases parse script: $parsescript");
} else {
	open(PL, "<&STDIN") or die("Could not open STDIN for reading...");
}

if ($dbcmd) {
	open(DB, "| " . $dbcmd) or die("Could not execute database manager: $dbcmd");
} else {
	open(DB, ">&STDOUT") or die("Could not open STDOUT for writing...");
}

print DB "use $dbdatabase\n";

while (<PL>) {
	my @pieces = split();
	my $domain_id;
	if ($pieces[1] eq "PTR") {
		$domain_id=$reverse_domain_id;
		print STDERR "Using reverse zone id: $domain_id\n" if $debug;
	} else {
		if ($pieces[0] =~ /fatal.se/) {
			$domain_id = $fatal_domain_id;
		} elsif ($pieces[0] =~ /fjortis.info/) {
			$domain_id = $fjortis_domain_id;
		} else {
			print STDERR "Unknown domain '$pieces[0]', skipping!";
			next;
		}
	}
	print DB "DELETE FROM records WHERE domain_id=$domain_id AND name='$pieces[0]' AND type='$pieces[1]';\n";
	print DB "INSERT INTO records (domain_id, name, type, content, ttl) VALUES ($domain_id, \"$pieces[0]\", \"$pieces[1]\", \"$pieces[2]\", $ttl);\n";
}

close(PL);



