From ee0b68a0acb7eda9e04661741560dff10453e4fa Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Mon, 19 Mar 2018 20:47:53 -0700 Subject: [PATCH] Config option to disable directory listijng https://github.com/webmin/webmin/issues/874 --- miniserv.pl | 3 +++ webmin/change_web.cgi | 3 +++ webmin/edit_web.cgi | 4 ++++ webmin/lang/en | 1 + 4 files changed, 11 insertions(+) diff --git a/miniserv.pl b/miniserv.pl index 49cd7489e..f3e261efe 100755 --- a/miniserv.pl +++ b/miniserv.pl @@ -2259,6 +2259,9 @@ if (-d _) { } if (-d _) { # This is definitely a directory.. list it + if ($config{'nolistdir'}) { + &http_error(500, "Directory is missing an index file"); + } print DEBUG "handle_request: listing directory\n"; local $resp = "HTTP/1.0 $ok_code $ok_message\r\n". "Date: $datestr\r\n". diff --git a/webmin/change_web.cgi b/webmin/change_web.cgi index a1fe50a00..226115194 100755 --- a/webmin/change_web.cgi +++ b/webmin/change_web.cgi @@ -47,6 +47,9 @@ $miniserv{'gzip'} = $in{'gzip'}; # Save redirect type $gconfig{'relative_redir'} = $in{'redir'}; +# Save directory list option +$miniserv{'nolistdir'} = !$in{'listdir'}; + # Save global config &lock_file("$config_directory/config"); &write_file("$config_directory/config", \%gconfig); diff --git a/webmin/edit_web.cgi b/webmin/edit_web.cgi index 42e9ea9fc..d6e2cdc80 100755 --- a/webmin/edit_web.cgi +++ b/webmin/edit_web.cgi @@ -60,6 +60,10 @@ print &ui_table_row($text{'advanced_redir'}, [ [ 1, $text{'advanced_redir1'} ], [ 0, $text{'advanced_redir0'} ] ]), undef, [ "valign=middle","valign=middle" ]); +# 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'} ] ]); diff --git a/webmin/lang/en b/webmin/lang/en index f0b340ddc..a4f74ff08 100644 --- a/webmin/lang/en +++ b/webmin/lang/en @@ -886,6 +886,7 @@ advanced_egzip=Gzip compression cannot be enabled unless the $1 perl module is i advanced_redir=URL format for redirects advanced_redir1=Path only advanced_redir0=Protocol, host, port and path +advanced_listdir=List directories without an index file? syslog_errorlog=Webmin error log