%number_to_month_map = reverse(%month_to_number_map);
$main::initial_process_id ||= $$;
$main::http_cache_directory = $ENV{'WEBMIN_VAR'}."/cache";
+$main::default_debug_log_size = 10*1024*1024;
+$main::default_debug_log_file = $ENV{'WEBMIN_VAR'}."/webmin.debug";
# unique
# Returns the unique elements of some array
--- /dev/null
+#!/usr/local/bin/perl
+# Save debug mode options
+
+require './webmin-lib.pl';
+&ReadParse();
+&error_setup($text{'debug_err'});
+
+# Validate and store inputs
+&lock_file("$config_directory/config");
+$gconfig{'debug_enabled'} = $in{'debug_enabled'};
+
+# What to log
+$count = 0;
+foreach $w (@debug_what_events) {
+ $gconfig{'debug_what_'.$w} = $in{'debug_what_'.$w};
+ $count++ if ($in{'debug_what_'.$w});
+ }
+$count || &error($text{'debug_ewhat'});
+
+# Log file
+if ($in{'debug_file_def'}) {
+ delete($gconfig{'debug_file'});
+ }
+else {
+ $in{'debug_file'} =~ /^(.*\/)([^\/]+)$/ ||
+ &error($text{'debug_efile'});
+ -d $1 || &error(&text('debug_edir', "$1"));
+ $gconfig{'debug_file'} = $in{'debug_file'};
+ }
+
+# Size before clearing
+if ($in{'debug_size_def'}) {
+ delete($gconfig{'debug_size'});
+ }
+else {
+ $in{'debug_size'} =~ /^\d+$/ || &error($text{'debug_esize'});
+ $gconfig{'debug_size'} = $in{'debug_size'}*$in{'debug_size_units'};
+ }
+
+# Write out
+&write_file("$config_directory/config", \%gconfig);
+&unlock_file("$config_directory/config");
+
+&webmin_log("debug");
+&redirect("");
+
--- /dev/null
+#!/usr/local/bin/perl
+# Display debugging mode options
+
+require './webmin-lib.pl';
+&ui_print_header(undef, $text{'debug_title'}, "");
+
+print &ui_form_start("change_debug.cgi", "post");
+print &ui_table_start($text{'debug_header'}, undef, 2);
+
+# Debugging mode enabled
+print &ui_table_row($text{'debug_enabled'},
+ &ui_yesno_radio("enabled", $gconfig{'debug_enabled'}));
+
+# What to log
+print &ui_table_row($text{'debug_what'},
+ join("<br>\n",
+ map { &ui_checkbox('debug_what_'.$_, 1, $text{'debug_what_'.$_},
+ $gconfig{'debug_what_'.$_}) }
+ @debug_what_events));
+
+# Log to where
+print &ui_table_row($text{'debug_file'},
+ &ui_opt_textbox("debug_file", $gconfig{'debug_file'},
+ 50, $text{'default'}.
+ " (<tt>$main::default_debug_log_file</tt>)"));
+
+# Maximum size
+print &ui_table_row($text{'debug_size'},
+ &ui_radio("debug_size_def", $gconfig{'debug_size'} ? 0 : 1,
+ [ [ 1, $text{'default'}.
+ " (".&nice_size($main::default_debug_log_size).")" ],
+ [ 0, &ui_bytesbox("debug_size", $gconfig{'debug_size'}) ] ]
+ ));
+
+print &ui_table_end();
+print &ui_form_end([ [ "save", $text{'save'} ] ]);
+
+&ui_print_footer("", $text{'index_return'});
+
"edit_upgrade.cgi", "edit_session.cgi", "edit_assignment.cgi",
"edit_categories.cgi", "edit_descs.cgi", "edit_themes.cgi",
"edit_referers.cgi", "edit_anon.cgi", "edit_lock.cgi",
- "edit_mobile.cgi", "edit_blocked.cgi", "edit_advanced.cgi" );
+ "edit_mobile.cgi", "edit_blocked.cgi", "edit_advanced.cgi",
+ "edit_debug.cgi" );
@wtitles = ( $text{'access_title'}, $text{'bind_title'},
$text{'log_title'}, $text{'proxy_title'},
$text{'ui_title'}, $text{'mods_title'},
$text{'themes_title'}, $text{'referers_title'},
$text{'anon_title'}, $text{'lock_title'},
$text{'mobile_title'}, $text{'blocked_title'},
- $text{'advanced_title'} );
+ $text{'advanced_title'}, $text{'debug_title'}, );
@wicons = ( "images/access.gif", "images/bind.gif", "images/log.gif",
"images/proxy.gif", "images/ui.gif", "images/mods.gif",
"images/os.gif", "images/lang.gif", "images/startpage.gif",
"images/assignment.gif", "images/categories.gif",
"images/descs.gif", "images/themes.gif", "images/referers.gif",
"images/anon.gif", "images/lock.gif", "images/mobile.gif",
- "images/blocked.gif", "images/advanced.gif" );
+ "images/blocked.gif", "images/advanced.gif", "images/debug.gif" );
if ($gconfig{'eazel'}) {
push(@wlinks, "edit_syslet.cgi");
push(@wtitles, $text{'syslet_title'});
refreshmods_installed=Checking for usable Webmin modules ..
refeshmods_counts=.. found $2 with installed applications, $1 not installed.
+debug_title=Debugging Log File
+debug_header=Webmin debug log file options
+debug_enabled=Debug log enabled?
+debug_what=Events to log
+debug_what_start=Scripts starting and stopping
+debug_what_write=Files opened for writing
+debug_what_read=Files opened for reading
+debug_what_diff=Configuration file diffs
+debug_what_cmd=Commands executed
+debug_what_net=Network connections made
+debug_what_sql=SQL executed
+debug_file=Debugging log file
+debug_size=Maximum size for log file
+debug_err=Failed to save debugging options
+debug_ewhat=No events to log selected
+debug_efile=Debug log file must be an absolute path
+debug_edir=Directory '$1' for debug log file does not exist
+debug_esize=Maximum size must be a number
@webmin_date_formats = ( "dd/mon/yyyy", "dd/mm/yyyy",
"mm/dd/yyyy", "yyyy/mm/dd" );
+@debug_what_events = ( 'start', 'read', 'write', 'diff', 'cmd', 'net', 'sql' );
+
sub setup_ca
{
local $adir = &module_root_directory("acl");