diff --git a/webmin/edit_session.cgi b/webmin/edit_session.cgi
index 2a5d70635..ed78bad0a 100755
--- a/webmin/edit_session.cgi
+++ b/webmin/edit_session.cgi
@@ -71,62 +71,63 @@ print &ui_table_row($text{'session_sopts'},
&ui_checkbox("utmp", 1, $text{'session_utmp'},
$miniserv{'utmp'} ? 1 : 0));
-# XXX
-printf " %s\n",
- $gconfig{'loginbanner'} ? "" : "checked", $text{'session_banner1'};
-printf " %s\n",
- $gconfig{'loginbanner'} ? "checked" : "", $text{'session_banner0'};
-printf " %s
\n",
- $gconfig{'loginbanner'}, &file_chooser_button("banner");
-print "
\n";
+# Pre-login banner
+print &ui_table_row($text{'session_banner'},
+ &ui_radio("banner_def", $gconfig{'loginbanner'} ? 0 : 1,
+ [ [ 1, $text{'session_banner1'}."
" ],
+ [ 0, $text{'session_banner0'} ] ]).
+ &ui_filebox("banner", $gconfig{'loginbanner'}, 50));
-printf " %s
\n",
- !$miniserv{'localauth'} ? "checked" : "", $text{'session_localoff'};
-printf " %s
\n",
- $miniserv{'localauth'} ? "checked" : "", $text{'session_localon'};
-print "
\n";
+# Local authentication
+print &ui_table_row($text{'session_local'},
+ &ui_radio("localauth", $miniserv{'localauth'} ? 1 : 0,
+ [ [ 0, $text{'session_localoff'}."
" ],
+ [ 1, $text{'session_localon'} ] ]));
# Use PAM or shadow file?
-printf " %s
\n",
- !$miniserv{'no_pam'} ? "checked" : "", $text{'session_pamon'};
-printf " %s
\n",
- $miniserv{'no_pam'} ? "checked" : "", $text{'session_pamoff'};
-print " ",&text('session_pfile',
- "",
- "",
- ""),
- "
\n";
-print " ",
+print &ui_table_row($text{'session_pam'},
+ &ui_radio("no_pam", $miniserv{'no_pam'} ? 1 : 0,
+ [ [ 0, $text{'session_pamon'}."
" ],
+ [ 1, $text{'session_pamoff'} ] ]));
+
+print &ui_table_row($text{'session_popts'},
ui_checkbox("pam_conv", 1, $text{'session_pamconv'},
- $miniserv{'pam_conv'}),"
\n";
-print " ",
+ $miniserv{'pam_conv'}).
+ "
".
ui_checkbox("pam_end", 1, $text{'session_pamend'},
- $miniserv{'pam_end'}),"
\n";
+ $miniserv{'pam_end'}).
+ "
\n".
+ &text('session_pfile',
+ &ui_textbox("passwd_file", $miniserv{'passwd_file'}, 20),
+ &ui_textbox("passwd_uindex", $miniserv{'passwd_uindex'}, 2),
+ &ui_textbox("passwd_pindex", $miniserv{'passwd_pindex'}, 2)));
# Unix password change
-print &ui_oneradio("cmd_def", 1, $text{'session_cmddef1'},
- !$gconfig{'passwd_cmd'}),"
\n";
-print &ui_oneradio("cmd_def", 0, $text{'session_cmddef0'},
- $gconfig{'passwd_cmd'})," ",
- &ui_textbox("cmd", $gconfig{'passwd_cmd'}, 40),"
\n";
+print &ui_table_row($text{'session_cmddef'},
+ &ui_oneradio("cmd_def", 1, $text{'session_cmddef1'},
+ !$gconfig{'passwd_cmd'}).
+ "
".
+ &ui_oneradio("cmd_def", 0, $text{'session_cmddef0'},
+ $gconfig{'passwd_cmd'}).
+ " ".
+ &ui_textbox("cmd", $gconfig{'passwd_cmd'}, 60));
-print "$text{'session_pmodedesc3'}
\n";
-foreach $m (0 .. 2) {
- printf " %s\n",
- $m, $miniserv{'passwd_mode'} == $m ? "checked" : "",
- $text{'session_pmode'.$m};
- print $m == 2 ? "
\n" : "
\n";
- }
+# Password expiry policy
+print &ui_table_row($text{'session_pmodedesc3'},
+ &ui_radio("passwd_mode", $miniserv{'passwd_mode'} || 0,
+ [ [ 0, $text{'session_pmode0'}."
" ],
+ [ 1, $text{'session_pmode1'}."
" ],
+ [ 2, $text{'session_pmode2'} ] ]));
# Squid-style authentication program
-print "$text{'session_extauth'} ",
- "
\n";
+print &ui_table_row($text{'session_extauth'},
+ &ui_textbox("extauth", $miniserv{'extauth'}, 60));
# Password encryption format
-printf " %s
\n",
- !$gconfig{'md5pass'} ? "checked" : "", $text{'session_md5off'};
-printf " %s
\n",
- $gconfig{'md5pass'} ? "checked" : "", $text{'session_md5on'};
+print &ui_table_row($text{'session_md5'},
+ &ui_radio("md5pass", $gconfig{'md5pass'} ? 1 : 0,
+ [ [ 0, $text{'session_md5off'}."
" ],
+ [ 1, $text{'session_md5on'} ] ]));
print ui_table_end();
print ui_form_end([ [ "save", $text{'save'} ] ]);
diff --git a/webmin/lang/en b/webmin/lang/en
index bf9f4eb76..7adb79897 100644
--- a/webmin/lang/en
+++ b/webmin/lang/en
@@ -565,6 +565,7 @@ session_stype=Authentication type
session_sopts=Authentication options
session_disable=Disable session authentication
session_enable=Enable session authentication
+session_local=Local authentication
session_localoff=Always require username and password
session_localon=Allow login without password for matching users from localhost
session_logouttime=Auto-logout after $1 minutes of inactivity
@@ -581,26 +582,31 @@ session_remember=Offer to remember login permanently?
session_hostname=Show hostname on login screen?
session_utmp=Record logins and logouts in Utmp?
session_realname=Show real hostname instead of name from URL?
+session_pam=Password source
session_pamon=Use PAM for Unix authentication, if available
session_pamoff=Never use PAM for Unix authentication
session_pfile=If PAM is unavailable or disabled, read users and passwords from file $1 columns $2 and $3
+session_popts=Password options
session_pamconv=Support full PAM conversations?
session_pamend=Pass on PAM status to other modules?
+session_cmddef=Expired password change
session_cmddef1=Change expired passwords via PAM
session_cmddef0=Change passwords with command:
session_ecmd=Missing or invalid password change command
session_epasswd_file=Invalid unix users file
session_epasswd_uindex=Missing or invalid unix username index
session_epasswd_pindex=Missing or invalid unix password index
+session_banner=Pre-login banner
session_banner1=No pre-login page
session_banner0=Show pre-login file
session_ebanner=Missing or invalid pre-login file
session_extauth=External squid-style authentication program
session_eextauth=Missing or invalid external authentication program
-session_pmodedesc3=Password expiry policy ..
+session_pmodedesc3=Password expiry policy
session_pmode0=Always deny users with expired passwords
session_pmode1=Always allow users with expired passwords
session_pmode2=Prompt users with expired passwords to enter a new one
+session_md5=Password hashing format
session_md5off=Use standard Unix crypt encryption for Webmin passwords
session_md5on=Use MD5 encryption for Webmin passwords (allows long passwords)
session_emd5mod=MD5 encryption cannot be used, as Perl $1 module is not installed.