Save output from pages in Webmin

This commit is contained in:
Jamie Cameron
2010-11-05 16:50:18 -07:00
parent d306b80bd4
commit 7672f0af49
2 changed files with 29 additions and 1 deletions

View File

@@ -2981,6 +2981,8 @@ sub WRITE
$r = shift;
my($buf,$len,$offset) = @_;
&write_to_sock(substr($buf, $offset, $len));
$miniserv::page_capture_out .= substr($buf, $offset, $len)
if ($miniserv::page_capture);
}
sub PRINT
@@ -2990,13 +2992,18 @@ $$r++;
my $buf = join(defined($,) ? $, : "", @_);
$buf .= $\ if defined($\);
&write_to_sock($buf);
$miniserv::page_capture_out .= $buf
if ($miniserv::page_capture);
}
sub PRINTF
{
shift;
my $fmt = shift;
&write_to_sock(sprintf $fmt, @_);
my $buf = sprintf $fmt, @_;
&write_to_sock($buf);
$miniserv::page_capture_out .= $buf
if ($miniserv::page_capture);
}
# Send back already read data while we have it, then read from SOCK

View File

@@ -771,6 +771,7 @@ my $charset = defined($main::force_charset) ? $main::force_charset
if (defined(&theme_header)) {
$module_name = &get_module_name();
&theme_header(@_);
$miniserv::page_capture = 1;
return;
}
print "<!doctype html public \"-//W3C//DTD HTML 3.2 Final//EN\">\n";
@@ -908,6 +909,7 @@ if (@_ > 1) {
print "</td></tr></table>\n";
print $tconfig{'postheader'};
}
$miniserv::page_capture = 1;
}
=head2 get_html_title(title)
@@ -1044,6 +1046,7 @@ my $charset = defined($main::force_charset) ? $main::force_charset
&load_theme_library();
if (defined(&theme_popup_header)) {
&theme_popup_header(@_);
$miniserv::page_capture = 1;
return;
}
print "<!doctype html public \"-//W3C//DTD HTML 3.2 Final//EN\">\n";
@@ -1075,6 +1078,7 @@ if (!$_[3]) {
&theme_popup_prebody(@_);
}
}
$miniserv::page_capture = 1;
}
=head2 footer([page, name]+, [noendbody])
@@ -1088,6 +1092,7 @@ a link destination, and the second the link text. For example :
=cut
sub footer
{
$miniserv::page_capture = 0;
&load_theme_library();
my %this_module_info = &get_module_info(&get_module_name());
if (defined(&theme_footer)) {
@@ -1157,6 +1162,7 @@ Outputs html for a footer for a popup window, started by popup_header.
=cut
sub popup_footer
{
$miniserv::page_capture = 0;
&load_theme_library();
if (defined(&theme_popup_footer)) {
&theme_popup_footer(@_);
@@ -5197,6 +5203,7 @@ if ($gconfig{'logfiles'} && !&get_module_variable('$no_log_file_changes')) {
}
@main::locked_file_diff = undef;
}
if ($gconfig{'logfullfiles'}) {
# Save the original contents of any modified files
my $i = 0;
@@ -5222,6 +5229,18 @@ if ($gconfig{'logfullfiles'}) {
%main::orig_file_type = undef;
}
if ($miniserv::page_capture_out) {
# Save the whole page output
mkdir("$ENV{'WEBMIN_VAR'}/output", 0700);
open(PAGEOUT, ">$ENV{'WEBMIN_VAR'}/output/$id");
print PAGEOUT $miniserv::page_capture_out;
close(PAGEOUT);
if ($gconfig{'logperms'}) {
chmod(oct($gconfig{'logperms'}),
"$ENV{'WEBMIN_VAR'}/output/$id");
}
}
# Log to syslog too
if ($gconfig{'logsyslog'}) {
eval 'use Sys::Syslog qw(:DEFAULT setlogsock);
@@ -5259,6 +5278,8 @@ if ($gconfig{'logsyslog'}) {
eval { syslog("info", "%s", "[$info{'desc'}] $msg"); };
}
}
print STDERR $miniserv::page_capture_out,"\n";
}
=head2 additional_log(type, object, data, [input])