Handle hostnames with upper-case letters
[webmin.git] / fetchmail / save_global.cgi
1 #!/usr/local/bin/perl
2 # save_global.cgi
3 # Save global options
4
5 require './fetchmail-lib.pl';
6 &ReadParse();
7 &error_setup($text{'global_err'});
8
9 if ($config{'config_file'}) {
10         $file = $config{'config_file'};
11         }
12 else {
13         &can_edit_user($in{'user'}) || &error($text{'poll_ecannot'});
14         @uinfo = getpwnam($in{'user'});
15         $file = "$uinfo[7]/.fetchmailrc";
16         }
17
18 &lock_file($file);
19 @conf = &parse_config_file($file);
20 foreach $c (@conf) {
21         $poll = $c if ($c->{'defaults'});
22         }
23 $found++ if ($poll);
24
25 # Validate inputs
26 $in{'port_def'} || $in{'port'} =~ /^\d+$/ ||
27         &error($text{'poll_eport'});
28 if (!$in{'interface_def'}) {
29         $in{'interface'} =~ /^\S+$/ || &error($text{'poll_einterface'});
30         &check_ipaddress($in{'interface_net'}) || &error($text{'poll_enet'});
31         &check_ipaddress($in{'interface_mask'}) || !$in{'interface_mask'} ||
32                 &error($text{'poll_emask'});
33         }
34
35 # Create the default structure
36 $poll->{'defaults'} = 1;
37 $poll->{'proto'} = $in{'proto'};
38 $poll->{'port'} = $in{'port_def'} ? undef : $in{'port'};
39 if ($in{'interface_def'}) {
40         delete($poll->{'interface'});
41         }
42 else {
43         local @interface = ( $in{'interface'}, $in{'interface_net'} );
44         push(@interface, $in{'interface_mask'}) if ($in{'interface_mask'});
45         $poll->{'interface'} = join("/", @interface);
46         }
47
48 if ($found) {
49         &modify_poll($poll, $file);
50         }
51 else {
52         &create_poll($poll, $file);
53         if ($in{'user'} && $< == 0) {
54                 &system_logged("chown $in{'user'} $file");
55                 }
56         &system_logged("chmod 700 $file");
57         }
58 &unlock_file($file);
59 &webmin_log("global", undef, $config{'config_file'} ? $file : $in{'user'},
60             \%in);
61 &redirect("");
62