Started work on UI for debug mode
authorJamie Cameron <jcameron@webmin.com>
Mon, 21 Apr 2008 22:46:41 +0000 (22:46 +0000)
committerJamie Cameron <jcameron@webmin.com>
Mon, 21 Apr 2008 22:46:41 +0000 (22:46 +0000)
web-lib.pl
webmin/change_debug.cgi [new file with mode: 0644]
webmin/edit_debug.cgi [new file with mode: 0644]
webmin/index.cgi
webmin/lang/en
webmin/webmin-lib.pl

index bde7f4d..3a10b14 100755 (executable)
@@ -45,6 +45,8 @@ $remote_error_handler = "error";
 %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
diff --git a/webmin/change_debug.cgi b/webmin/change_debug.cgi
new file mode 100644 (file)
index 0000000..2f0f632
--- /dev/null
@@ -0,0 +1,46 @@
+#!/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("");
+
diff --git a/webmin/edit_debug.cgi b/webmin/edit_debug.cgi
new file mode 100644 (file)
index 0000000..c285e41
--- /dev/null
@@ -0,0 +1,39 @@
+#!/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'});
+
index e39535e..3d588f1 100755 (executable)
@@ -14,7 +14,8 @@ $ver = &get_webmin_version();
            "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'},
@@ -25,7 +26,7 @@ $ver = &get_webmin_version();
             $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",
@@ -33,7 +34,7 @@ $ver = &get_webmin_version();
            "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'});
index 25c81f7..6cdb46e 100644 (file)
@@ -806,3 +806,21 @@ refreshmods_title=Refresh Modules
 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
index d4805b9..ad89b05 100644 (file)
@@ -41,6 +41,8 @@ $detect_operating_system_cache = "$module_config_directory/oscache";
 @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");