Add page for configuring webserver options for Usermin

This commit is contained in:
Jamie Cameron
2021-06-12 10:43:38 -07:00
parent dc93013655
commit 6700d2b302
8 changed files with 143 additions and 7 deletions

View File

@ -26,9 +26,6 @@ for($i=0; defined($tmod = $in{'tmod_'.$i}); $i++) {
}
&webmin::save_tempdirs(\%uconfig, \@tdirs);
# Save stack trace option
$uconfig{'error_stack'} = $in{'stack'};
# Save umask
if ($in{'umask_def'}) {
delete($uconfig{'umask'});

67
usermin/change_web.cgi Executable file
View File

@ -0,0 +1,67 @@
#!/usr/local/bin/perl
# Save webserver options
require './usermin-lib.pl';
&ReadParse();
&error_setup($text{'web_err'});
&get_usermin_miniserv_config(\%miniserv);
&get_usermin_config(\%uconfig);
# Save expires
if ($in{'expires_def'}) {
delete($miniserv{'expires'});
}
else {
$in{'expires'} =~ /^\d+$/ ||
&error($text{'web_eexpires'});
$miniserv{'expires'} = $in{'expires'};
}
# Save per-path expires
for(my $i=0; defined($p = $in{"expirespath_$i"}); $i++) {
$t = $in{"expirestime_$i"};
next if ($p !~ /\S/);
$t =~ /^\d+$/ || &error(&text('web_eexpires2', $i+1));
push(@expires_paths, [ $p, $t ]);
}
$miniserv{'expires_paths'} = join("\t", map { $_->[0]."=".$_->[1] }
@expires_paths);
# Save stack trace option
$uconfig{'error_stack'} = $in{'stack'};
# Save showing of stderr
$miniserv{'noshowstderr'} = !$in{'showstderr'};
if (!$miniserv{'session'}) {
# Save password pass option
$miniserv{'pass_password'} = $in{'pass'};
}
# Save gzip option
if ($in{'gzip'} == 1) {
eval "use Compress::Zlib";
$@ && &error(&text('advanced_egzip', '<tt>Compress::Zlib</tt>'));
}
$miniserv{'gzip'} = $in{'gzip'};
# Save redirect type
$uconfig{'relative_redir'} = $in{'redir'};
# Save directory list option
$miniserv{'nolistdir'} = !$in{'listdir'};
# Save global config
&lock_file($usermin_config);
&write_file($usermin_config, \%uconfig);
&unlock_file($usermin_config);
# Save miniserv config
&lock_file($usermin_miniserv_config);
&put_usermin_miniserv_config(\%miniserv);
&unlock_file($usermin_miniserv_config);
&restart_usermin_miniserv();
&webmin_log("web");
&redirect("");

View File

@ -28,3 +28,4 @@ blocked=1
advanced=1
mobile=1
twofactor=1
web=1

View File

@ -31,10 +31,6 @@ foreach $d (&webmin::get_tempdirs(\%uconfig), [ ]) {
$ttable .= &ui_columns_end();
print &ui_table_row($text{'advanced_tempmods'}, $ttable);
# Show call stack on error
print &ui_table_row($text{'advanced_stack'},
&ui_yesno_radio("stack", int($uconfig{'error_stack'})));
# Pass passwords to CGI programs
print &ui_table_row($text{'advanced_pass'},
&ui_yesno_radio("pass", int($miniserv{'pass_password'})));

72
usermin/edit_web.cgi Executable file
View File

@ -0,0 +1,72 @@
#!/usr/local/bin/perl
# Show the web serving options form
require './usermin-lib.pl';
&ui_print_header(undef, $text{'web_title'}, "");
&get_usermin_miniserv_config(\%miniserv);
&get_usermin_config(\%uconfig);
print &ui_form_start("change_web.cgi", "post");
print &ui_table_start($text{'web_header'}, undef, 2);
# Default content expiry time
print &ui_table_row($text{'web_expires'},
&ui_opt_textbox("expires", $miniserv{'expires'}, 10,
$text{'web_expiresdef'}, $text{'web_expiressecs'}), undef);
# Additional expiry times based on path
my @expires_paths;
foreach my $pe (split(/\t+/, $miniserv{'expires_paths'})) {
my ($p, $e) = split(/=/, $pe);
if ($p && $e ne '') {
push(@expires_paths, [ $p, $e ]);
}
}
push(@expires_paths, [ undef, $miniserv{'expires'} || 86400 ]);
my $etable = &ui_columns_start([ $text{'web_expirespath'},
$text{'web_expirestime'} ]);
for(my $i=0; $i<@expires_paths; $i++) {
$etable .= &ui_columns_row([
&ui_textbox("expirespath_$i", $expires_paths[$i]->[0], 40),
&ui_textbox("expirestime_$i", $expires_paths[$i]->[1], 10),
]);
}
$etable .= &ui_columns_end();
print &ui_table_row($text{'web_expirespaths'}, $etable);
# Show call stack on error
print &ui_table_row($text{'advanced_stack'},
&ui_yesno_radio("stack", int($uconfig{'error_stack'})), undef);
# Show CGI errors
print &ui_table_row($text{'advanced_showstderr'},
&ui_yesno_radio("showstderr", int(!$miniserv{'noshowstderr'})), undef);
if (!$miniserv{'session'}) {
# Pass passwords to CGI programs
print &ui_table_row($text{'advanced_pass'},
&ui_yesno_radio("pass", int($miniserv{'pass_password'})), undef);
}
# Gzip static files?
print &ui_table_row($text{'advanced_gzip'},
&ui_radio("gzip", $miniserv{'gzip'},
[ [ '', $text{'advanced_gzipauto'} ],
[ 0, $text{'advanced_gzip0'} ],
[ 1, $text{'advanced_gzip1'} ] ]), undef);
# Redirect type
print &ui_table_row($text{'advanced_redir'},
&ui_radio("redir", $uconfig{'relative_redir'} ? 1 : 0,
[ [ 1, $text{'advanced_redir1'} ],
[ 0, $text{'advanced_redir0'} ] ]), undef);
# Allow directory listing
print &ui_table_row($text{'advanced_listdir'},
&ui_yesno_radio("listdir", !$miniserv{'nolistdir'}));
print &ui_table_end();
print &ui_form_end([ [ "save", $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});

BIN
usermin/images/web.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

View File

@ -79,6 +79,7 @@ $ver = &get_usermin_version();
$miniserv{'session'} ? ( "list_sessions.cgi", "edit_twofactor.cgi" ) : ( ),
"edit_blocked.cgi",
"edit_mobile.cgi",
"edit_web.cgi",
"edit_advanced.cgi" );
@titles = map { /_(\S+).cgi/; $text{"${1}_title"} } @links;
@icons = map { /_(\S+).cgi/; "images/$1.gif" } @links;

View File

@ -502,4 +502,6 @@ copycert_ekeyfile=No private key file is set in Webmin
twofactor_desc=Two-factor authentication allows Usermin users to enable use of an additional authentication device when logging in, such as a one-time passcode generator. Users must individually enroll with the selected authentication provider after it is enabled on this page.
twofactor_eversion=The version of Usermin installed on your system does not support two-factor authentication.
web_header=Options for Usermin's built-in webserver
__norefs=1