Handle hostnames with upper-case letters
[webmin.git] / bind8 / conf_zonedef.cgi
1 #!/usr/local/bin/perl
2 # conf_zonedef.cgi
3 # Display defaults for master zones
4
5 require './bind8-lib.pl';
6 $access{'defaults'} || &error($text{'zonedef_ecannot'});
7 &ui_print_header(undef, $text{'zonedef_title'}, "",
8                  undef, undef, undef, undef, &restart_links());
9
10 # Start of defaults for new zones form
11 print &ui_form_start("save_zonedef.cgi", "post");
12 print &ui_table_start($text{'zonedef_msg'}, "width=100%", 4);
13 &get_zone_defaults(\%zd);
14
15 # Default refresh time
16 print &ui_table_row($text{'master_refresh'},
17         &ui_textbox("refresh", $zd{'refresh'}, 10)." ".
18         &time_unit_choice("refunit", $zd{'refunit'}));
19
20 # Default retry time
21 print &ui_table_row($text{'master_retry'},
22         &ui_textbox("retry", $zd{'retry'}, 10)." ".
23         &time_unit_choice("retunit", $zd{'retunit'}));
24
25 # Default expiry time
26 print &ui_table_row($text{'master_expiry'},
27         &ui_textbox("expiry", $zd{'expiry'}, 10)." ".
28         &time_unit_choice("expunit", $zd{'expunit'}));
29
30 # Default minimum time (what is this really?)
31 print &ui_table_row($text{'master_minimum'},
32         &ui_textbox("minimum", $zd{'minimum'}, 10)." ".
33         &time_unit_choice("minunit", $zd{'minunit'}));
34
35 # Records for new zones, as a table
36 @table = ( );
37 for($i=0; $i<2 || $config{"tmpl_".($i-1)}; $i++) {
38         @c = split(/\s+/, $config{"tmpl_$i"}, 3);
39         push(@table, [ &ui_textbox("name_$i", $c[0], 15),
40                        &ui_select("type_$i", $c[1],
41                         [ map { [ $_, $text{"type_".$_} ] }
42                             ('A', 'CNAME', 'MX', 'NS', 'TXT', 'HINFO') ]),
43                        &ui_opt_textbox("value_$i", $c[2], 15,
44                                        $text{'master_user'}),
45                      ]);
46         }
47 print &ui_table_row($text{'master_tmplrecs'},
48         &ui_columns_table([ $text{'master_name'}, $text{'master_type'},
49                             $text{'master_value'} ],
50                           undef, \@table, undef, 1), 3);
51
52 # Additional include file
53 print &ui_table_row($text{'master_include'},
54         &ui_opt_textbox("include", $config{'tmpl_include'}, 40,
55                         $text{'master_noinclude'})." ".
56         &file_chooser_button("include"), 3);
57
58 # Default email address
59 print &ui_table_row($text{'zonedef_email'},
60         &ui_textbox("email", $config{'tmpl_email'}, 40), 3);
61
62 # Default nameservers
63 print &ui_table_row($text{'zonedef_prins'},
64         &ui_opt_textbox("prins", $config{'default_prins'}, 30,
65             &text('zonedef_this', "<tt>".&get_system_hostname()."</tt>")), 3);
66
67 # Setup DNSSEC by default?
68 if (&supports_dnssec()) {
69         print &ui_table_hr();
70
71         # Enabled?
72         print &ui_table_row($text{'zonedef_dnssec'},
73                 &ui_yesno_radio("dnssec", $config{'tmpl_dnssec'}), 3);
74
75         # Default algorithm
76         print &ui_table_row($text{'zonedef_alg'},
77                 &ui_select("alg", $config{'tmpl_dnssecalg'} || "RSASHA1",
78                            [ &list_dnssec_algorithms() ]), 3);
79
80         # Default size
81         $sizedef = $config{'tmpl_dnssecsizedef'};
82         $sizedef = 1 if ($sizedef eq '');
83         print &ui_table_row($text{'zonedef_size'},
84                 &ui_radio("size_def", $sizedef,
85                         [ [ 1, $text{'zonekey_ave'}."<br>" ],
86                           [ 2, $text{'zonekey_strong'}."<br>"],
87                           [ 0, $text{'zonekey_other'} ] ]).
88                 " ".&ui_textbox("size", $config{'tmpl_dnssecsize'}, 6), 3);
89
90         # Number of keys
91         print &ui_table_row($text{'zonedef_single'},
92                 &ui_radio("single", $config{'tmpl_dnssecsingle'} ? 1 : 0,
93                           [ [ 0, $text{'zonedef_two'} ],
94                             [ 1, $text{'zonedef_one'} ] ]));
95         }
96
97 print &ui_table_end();
98
99 # Start of table for global BIND options
100 $conf = &get_config();
101 $options = &find("options", $conf);
102 $mems = $options->{'members'};
103 foreach $c (&find("check-names", $mems)) {
104         $check{$c->{'values'}->[0]} = $c->{'values'}->[1];
105         }
106 print &ui_table_start($text{'zonedef_msg2'}, "width=100%", 4);
107
108 print &addr_match_input($text{'zonedef_transfer'}, "allow-transfer", $mems);
109 print &addr_match_input($text{'zonedef_query'}, "allow-query", $mems);
110
111 print &ignore_warn_fail($text{'zonedef_cmaster'}, 'master', $check{'master'});
112 print &ignore_warn_fail($text{'zonedef_cslave'}, 'slave', $check{'slave'});
113
114 print &ignore_warn_fail($text{'zonedef_cresponse'}, 'response',
115                         $check{'response'});
116 print &choice_input($text{'zonedef_notify'}, "notify", $mems,
117                     $text{'yes'}, "yes", $text{'no'}, "no",
118                     $text{'default'}, undef);
119
120 print &ui_table_end();
121 print &ui_form_end([ [ undef, $text{'save'} ] ]);
122
123 &ui_print_footer("", $text{'index_return'});
124
125 # ignore_warn_fail(text, name, value)
126 sub ignore_warn_fail
127 {
128 return &ui_table_row($_[0],
129         &ui_radio($_[1], $_[2], [ [ 'ignore', $text{'ignore'} ],
130                                   [ 'warn', $text{'warn'} ],
131                                   [ 'fail', $text{'fail'} ],
132                                   [ '', $text{'default'} ] ]));
133 }
134