#!/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 => [], });