Handle hostnames with upper-case letters
[webmin.git] / wuftpd / save_message.cgi
1 #!/usr/local/bin/perl
2 # save_message.cgi
3 # Save messages, banners and other options
4
5 require './wuftpd-lib.pl';
6 &error_setup($text{'message_err'});
7 &ReadParse();
8
9 &lock_file($config{'ftpaccess'});
10 $conf = &get_ftpaccess();
11 foreach $c (&find_value('class', $conf)) {
12         $hasclass{$c->[0]}++;
13         }
14
15 # Save messages 
16 for($i=0; defined($path = $in{"mpath_$i"}); $i++) {
17         next if (!$path);
18         $path =~ /^\S+$/ || &error(&text('message_epath', $path));
19         if ($in{"mwhen_$i"} == 0) {
20                 $when = "login";
21                 }
22         elsif ($in{"mwhen_$i"} == 1) {
23                 $when = "cwd=*";
24                 }
25         else {
26                 $in{"mcwd_$i"} =~ /^\S+$/ ||
27                         &error(&text('message_ecwd', $path));
28                 $when = "cwd=".$in{"mcwd_$i"};
29                 }
30         @classes = split(/\s+/, $in{"mclasses_$i"});
31         foreach $c (@classes) {
32                 $hasclass{$c} || &error(&text('message_eclass', $c));
33                 }
34         push(@message, { 'name' => 'message',
35                          'values' => [ $path, $when, @classes ] } );
36         }
37 &save_directive($conf, 'message', \@message);
38
39 # Save readme's
40 for($i=0; defined($path = $in{"rpath_$i"}); $i++) {
41         next if (!$path);
42         $path =~ /^\S+$/ || &error(&text('message_epath', $path));
43         if ($in{"rwhen_$i"} == 0) {
44                 $when = "login";
45                 }
46         elsif ($in{"rwhen_$i"} == 1) {
47                 $when = "cwd=*";
48                 }
49         else {
50                 $in{"rcwd_$i"} =~ /^\S+$/ ||
51                         &error(&text('message_ecwd', $path));
52                 $when = "cwd=".$in{"rcwd_$i"};
53                 }
54         @classes = split(/\s+/, $in{"rclasses_$i"});
55         foreach $c (@classes) {
56                 $hasclass{$c} || &error(&text('message_eclass', $c));
57                 }
58         push(@readme, { 'name' => 'readme',
59                          'values' => [ $path, $when, @classes ] } );
60         }
61 &save_directive($conf, 'readme', \@readme);
62
63 # save other options
64 &save_directive($conf, 'greeting', [ { 'name' => 'greeting',
65                                        'values' => [ $in{'greeting'} ] } ]);
66 if ($in{'banner_def'}) {
67         &save_directive($conf, 'banner', [ ]);
68         }
69 else {
70         -r $in{'banner'} || &error(&text('message_ebanner', $in{'banner'}));
71         &save_directive($conf, 'banner', [ { 'name' => 'banner',
72                                              'values' => [ $in{'banner'} ] } ]);
73         }
74 if ($in{'hostname_def'}) {
75         &save_directive($conf, 'hostname', [ ]);
76         }
77 else {
78         $in{'hostname'} =~ /^\S+$/ || &error($text{'message_ehostname'});
79         &save_directive($conf, 'hostname',
80                         [ { 'name' => 'hostname',
81                             'values' => [ $in{'hostname'} ] } ]);
82         }
83 if ($in{'email_def'}) {
84         &save_directive($conf, 'email', [ ]);
85         }
86 else {
87         $in{'email'} =~ /^\S+$/ || &error($text{'message_eemail'});
88         &save_directive($conf, 'email', [ { 'name' => 'email',
89                                             'values' => [ $in{'email'} ] } ]);
90         }
91
92
93 &flush_file_lines();
94 &unlock_file($config{'ftpaccess'});
95 &webmin_log("message", undef, undef, \%in);
96 &redirect("");
97