Handle hostnames with upper-case letters
[webmin.git] / bind8 / edit_zonekey.cgi
1 #!/usr/local/bin/perl
2 # Display the signing key for a zone, or offer to set one up
3
4 require './bind8-lib.pl';
5 &ReadParse();
6 $zone = &get_zone_name($in{'index'}, $in{'view'});
7 $dom = $zone->{'name'};
8 &can_edit_zone($zone) ||
9         &error($text{'master_ecannot'});
10 $desc = &ip6int_to_net(&arpa_to_ip($dom));
11
12 &ui_print_header($desc, $text{'zonekey_title'}, "",
13                  undef, undef, undef, undef, &restart_links($zone));
14
15 # Check if the zone already has a key, from a DNSKEY record
16 $keyrec = &get_dnskey_record($zone);
17 if ($keyrec) {
18         # Tell the user we already have it
19         $keyline = join(" ", $keyrec->{'name'}, $keyrec->{'class'},
20                              $keyrec->{'type'}, @{$keyrec->{'values'}});
21         print &text('zonekey_already'),"\n";
22         print $text{'zonekey_webmin'},"\n";
23         print "<p>\n";
24
25         @keys = &get_dnssec_key($zone);
26         foreach $key (@keys) {
27                 # Collapsible section for key details
28                 $kt = $key->{'ksk'} ? 'ksk' : 'zone';
29                 print &ui_hidden_start($text{'zonekey_expand'.$kt},
30                                        $kt, 0, "edit_zonekey.cgi?$in");
31                 print $text{'zonekey_public'},"<br>\n";
32                 print &ui_textarea("keyline", $keyline, 2, 80, "off", 0,
33                                    "readonly style='width:90%'"),"<p>\n";
34
35                 print $text{'zonekey_private'},"<br>\n";
36                 print &ui_textarea(
37                         "private", $key->{'privatetext'}, 8, 80,
38                         "off", 0, "readonly style='width:90%'");
39                 print &ui_hidden_end();
40                 }
41         if (!@keys) {
42                 print &text('zonekey_noprivate'),"<p>\n";
43                 }
44
45         # Offer to disable
46         print &ui_hr();
47         print &ui_buttons_start();
48         print &ui_buttons_row("disable_zonekey.cgi", $text{'zonekey_disable'},
49                               $text{'zonekey_disabledesc'},
50                               &ui_hidden("view", $in{'view'}).
51                               &ui_hidden("index", $in{'index'}));
52
53         # Offer to sign now
54         print &ui_buttons_row("sign_zone.cgi", $text{'zonekey_sign'},
55                               $text{'zonekey_signdesc'},
56                               &ui_hidden("view", $in{'view'}).
57                               &ui_hidden("index", $in{'index'}));
58
59         # Offer to re-generate now, for zones with a KSK
60         if (@keys == 2) {
61                 print &ui_buttons_row("resign_zone.cgi",
62                                       $text{'zonekey_resign'},
63                                       $text{'zonekey_resigndesc'},
64                                       &ui_hidden("view", $in{'view'}).
65                                       &ui_hidden("index", $in{'index'}));
66                 }
67
68         print &ui_buttons_end();
69         }
70 else {
71         # Offer to setup
72         print $text{'zonekey_desc'},"<p>\n";
73
74         print &ui_form_start("enable_zonekey.cgi", "post");
75         print &ui_hidden("index", $in{'index'});
76         print &ui_hidden("view", $in{'view'});
77         print &ui_table_start($text{'zonekey_header'}, undef, 2);
78
79         # Key algorithm
80         print &ui_table_row($text{'zonekey_alg'},
81                 &ui_select("alg", "RSASHA1",
82                            [ &list_dnssec_algorithms() ]));
83
84         # Key size
85         print &ui_table_row($text{'zonekey_size'},
86                 &ui_radio("size_def", 1, [ [ 1, $text{'zonekey_ave'}."<br>" ],
87                                            [ 2, $text{'zonekey_strong'}."<br>"],
88                                            [ 0, $text{'zonekey_other'} ] ]).
89                 " ".&ui_textbox("size", undef, 6));
90
91         # Number of keys
92         print &ui_table_row($text{'zonedef_single'},
93                 &ui_radio("single", 0, [ [ 0, $text{'zonedef_two'} ],
94                                          [ 1, $text{'zonedef_one'} ] ]));
95         
96         print &ui_table_end();
97         print &ui_form_end([ [ undef, $text{'zonekey_enable'} ] ]);
98         }
99
100 &ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}",
101         $text{'master_return'});