Handle hostnames with upper-case letters
[webmin.git] / heartbeat / save_node.cgi
1 #!/usr/local/bin/perl
2 # save_node.cgi
3 # Save a node in the resources file
4
5 require './heartbeat-lib.pl';
6 &ReadParse();
7 &error_setup($text{'node_err'});
8 if (!$in{'new'}) {
9         @res = &list_resources();
10         $res = $res[$in{'idx'}];
11         }
12
13 if ($in{'delete'}) {
14         # Just delete this resource
15         &delete_resource($res);
16         &redirect("edit_res.cgi");
17         exit;
18         }
19
20 # Validate and store inputs
21 $in{'node'} =~ /^(\S+)$/ || &error($text{'node_enode'});
22 for($i=0; defined($in{"ip_$i"}); $i++) {
23         next if (!$in{"ip_$i"});
24         &check_ipaddress($in{"ip_$i"}) ||
25                 &error(&text('node_eip', $in{"ip_$i"}));
26         local @ip = ( $in{"ip_$i"} );
27         if (!$in{"cidr_def_$i"}) {
28                 $in{"cidr_$i"} =~ /^(\d+)$/ ||
29                         &error(&text('node_ecidr', $in{"cidr_$i"}));
30                 push(@ip, $in{"cidr_$i"});
31                 if (!$in{"broad_def_$i"}) {
32                         &check_ipaddress($in{"broad_$i"}) ||
33                                 &error(&text('node_ebroad', $in{"broad_$i"}));
34                         push(@ip, $in{"broad_$i"});
35                         }
36                 }
37         push(@ips, join("/", @ip));
38         }
39 for($i=0; defined($in{"serv_$i"}); $i++) {
40         next if (!$in{"serv_$i"});
41         push(@servs, join("::", $in{"serv_$i"}, split(/\s+/, $in{"args_$i"})));
42         }
43
44 # Create or update the resource
45 $res->{'node'} = $in{'node'};
46 $res->{'ips'} = \@ips;
47 $res->{'servs'} = \@servs;
48 if ($in{'new'}) {
49         &create_resource($res);
50         }
51 else {
52         &modify_resource($res);
53         }
54 &redirect("edit_res.cgi");
55