Handle hostnames with upper-case letters
[webmin.git] / net / save_range.cgi
1 #!/usr/local/bin/perl
2 # save_range.cgi
3 # Create, save or delete a boot-time address range
4
5 require './net-lib.pl';
6 $access{'ifcs'} == 2 || $access{'ifcs'} == 3 || &error($text{'ifcs_ecannot'});
7 &ReadParse();
8 @boot = &boot_interfaces();
9
10 sub check_restricted_interfaces() {
11        if ($access{'ifcs'} == 3) {
12                map { $can_interfaces{$_}++ } split(/\s+/, $access{'interfaces'});
13                if (! $can_interfaces{$b->{'name'}}) {
14                        &error($text{'ifcs_ecannot_this'});
15                }
16        }
17 }
18
19 if ($in{'delete'} || $in{'unapply'}) {
20         # Delete interface
21         &error_setup($text{'range_err1'});
22         $b = $boot[$in{'idx'}];
23         &check_restricted_interfaces();
24
25         if ($in{'unapply'}) {
26                 # Shut down this range
27                 &error_setup($text{'range_err4'});
28                 $err = &unapply_interface($act);
29                 $err && &error("<pre>$err</pre>");
30                 }
31         &delete_interface($b);
32         &webmin_log("delete", "range", $b->{'fullname'}, $b);
33         }
34 else {
35         # Save or create interface
36         &error_setup($text{'range_err2'});
37         if (!$in{'new'}) {
38                 $b = $boot[$in{'idx'}];
39                 }
40         else {
41                 $b = { };
42                 }
43         &parse_range($b, \%in);
44         &check_restricted_interfaces();
45         &save_interface($b);
46
47         if ($in{'activate'}) {
48                 # Make this interface active (if possible)
49                 &error_setup($text{'range_err3'});
50                 $err = &apply_interface($b);
51                 $err && &error("<pre>$err</pre>");
52                 }
53         &webmin_log($in{'new'} ? 'create' : 'modify',
54                     "range", $b->{'fullname'}, $b);
55         }
56 &redirect("list_ifcs.cgi?mode=boot");
57