#!/usr/bin/perl
BEGIN {
	my $x = $0; $x =~ s/\/[^\/]+$//;
	if ($x eq $0 || $x eq '') { $x = `pwd`;chomp $x; };
	require "$x/config.pl";
};

sub usage {
	print "usage: add_basic_zone host ip nsip ...\n"; exit 1;
}

my $host = shift @ARGV;
&usage if (!defined($host));

my $ip = shift @ARGV;
&usage if (!defined($ip));

my (@ns) = (@ARGV);
&usage if (scalar(@ns) < 1);

my $ldap = &get_ldap_conn;

$host =~ s/^\.//; $host =~ s/\.$//;

my @nsadd = ();
foreach my $i (@ns) {
	$i =~ s/^\.//; $i =~ s/\.$//;
	push(@nsadd, $i);
}
dc_add_prefix($ldap, $host);

if ($ip =~ /[^\d\.]/) {
	# not a valid host... make it a cNAME
	set_record($ldap, $host, [
		dc => dc_domain($host),
		objectClass => [ qw(dnsDomain dcObject) ],
		cNAMERecord => "$ip.",
		mXRecord => "10 mail.$host.",
		nsRecord => "ns.$host.",

	], { 	aRecord => [],
		mXRecord => "10 mail.$host.",
		nsRecord => "ns.$host.",
		cNAMERecord => "$ip.",
		description => [],
	});
} else {
	set_record($ldap, $host, [
		dc => dc_domain($host),
		objectClass => [ qw(dnsDomain dcObject) ],
		aRecord => $ip,
		mXRecord => "10 mail.$host.",
		nsRecord => "ns.$host.",

	], { 	aRecord => $ip,
		mXRecord => "10 mail.$host.",
		nsRecord => "ns.$host.",
		cNAMERecord => [],
		description => [],
	});
}

foreach $i (qw(www ftp mail)) {
	set_record($ldap, "$i.$host", [
		dc => $i,
		objectClass => [ qw(dnsDomain dcObject) ],
		mXRecord => "10 mail.$host.",
		nsRecord => "ns.$host.",
		cNAMERecord => "$host.",

	], { 	aRecord => [],
		mXRecord => "10 mail.$host.",
		nsRecord => "ns.$host.",
		cNAMERecord => "$host.",
		description => [],
	});
}
$ldap->add(&dn_domain("ns.$host"),
attr => [
	dc => 'ns',
	objectClass => [ qw(dnsDomain dcObject) ],
	mXRecord => "10 mail.$host.",
	nsRecord => "ns.$host.",
	aRecord => \@nsadd,
]);


set_record($ldap, "ns.$host", [
	dc => 'ns',
	objectClass => [ qw(dnsDomain dcObject) ],
	mXRecord => "10 mail.$host.",
	nsRecord => "ns.$host.",
	aRecord => \@nsadd,

], { 	aRecord => \@nsadd,
	mXRecord => "10 mail.$host.",
	nsRecord => "ns.$host.",
	cNAMERecord => [],
	description => [],
});
