-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodify-zone
executable file
·86 lines (72 loc) · 2.98 KB
/
modify-zone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/local/bin/perl -w
#
# $Id$
#
# script to modify zones in the database
#
use strict;
use HOSTDB;
use Getopt::Long;
use vars qw ($opt_delegated $opt_default_ttl $opt_ttl $opt_serial $opt_mname $opt_rname $opt_refresh $opt_retry $opt_expiry $opt_minimum $opt_owner $opt_force $opt_debug);
my %o = ();
my $res = GetOptions (
"delegated=s",
"default_ttl=s",
"ttl=s",
"serial=s",
"mname=s",
"rname=s",
"refresh=s",
"retry=s",
"expiry=s",
"minimum=s",
"owner=s",
"force"
);
#die ("$0: Parsing options failed\n") if ($res);
die ("$0: --force does not do anything (yet)\n") if (defined ($opt_force));
my $debug = defined ($opt_debug);
my $zonename = shift;
sub usage
{
my $msg = shift;
# interpolation
die(<<EOT);
${msg}Syntax: $0 [options] zonename
options:
--debug debug
--force don't perform certain sanity checks (DUP checking)
object modifiers :
--delegated Y or N
--owner Comment about owner
--default_ttl what to use for \$TTL - BIND parseable please
--ttl SOA TTL - BIND parseable please
--serial SOA serial - BIND parseable please
--mname SOA mname - BIND parseable please
--rname SOA rname - BIND parseable please
--refresh SOA refresh - BIND parseable please
--retry SOA retry - BIND parseable please
--expiry SOA expiry - BIND parseable please
--minimum SOA minimum - BIND parseable please
EOT
}
my $hostdb = HOSTDB::DB->new (inifile => HOSTDB::get_inifile (),
debug => $debug
);
usage ("") if (! $zonename);
usage ("Invalid zonename '$zonename'\n\n") unless ($hostdb->is_valid_domainname ($zonename));
my $zone = $hostdb->findzonebyname ($zonename);
die ("$0: No such zone (or fetch error): '$zonename' ($hostdb->{error})\n") unless (defined ($zone));
$zone->owner ($opt_owner) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_owner));
$zone->delegated ($opt_delegated) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_delegated));
$zone->default_ttl ($opt_default_ttl) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_default_ttl));
$zone->ttl ($opt_ttl) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_ttl));
$zone->serial ($opt_serial) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_serial));
$zone->mname ($opt_mname) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_mname));
$zone->rname ($opt_rname) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_rname));
$zone->refresh ($opt_refresh) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_refresh));
$zone->retry ($opt_retry) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_retry));
$zone->expiry ($opt_expiry) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_expiry));
$zone->minimum ($opt_minimum) or die ("$0: Invalid value - $zone->{error}\n") if (defined ($opt_minimum));
$zone->commit () or die ("$0: Could not commit zone object - $zone->{error}\n");
exit (0);