Handle hostnames with upper-case letters
[webmin.git] / acl / save_pass.cgi
1 #!/usr/local/bin/perl
2 # Save password quality and change restrictions
3
4 require './acl-lib.pl';
5 $access{'pass'} || &error($text{'pass_ecannot'});
6 &get_miniserv_config(\%miniserv);
7 &ReadParse();
8 &error_setup($text{'pass_err'});
9
10 # Validate and store inputs
11 if ($in{'minsize_def'}) {
12         delete($miniserv{'pass_minsize'});
13         }
14 else {
15         $in{'minsize'} =~ /^\d+$/ || &error($text{'pass_eminsize'});
16         $miniserv{'pass_minsize'} = $in{'minsize'};
17         }
18 $miniserv{'pass_regexps'} = join("\t", split(/\r?\n/, $in{'regexps'}));
19 $miniserv{'pass_regdesc'} = $in{'regdesc'};
20 if ($in{'maxdays_def'}) {
21         delete($miniserv{'pass_maxdays'});
22         }
23 else {
24         $in{'maxdays'} =~ /^\d+$/ || &error($text{'pass_emaxdays'});
25         $miniserv{'pass_maxdays'} = $in{'maxdays'};
26         }
27 if ($in{'lockdays_def'}) {
28         delete($miniserv{'pass_lockdays'});
29         }
30 else {
31         $in{'lockdays'} =~ /^\d+$/ || &error($text{'pass_elockdays'});
32         $miniserv{'pass_lockdays'} = $in{'lockdays'};
33         }
34 $miniserv{'pass_nouser'} = $in{'nouser'};
35 $miniserv{'pass_nodict'} = $in{'nodict'};
36 if ($in{'oldblock_def'}) {
37         delete($miniserv{'pass_oldblock'});
38         }
39 else {
40         $in{'oldblock'} =~ /^\d+$/ || &error($text{'pass_eoldblock'});
41         $miniserv{'pass_oldblock'} = $in{'oldblock'};
42         }
43 &lock_file($ENV{'MINISERV_CONFIG'});
44 &put_miniserv_config(\%miniserv);
45 &unlock_file($ENV{'MINISERV_CONFIG'});
46
47 # For any users with no last change time set, set it now
48 $fixed = 0;
49 foreach $user (&list_users()) {
50         if ($miniserv{'pass_maxdays'} && !$user->{'lastchange'}) {
51                 $user->{'lastchange'} = time();
52                 &modify_user($user->{'name'}, $user);
53                 $fixed++;
54                 }
55         }
56 if ($fixed) {
57         &reload_miniserv();
58         }
59
60 &webmin_log("pass");
61 &redirect("");
62