Handle hostnames with upper-case letters
[webmin.git] / net / save_ipnode.cgi
1 #!/usr/local/bin/perl
2 # save_ipnode.cgi
3 # Create, update or delete a ipnode address
4
5 require './net-lib.pl';
6 $access{'ipnodes'} == 2 || &error($text{'ipnodes_ecannot'});
7 &ReadParse();
8 &lock_file($config{'ipnodes_file'});
9 @ipnodes = &list_ipnodes();
10 if ($in{'delete'}) {
11         # deleting a ipnode
12         $ipnode = $ipnodes[$in{'idx'}];
13         &delete_ipnode($ipnode);
14         }
15 else {
16         # saving or updating a ipnode
17         $whatfailed = "Failed to save ipnode";
18         &check_ipaddress($in{'address'}) ||
19            &check_ip6address($in{'address'}) ||
20                 &error("'$in{'address'}' is not a valid IPv4 or v6 address");
21         @h = split(/\s+/, $in{'ipnodes'});
22         foreach $h (@h) {
23                 $h =~ /^[A-z0-9\-\.]+$/ ||
24                         &error("'$h' is not a valid ipnodename");
25                 }
26         @h>0 || &error("You must enter at least one ipnodename");
27         if ($in{'new'}) {
28                 # saving a ipnode
29                 $ipnode = { 'address' => $in{'address'},
30                           'ipnodes' => \@h };
31                 &create_ipnode($ipnode);
32                 }
33         else {
34                 # updating a ipnode
35                 $ipnode = $ipnodes[$in{'idx'}];
36                 $ipnode->{'address'} = $in{'address'};
37                 $ipnode->{'ipnodes'} = \@h;
38                 &modify_ipnode($ipnode);
39                 }
40         }
41 &unlock_file($config{'ipnodes_file'});
42 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
43             'ipnode', $ipnode->{'address'}, $ipnode);
44 &redirect("list_ipnodes.cgi");
45