Handle hostnames with upper-case letters
[webmin.git] / custom / save_sql.cgi
1 #!/usr/local/bin/perl
2 # Save, create or delete an SQL command
3
4 require './custom-lib.pl';
5 &ReadParse();
6
7 $access{'edit'} || &error($text{'save_ecannot'});
8 if ($in{'delete'}) {
9         $cmd = &get_command($in{'id'}, $in{'idx'});
10         &delete_command($cmd);
11         &webmin_log("delete", "command", $cmd->{'id'}, $cmd);
12         &redirect("");
13         }
14 elsif ($in{'clone'}) {
15         &redirect("edit_sql.cgi?id=$in{'id'}&idx=$in{'idx'}&clone=1&new=1");
16         }
17 else {
18         &error_setup($text{'sql_err'});
19         if (!$in{'new'}) {
20                 $cmd = &get_command($in{'id'}, $in{'idx'});
21                 }
22         else {
23                 $cmd = { 'id' => time() };
24                 }
25
26         # parse and validate inputs
27         $cmd->{'desc'} = $in{'desc'};
28         $in{'order_def'} || $in{'order'} =~ /^\-?(\d+)$/ ||
29                 &error($text{'save_eorder'});
30         $cmd->{'order'} = $in{'order_def'} ? 0 : int($in{'order'});
31         $in{'html'} =~ s/\r//g;
32         $in{'html'} =~ s/\n*/\n/;
33         $cmd->{'html'} = $in{'html'};
34         $cmd->{'type'} = $in{'type'};
35         $in{'db'} =~ /^\S+$/ || &error($text{'sql_edb'});
36         $cmd->{'db'} = $in{'db'};
37         $in{'sql'} =~ /\S/ || &error($text{'sql_esql'});
38         $in{'sql'} =~ s/\r//g;
39         $cmd->{'sql'} = $in{'sql'};
40         $cmd->{'user'} = $in{'dbuser'};
41         $cmd->{'pass'} = $in{'dbpass'};
42         if ($in{'host_def'}) {
43                 delete($cmd->{'host'});
44                 }
45         else {
46                 &to_ipaddress($in{'host'}) ||
47                         &error($text{'sql_ehost'});
48                 $cmd->{'host'} = $in{'host'};
49                 }
50         &parse_params_inputs($cmd);
51         &save_command($cmd);
52         &webmin_log($in{'new'} ? "create" : "modify", "command",
53                     $cmd->{'id'}, $cmd);
54
55         if ($in{'new'} && $access{'cmds'} ne '*') {
56                 $access{'cmds'} .= " ".$cmd->{'id'};
57                 &save_module_acl(\%access);
58                 }
59         &redirect("");
60         }
61