3 # Enable or disable session authentication
5 require './webmin-lib.pl';
7 &error_setup($text{'session_err'});
9 &lock_file($ENV{'MINISERV_CONFIG'});
10 &get_miniserv_config(\%miniserv);
11 $miniserv{'passdelay'} = $in{'passdelay'};
14 if ($in{'blockhost_on'}) {
15 $in{'blockhost_time'} =~ /^\d+$/ && $in{'blockhost_time'} > 0 ||
16 &error($text{'session_eblockhost_time'});
17 $in{'blockhost_failures'} =~ /^\d+$/ && $in{'blockhost_failures'} > 0 ||
18 &error($text{'session_eblockhost_failures'});
19 $miniserv{'blockhost_time'} = $in{'blockhost_time'};
20 $miniserv{'blockhost_failures'} = $in{'blockhost_failures'};
23 $miniserv{'blockhost_time'} = $miniserv{'blockhost_failures'} = undef;
27 if ($in{'blockuser_on'}) {
28 $in{'blockuser_time'} =~ /^\d+$/ && $in{'blockuser_time'} > 0 ||
29 &error($text{'session_eblockuser_time'});
30 $in{'blockuser_failures'} =~ /^\d+$/ && $in{'blockuser_failures'} > 0 ||
31 &error($text{'session_eblockuser_failures'});
32 $miniserv{'blockuser_time'} = $in{'blockuser_time'};
33 $miniserv{'blockuser_failures'} = $in{'blockuser_failures'};
36 $miniserv{'blockuser_time'} = $miniserv{'blockuser_failures'} = undef;
38 $miniserv{'blocklock'} = $in{'blocklock'};
40 $miniserv{'syslog'} = $in{'syslog'};
41 if ($in{'session'} && $ENV{'HTTP_COOKIE'} !~ /sessiontest=1/i) {
42 &error($text{'session_ecookie'});
44 $miniserv{'session'} = $in{'session'};
45 if ($in{'logouttime_on'}) {
46 $in{'logouttime'} =~ /^\d+$/ && $in{'logouttime'} > 0 ||
47 &error($text{'session_elogouttime'});
49 $miniserv{'logouttime'} = $in{'logouttime_on'} ? $in{'logouttime'} : undef;
50 if ($in{'localauth'}) {
51 $lsof = &has_command("lsof");
52 &error($text{'session_elsof'}) if (!$lsof);
53 $miniserv{'localauth'} = $lsof;
56 delete($miniserv{'localauth'});
58 $miniserv{'no_pam'} = $in{'no_pam'};
59 if ($in{'passwd_file'}) {
60 $in{'passwd_file'} =~ /\|$/ || -r $in{'passwd_file'} ||
61 &error($text{'session_epasswd_file'});
62 $in{'passwd_uindex'} =~ /^\d+$/ ||
63 &error($text{'session_epasswd_uindex'});
64 $in{'passwd_pindex'} =~ /^\d+$/ ||
65 &error($text{'session_epasswd_pindex'});
66 $miniserv{'passwd_file'} = $in{'passwd_file'};
67 $miniserv{'passwd_uindex'} = $in{'passwd_uindex'};
68 $miniserv{'passwd_pindex'} = $in{'passwd_pindex'};
71 delete($miniserv{'passwd_file'});
72 delete($miniserv{'passwd_uindex'});
73 delete($miniserv{'passwd_pindex'});
75 $miniserv{'pam_conv'} = $in{'pam_conv'};
77 delete($gconfig{'passwd_cmd'});
80 $in{'cmd'} =~ /\S/ && &has_command($in{'cmd'}) ||
81 &error($text{'session_ecmd'});
82 $gconfig{'passwd_cmd'} = $in{'cmd'};
85 $in{'extauth'} =~ /^(\S+)/ && -x $1 ||
86 &error($text{'session_eextauth'});
87 $miniserv{'extauth'} = $in{'extauth'};
90 delete($miniserv{'extauth'});
92 if (defined($in{'passwd_mode'})) {
93 $miniserv{'passwd_mode'} = $in{'passwd_mode'};
95 $miniserv{'utmp'} = $in{'utmp'};
96 &put_miniserv_config(\%miniserv);
97 &unlock_file($ENV{'MINISERV_CONFIG'});
99 &lock_file("$config_directory/config");
100 #$gconfig{'locking'} = $in{'locking'};
101 $gconfig{'noremember'} = !$in{'remember'};
102 $gconfig{'realname'} = $in{'realname'};
103 if ($in{'passwd_file'}) {
104 $gconfig{'passwd_file'} = $in{'passwd_file'};
105 $gconfig{'passwd_uindex'} = $in{'passwd_uindex'};
106 $gconfig{'passwd_pindex'} = $in{'passwd_pindex'};
109 delete($gconfig{'passwd_file'});
110 delete($gconfig{'passwd_uindex'});
111 delete($gconfig{'passwd_pindex'});
113 if ($in{'banner_def'}) {
114 delete($gconfig{'loginbanner'});
117 -r $in{'banner'} || &error($text{'session_ebanner'});
118 $gconfig{'loginbanner'} = $in{'banner'};
120 if ($in{'md5pass'}) {
121 # MD5 enabled .. but is it supported by this system?
122 &foreign_require("acl", "acl-lib.pl");
123 $need = &acl::check_md5();
124 $need && &error(&text('session_emd5mod', "<tt>$need</tt>"));
126 $gconfig{'md5pass'} = $in{'md5pass'};
127 &write_file("$config_directory/config", \%gconfig);
128 &unlock_file("$config_directory/config");
130 &show_restart_page();
131 &webmin_log("session", undef, undef, \%in);