1#!/usr/local/bin/perl
2# edit_session.cgi
3# Edit session login options
4
5require './usermin-lib.pl';
6$access{'session'} || &error($text{'acl_ecannot'});
7print "Set-Cookie: sessiontest=1; path=/\n";
8&ui_print_header(undef, $text{'session_title'}, "");
9&get_usermin_miniserv_config(\%miniserv);
10$ver = &get_usermin_version();
11
12&get_usermin_config(\%uconfig);
13print "$text{'session_desc1'}<p>\n";
14print "$text{'session_desc2'}<p>\n";
15
16print ui_form_start("change_session.cgi", "post");
17print ui_table_start($text{'session_header'}, undef, 2);
18
19# Bad password delay
20print &ui_table_row($text{'session_ptimeout'},
21        &ui_radio("passdelay", $miniserv{'passdelay'} ? 1 : 0,
22                  [ [ 0, $text{'session_pdisable'}."<br>\n" ],
23                    [ 1, $text{'session_penable'} ] ]));
24
25# Block hosts
26print &ui_table_row($text{'session_pblock'},
27    &ui_checkbox("blockhost_on", 1,
28        text('session_blockhost',
29          ui_textbox("blockhost_failures", $miniserv{'blockhost_failures'}, 4),
30          ui_textbox("blockhost_time", $miniserv{'blockhost_time'}, 4)),
31        $miniserv{'blockhost_failures'} ? 1 : 0));
32
33# Block users
34print &ui_table_row("",
35    &ui_checkbox("blockuser_on", 1,
36        text('session_blockuser',
37          ui_textbox("blockuser_failures", $miniserv{'blockuser_failures'}, 4),
38          ui_textbox("blockuser_time", $miniserv{'blockuser_time'}, 4)),
39        $miniserv{'blockuser_failures'} ? 1 : 0));
40
41# Log to syslog
42eval "use Sys::Syslog qw(:DEFAULT setlogsock)";
43if (!$@) {
44        print &ui_table_row($text{'session_syslog3'},
45                &ui_yesno_radio("syslog", $miniserv{'syslog'}));
46	}
47else {
48        print ui_hidden('syslog', $miniserv{'syslog'});
49	}
50print "<p>\n";
51
52# Session authentication
53print &ui_table_row($text{'session_stype'},
54        &ui_radio("session", $miniserv{'session'} ? 1 : 0,
55                  [ [ 0, $text{'session_disable'}."<br>" ],
56                    [ 1, $text{'session_enable'} ] ]));
57
58# Session auth options
59print &ui_table_row($text{'session_sopts'},
60        &ui_checkbox("logouttime_on", 1,
61                &text('session_logouttime',
62                        &ui_textbox("logouttime", $miniserv{'logouttime'}, 10)),
63                 $miniserv{'logouttime'} ? 1 : 0).
64        "<br>\n".
65        &ui_checkbox("remember", 1, $text{'session_remember'},
66                     $gconfig{'noremember'} ? 0 : 1).
67        "<br>\n".
68        &ui_checkbox("realname", 1, $text{'session_realname'},
69                     $gconfig{'realname'} ? 1 : 0).
70        "<br>\n".
71        &ui_checkbox("session_ip", 1, $text{'session_ip'},
72                     $miniserv{'session_ip'} ? 1 : 0).
73        "<br>\n".
74        &ui_checkbox("utmp", 1, $text{'session_utmp'},
75                     $miniserv{'utmp'} ? 1 : 0));
76
77# Pre-login banner
78print &ui_table_row($text{'session_banner'},
79        &ui_radio("banner_def", $gconfig{'loginbanner'} ? 0 : 1,
80                  [ [ 1, $text{'session_banner1'}."<br>" ],
81                    [ 0, $text{'session_banner0'} ] ]).
82        &ui_filebox("banner", $gconfig{'loginbanner'}, 50));
83
84# Local authentication
85print &ui_table_row($text{'session_local'},
86        &ui_radio("localauth", $miniserv{'localauth'} ? 1 : 0,
87                  [ [ 0, $text{'session_localoff'}."<br>" ],
88                    [ 1, $text{'session_localon'} ] ]));
89
90# Authentication mode
91@users = &get_usermin_miniserv_users();
92$authmode = $users[0]->{'pass'} eq 'e' ? 2 :
93	    $miniserv{'no_pam'} ? 1 : 0;
94print &ui_table_row($text{'session_authmode'},
95	&ui_radio("authmode", $authmode,
96		  [ [ 0, $text{'session_authmode0'}."<br>" ],
97		    [ 1, &text('session_authmode1',
98			      &ui_textbox("passwd_file",
99					  $miniserv{'passwd_file'}, 20),
100			      &ui_textbox("passwd_uindex",
101					  $miniserv{'passwd_uindex'}, 2),
102			      &ui_textbox("passwd_pindex",
103					  $miniserv{'passwd_pindex'}, 2)).
104			 "<br>" ],
105		    [ 2, $text{'session_authmode2'}." ".
106			 &ui_textbox("extauth", $miniserv{'extauth'}, 40) ] ]));
107
108# PAM options
109print &ui_table_row($text{'session_popts'},
110        ui_checkbox("pam_conv", 1, $text{'session_pamconv'},
111                     $miniserv{'pam_conv'}).
112        "<br>".
113        ui_checkbox("pam_end", 1, $text{'session_pamend'},
114                     $miniserv{'pam_end'}));
115
116# Unix password change
117print &ui_table_row($text{'session_cmddef'},
118        &ui_oneradio("cmd_def", 1, $text{'session_cmddef1'},
119                     !$gconfig{'passwd_cmd'}).
120        "<br>".
121        &ui_oneradio("cmd_def", 0, $text{'session_cmddef0'},
122                     $gconfig{'passwd_cmd'}).
123        " ".
124        &ui_textbox("cmd", $gconfig{'passwd_cmd'}, 60));
125
126if ($miniserv{'passwd_cindex'} ne '') {
127	# Password expiry policy
128	print &ui_table_row($text{'session_pmodedesc3'},
129		&ui_radio("passwd_mode", $miniserv{'passwd_mode'} || 0,
130			  [ [ 0, $text{'session_pmode0'}."<br>" ],
131			    [ 1, $text{'session_pmode1'}."<br>" ],
132			    [ 2, $text{'session_pmode2'} ] ]));
133	}
134
135# Prompt to choose password at login
136print &ui_table_row($text{'session_blank'},
137	&ui_yesno_radio("passwd_blank", $miniserv{'passwd_blank'}));
138
139# Try adding domain name to username?
140print &ui_table_row($text{'session_domain'},
141	&ui_yesno_radio("domainuser", $miniserv{'domainuser'}).
142	"<br>\n".
143	&ui_checkbox("domainstrip", 1, $text{'session_strip'},
144		     $miniserv{'domainstrip'}).
145	"<br>\n".
146	&ui_checkbox("user_mapping_on", 1, $text{'session_usermap'},
147		     $miniserv{'user_mapping'})." ".
148	&ui_filebox("user_mapping", $miniserv{'user_mapping'}, 30).
149	"<br>\n".
150	"<b>".$text{'session_userfmt'}."</b> ".
151	&ui_radio("user_mapping_reverse",
152		  int($miniserv{'user_mapping_reverse'}),
153		  [ [ 0, $text{'session_userfmt0'} ],
154		    [ 1, $text{'session_userfmt1'} ] ]));
155
156# Create homedir at login?
157print &ui_table_row($text{'session_homedir'},
158	&ui_yesno_radio("create_homedir", $uconfig{'create_homedir'}));
159
160# Perms for new homedir
161print &ui_table_row($text{'session_homedir_perms'},
162	&ui_opt_textbox("create_homedir_perms",
163		$uconfig{'create_homedir_perms'}, 4, $text{'default'}));
164
165print ui_table_end();
166print ui_form_end([ [ "save", $text{'save'} ] ]);
167
168&ui_print_footer("", $text{'index_return'});
169
170