#!/usr/local/bin/perl # view.cgi # Show details of the action, including changed files require './webminlog-lib.pl'; &ReadParse(); # find the log record to view $act = &get_action($in{'id'}); &can_user($act->{'user'}) || &error($text{'view_ecannot'}); &can_mod($act->{'module'}) || &error($text{'view_ecannot'}); # display info about the action &ui_print_header(undef, $text{'view_title'}, ""); @files = &list_files($act); if (@files) { print &ui_form_start("rollback.cgi"); print &ui_hidden("id", $in{'id'}); } print &ui_table_start(&text('view_header', $act->{'id'}), "width=100%", 4); # This "" is needed to make the label show properly! print &ui_table_row($text{'view_action'}."", &get_action_description($act, 1), 3); %minfo = &get_module_info($act->{'module'}); print &ui_table_row($text{'view_module'}, $minfo{'desc'}); print &ui_table_row($text{'view_script'}, "$act->{'module'}/$act->{'script'}"); print &ui_table_row($text{'view_user'}, $act->{'user'}); print &ui_table_row($text{'view_ip'}, $act->{'ip'}); if ($act->{'sid'} ne '-') { print &ui_table_row($text{'view_sid'}, "$act->{'sid'}"); } @tm = localtime($act->{'time'}); print &ui_table_row($text{'view_time'}, sprintf("%2.2d/%s/%4.4d %2.2d:%2.2d:%2.2d", $tm[3], $text{"smonth_".($tm[4]+1)}, $tm[5]+1900, $tm[2], $tm[1], $tm[0])); if ($act->{'webmin'}) { print &ui_table_row($text{'view_host'}, $act->{'webmin'}); } print &ui_table_end(),"
\n"; # display modified files $rbcount = 0; foreach $d (&list_diffs($act)) { local $t = $text{"view_type_".$d->{'type'}}; local $rb; if ($d->{'type'} eq 'create' || $d->{'type'} eq 'modify' || $d->{'type'} eq 'delete') { ($rb) = grep { $_->{'file'} eq $d->{'object'} } @files; } local $cbox = @files ? &ui_checkbox("r", $d->{'object'}, "", 1, undef, !$rb) : undef; $rbcount++ if ($rb); if ($t =~ /\$2/ || !$d->{'diff'}) { # Diff is just a single line message print &ui_table_start($cbox. &text("view_type_".$d->{'type'}, "$d->{'object'}", "".&html_escape($d->{'diff'}).""), "width=100%", 2); print &ui_table_end(); } else { # Show multi-line diff print &ui_table_start($cbox.&text("view_type_".$d->{'type'}, "$d->{'object'}"), "width=100%", 2); print &ui_table_row(undef, "
".&html_escape($d->{'diff'})."", 2);
if ($d->{'input'}) {
# And input too
print &ui_table_row(undef,
"".&text('view_input')."".&html_escape($d->{'input'})."",2);
}
print &ui_table_end();
}
$anydiffs++;
}
if ($rbcount) {
print &ui_links_row([ &select_all_link("r"),
&select_invert_link("r") ]);
}
print "$text{'view_nofiles'}\n" if (!$anydiffs); # Show rollback button if (@files && $rbcount) { print &ui_form_end([ [ "rollback", $text{'view_rollback2'} ] ]); } &ui_print_footer($ENV{'HTTP_REFERER'}, $text{'search_return'}, "", $text{'index_return'});