Handle hostnames with upper-case letters
[webmin.git] / bind8 / save_servers.cgi
1 #!/usr/local/bin/perl
2 # save_servers.cgi
3 # Update all the server directives
4
5 require './bind8-lib.pl';
6 $access{'defaults'} || &error($text{'servers_ecannot'});
7 &error_setup($text{'servers_err'});
8 &ReadParse();
9
10 &lock_file(&make_chroot($config{'named_conf'}));
11 $conf = &get_config();
12 @old = &find("server", $conf);
13 for($i=0; defined($ip = $in{"ip_$i"}); $i++) {
14         next if (!$ip);
15         &check_ipaddress($ip) || &error(&text('servers_eip', $ip));
16         $in{"trans_$i"} =~ /^\d*$/ ||
17                 &error(&text('servers_etrans', $in{"trans_$i"}));
18         local $s = { 'name' => 'server',
19                      'type' => 1 };
20         $s->{'members'} = $old[$i] ? $old[$i]->{'members'} : [ ];
21         $s->{'values'} = [ $ip ];
22         &save_directive($s, 'bogus',
23                 $in{"bogus_$i"} ? [ { 'name' => 'bogus',
24                                       'values' => [ 'yes' ] } ] : [ ], 1, 1);
25         &save_directive($s, 'transfer-format',
26                 $in{"format_$i"} ? [ { 'name' => 'transfer-format',
27                                        'values' => [ $in{"format_$i"} ] } ]
28                                  : [ ], 1, 1);
29         &save_directive($s, 'transfers',
30                 $in{"trans_$i"} ne '' ? [ { 'name' => 'transfers',
31                                             'values' => [ $in{"trans_$i"} ] } ]
32                                       : [ ], 1, 1);
33
34         @keys = split(/\0/, $in{"keys_$i"});
35         if (@keys) {
36                 local @mems = map { { 'name' => $_ } } @keys;
37                 &save_directive($s, 'keys',
38                         [ { 'name' => 'keys',
39                             'type' => 1,
40                             'members' => \@mems } ], 1, 1);
41                 }
42         else {
43                 &save_directive($s, 'keys', [ ], 1, 1);
44                 }
45                 
46         push(@servers, $s);
47         }
48 &save_directive(&get_config_parent(), 'server', \@servers, 0);
49 &flush_file_lines();
50 &unlock_file(&make_chroot($config{'named_conf'}));
51 &webmin_log("servers", undef, undef, \%in);
52 &redirect("");
53