Merge branch 'master' of github.com:webmin/webmin

This commit is contained in:
Jamie Cameron
2023-07-12 15:52:31 -07:00
2 changed files with 39 additions and 18 deletions

View File

@@ -1649,7 +1649,7 @@ if (defined($redir)) {
print DEBUG "handle_request: redir=$redir\n";
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{'server'}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("Location: $prot://$hostport$redir\r\n");
&write_keep_alive(0);
&write_data("\r\n");
@@ -2081,7 +2081,7 @@ if (!$validated) {
# Ask for login with HTTP authentication
&write_data("HTTP/1.0 401 Unauthorized\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{'server'}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("WWW-authenticate: Basic ".
"realm=\"$config{'realm'}\"\r\n");
&write_keep_alive(0);
@@ -2328,7 +2328,7 @@ if (-d _) {
# It doesn't.. redirect
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{server}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("Location: $prot://$hostport$page/\r\n");
&write_keep_alive(0);
&write_data("\r\n");
@@ -2359,7 +2359,7 @@ if (-d _) {
print DEBUG "handle_request: listing directory\n";
local $resp = "HTTP/1.0 $ok_code $ok_message\r\n".
"Date: $datestr\r\n".
"Server: $config{server}\r\n".
"Server: @{[&server_info()]}\r\n".
"Content-type: text/html; Charset=utf-8\r\n";
&write_data($resp);
&write_keep_alive(0);
@@ -2657,7 +2657,7 @@ if (&get_type($full) eq "internal/cgi" && $validated != 4) {
if ($cgiheader{"location"}) {
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{'server'}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_keep_alive(0);
# ignore the rest of the output. This is a hack,
# but is necessary for IE in some cases :(
@@ -2673,7 +2673,7 @@ if (&get_type($full) eq "internal/cgi" && $validated != 4) {
else {
&write_data("HTTP/1.0 $ok_code $ok_message\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{'server'}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_keep_alive(0);
}
foreach $h (@cgiheader) {
@@ -2715,7 +2715,7 @@ else {
local $etime = &get_expires_time($simple);
local $resp = "HTTP/1.0 $ok_code $ok_message\r\n".
"Date: $datestr\r\n".
"Server: $config{server}\r\n".
"Server: @{[&server_info()]}\r\n".
"Content-type: ".&get_type($full)."\r\n".
"Last-Modified: ".&http_date($stopen[9])."\r\n".
"Expires: ".&http_date(time()+$etime)."\r\n".
@@ -2786,7 +2786,7 @@ if ($eh) {
else {
# Use the standard error message display
&write_data("HTTP/1.0 $code $msg\r\n");
&write_data("Server: $config{server}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Content-type: text/html; Charset=utf-8\r\n");
&write_keep_alive(0);
@@ -3524,7 +3524,7 @@ foreach $d (@_) {
&write_data(
"HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{server}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_keep_alive(0);
}
elsif ($cgiheader{"content-type"} eq "") {
@@ -3533,7 +3533,7 @@ foreach $d (@_) {
else {
&write_data("HTTP/1.0 $ok_code $ok_message\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{server}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_keep_alive(0);
}
foreach $h (@cgiheader) {
@@ -4243,7 +4243,7 @@ if ($ok && (!$expired ||
# Got one .. go to it
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{'server'}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("Location: $rurl\r\n");
&write_keep_alive(0);
&write_data("\r\n");
@@ -4253,7 +4253,7 @@ if ($ok && (!$expired ||
# Set cookie and redirect to originally requested page
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: $config{'server'}\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
local $sec = $ssl ? "; secure" : "";
if (!$config{'no_httponly'}) {
$sec .= "; httpOnly";
@@ -6896,4 +6896,14 @@ select($old);
return undef;
}
# Returns server information in headers
sub server_info
{
my $sig = $config{'server_sig'};
if (!$sig) {
$sig =
$session_id ?
$config{'server'} : "MiniServ";
}
return $sig;
}

View File

@@ -1688,6 +1688,17 @@ $main::no_miniserv_userdb = 1;
&setvar('error-fatal', 1);
my $msg = join("", @_);
$msg =~ s/<[^>]*>//g;
my @stack;
for(my $i=0; my @stack_ = caller($i); $i++) {
push(@stack, \@stack_);
}
my $err_caller;
$err_caller = "$stack[1]->[1] (line $stack[1]->[2])"
if ($stack[1]->[1] && $stack[1]->[2]);
if ($err_caller) {
$err_caller =~ s/$root_directory\///;
$main::whatfailed = $main::whatfailed ? "$main::whatfailed : $err_caller" : $err_caller;
}
my $error_details = (($ENV{'WEBMIN_DEBUG'} || $gconfig{'debug_enabled'}) ? "" : "\n");
my $error_output_right = sub {
my ($err_msg) = @_;
@@ -1711,7 +1722,7 @@ if (!$ENV{'REQUEST_METHOD'}) {
&print_call_stack() if ($gconfig{'error_stack'});
}
elsif (defined(&theme_error)) {
&theme_error(@_);
&theme_error({err => \@_, stack => \@stack, err_caller => $err_caller});
}
elsif ($ENV{'REQUEST_URI'} =~ /json-error=1/) {
my %jerror;
@@ -1759,11 +1770,11 @@ else {
print "<tr> <td$cls_err_td><b>$text{'error_file'}</b></td> ",
"<td$cls_err_td><b>$text{'error_line'}</b></td> ",
"<td$cls_err_td><b>$text{'error_sub'}</b></td> </tr>\n";
for($i=0; my @stack = caller($i); $i++) {
foreach my $stack (@stack) {
print "<tr>\n";
print "<td$cls_err_td>$stack[1]</td>\n";
print "<td$cls_err_td>$stack[2]</td>\n";
print "<td$cls_err_td>$stack[3]</td>\n";
print "<td$cls_err_td>$stack->[1]</td>\n";
print "<td$cls_err_td>$stack->[2]</td>\n";
print "<td$cls_err_td>$stack->[3]</td>\n";
print "</tr>\n";
}
print "</table>\n";