Nmap Development mailing list archives

[NmapFE PATCH] Use spin button for verbosity/debugging levels


From: Kris Katterjohn <kjak () ispwest com>
Date: Mon, 25 Sep 2006 00:06:48 -0500

The attached patch uses a spin button for selecting the verbosity and
debugging levels instead of the...limited...way that's used now. I like
the debug info! :)

Verbose goes from 0-2 and debugging goes from 0-9. "-v" and "-vv" are
used for verbose; "-d" and "-d[2-9]" are used for debugging.

I don't know a lot of GTK, so I mostly copied from other portions of the
code. When I tested it everything worked great, though :)

It's a diff against 4.20ALPHA7. 'opt.uid' is used in this patch, so if
you apply my other patch that uses 'opt.isr00t' instead, these need to
be changed also.

*yawn* time for bed

Thanks,
Kris Katterjohn
--- x/nmapfe/nmapfe.c   2006-08-24 20:47:59.000000000 -0500
+++ y/nmapfe/nmapfe.c   2006-09-24 23:50:56.000000000 -0500
@@ -234,15 +234,6 @@ static gchar *protportEntries[] = {
     NULL
 };
 
-static gchar *verboseEntries[] = {
-    "Quiet",
-    "Verbose",
-    "Very Verbose",
-    "Debug",
-    "Verbose Debug",
-    NULL
-};
-
 static gchar *outputFormatEntries[] = {
     "Normal",
     "grep-able",
@@ -433,7 +424,6 @@ GtkAdjustment *adjust;
   opt.throttleValue = NORMAL_THROTTLE;
   opt.resolveValue = DEFAULT_RESOLVE;
   opt.protportValue = DEFAULT_PROTPORT;
-  opt.verboseValue = QUIET_VERBOSE;
   opt.outputFormatValue = NORMAL_OUTPUT;
 
 #ifdef WIN32
@@ -1213,29 +1203,52 @@ GtkAdjustment *adjust;
     gtk_widget_show_all(frame);
   }
 
-  /* Verbosity frame */
-  {
-    gint i;
-
-    frame = gtk_frame_new("Verbosity");
-    gtk_table_attach_defaults(GTK_TABLE(nbpage), frame, 0, 1, 1, 2);
-
-    vbox = gtk_vbox_new(FALSE, 5);
-    gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
-    gtk_container_add(GTK_CONTAINER(frame), vbox);
-
-    opt.verboseType = gtk_combo_box_new_text();
+  /* Verbosity & Debugging frame */
+  frame = gtk_frame_new("Verbosity & Debugging Levels");
+  gtk_table_attach_defaults(GTK_TABLE(nbpage), frame, 0, 1, 1, 2);
 
-    for (i = 0; verboseEntries[i]; i++) {
-      gtk_combo_box_append_text(GTK_COMBO_BOX(opt.verboseType), verboseEntries[i]);
-    }
+  table = gtk_table_new(2, 2, FALSE);
+  gtk_container_set_border_width(GTK_CONTAINER(table), 5);
+  gtk_container_add(GTK_CONTAINER(frame), table);
 
-    g_signal_connect(G_OBJECT(opt.verboseType), "changed",
-            G_CALLBACK (verboseType_cb), NULL);
+  opt.verbose = gtk_check_button_new_with_label("Verbosity");
+  if (opt.uid != 0)
+    gtk_widget_set_sensitive(GTK_WIDGET(opt.verbose), FALSE);
+  gtk_table_attach_defaults(GTK_TABLE(table), opt.verbose, 0, 1, 0, 1);
+  gtk_widget_show(opt.verbose);
+
+  adjust = (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 2.0, 1.0, 10.0, 10.0);
+  opt.verboseValue = gtk_spin_button_new(adjust, 1.0, 0);
+  gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.verboseValue), TRUE);
+  g_signal_connect(GTK_OBJECT(opt.verbose), "released",
+                  GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.verboseValue);
+  g_signal_connect(GTK_OBJECT(opt.verboseValue), "changed",
+                  GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL);
+  if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.verbose)->active))
+    gtk_widget_set_sensitive(GTK_WIDGET(opt.verboseValue), FALSE);
+  gtk_table_attach_defaults(GTK_TABLE(table), opt.verboseValue, 1, 2, 0, 1);
+  gtk_widget_show(opt.verboseValue);
+
+  opt.debug = gtk_check_button_new_with_label("Debugging");
+  if (opt.uid != 0)
+    gtk_widget_set_sensitive(GTK_WIDGET(opt.debug), FALSE);
+  gtk_table_attach_defaults(GTK_TABLE(table), opt.debug, 0, 1, 1, 2);
+  gtk_widget_show(opt.debug);
+
+  adjust = (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 9.0, 1.0, 10.0, 10.0);
+  opt.debugValue = gtk_spin_button_new(adjust, 1.0, 0);
+  gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.debugValue), TRUE);
+  g_signal_connect(GTK_OBJECT(opt.debug), "released",
+                  GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.debugValue);
+  g_signal_connect(GTK_OBJECT(opt.debugValue), "changed",
+                  GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL);
+  if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.debug)->active))
+    gtk_widget_set_sensitive(GTK_WIDGET(opt.debugValue), FALSE);
+  gtk_table_attach_defaults(GTK_TABLE(table), opt.debugValue, 1, 2, 1, 2);
+  gtk_widget_show(opt.debugValue);
 
-    gtk_box_pack_start(GTK_BOX(vbox), opt.verboseType, TRUE, FALSE, 0);
-    gtk_widget_show_all (frame);
-  }
+  gtk_widget_show(table);
+  gtk_widget_show(frame);
 
 
   frame = gtk_frame_new("Source");
@@ -1455,7 +1468,6 @@ GtkAdjustment *adjust;
   gtk_combo_box_set_active(GTK_COMBO_BOX (opt.outputFormatType), opt.outputFormatValue);
   /* Fifth Notebook - Options */
   gtk_combo_box_set_active(GTK_COMBO_BOX (opt.resolveType), opt.resolveValue);
-  gtk_combo_box_set_active(GTK_COMBO_BOX (opt.verboseType), opt.verboseValue);
 
   display_nmap_command();
 

--- x/nmapfe/nmapfe.h   2006-08-24 20:47:59.000000000 -0500
+++ y/nmapfe/nmapfe.h   2006-09-24 23:50:56.000000000 -0500
@@ -292,9 +292,11 @@ struct NmapFEoptions {
   /* DNS options */
   GtkWidget *resolveType;
   guint resolveValue;
-  /* verbosity options */
-  GtkWidget *verboseType;
-  guint verboseValue;
+  /* verbosity/debugging options */
+  GtkWidget *verbose;
+  GtkWidget *verboseValue;
+  GtkWidget *debug;
+  GtkWidget *debugValue;
   /* source options */
   GtkWidget *useSourceDevice;
   GtkWidget *SourceDevice;

--- x/nmapfe/nmapfe_sig.c       2006-08-24 20:47:59.000000000 -0500
+++ y/nmapfe/nmapfe_sig.c       2006-09-24 23:51:52.000000000 -0500
@@ -577,6 +577,28 @@ static int command_size = 0;
   else if (opt.resolveValue == NEVER_RESOLVE)
     strcat(command, "-n ");            
 
+  if (GTK_TOGGLE_BUTTON(opt.verbose)->active) {
+  int val = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(opt.verboseValue));
+
+    if (val == 1)
+      strcat(command, "-v ");
+    else if (val == 2)
+      strcat(command, "-vv ");
+  }
+
+  if (GTK_TOGGLE_BUTTON(opt.debug)->active) {
+  int val = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(opt.debugValue));
+
+    if (val > 0) {
+      strcat(command, "-d");
+
+      if (val > 1)
+        sprintf(command+strlen(command), "%d", val);
+
+      strcat(command, " ");
+    }
+  }
+
   if (GTK_WIDGET_SENSITIVE(opt.useDecoy) &&
       GTK_TOGGLE_BUTTON(opt.useDecoy)->active) {
   const char *val = gtk_entry_get_text(GTK_ENTRY(opt.Decoy));
@@ -667,15 +689,6 @@ static int command_size = 0;
     }
   }
  
-  if (opt.verboseValue == V1_VERBOSE)
-    strcat(command, "-v ");
-  else if (opt.verboseValue == V2_VERBOSE)
-    strcat(command, "-vv ");
-  else if (opt.verboseValue == D1_VERBOSE)
-    strcat(command, "-d ");
-  else if (opt.verboseValue == D2_VERBOSE)
-    strcat(command, "-d2 ");
-
   strcat(command, gtk_entry_get_text(GTK_ENTRY(opt.targetHost)));
 
   return(command);
@@ -863,14 +876,6 @@ void protportType_cb(GtkComboBox *w, gpo
 
 
 /* callback for factory generated menu items: set variable to action */
-void verboseType_cb(GtkComboBox *w, gpointer d)
-{
-  opt.verboseValue = gtk_combo_box_get_active(w);
-  display_nmap_command();
-}
-
-
-/* callback for factory generated menu items: set variable to action */
 void outputFormatType_cb(GtkComboBox *w, gpointer d)
 {
   opt.outputFormatValue = gtk_combo_box_get_active(w);

--- x/nmapfe/nmapfe_sig.h       2006-08-24 20:47:59.000000000 -0500
+++ y/nmapfe/nmapfe_sig.h       2006-09-24 23:50:56.000000000 -0500
@@ -132,7 +132,6 @@ void mainMenu_fcb(int *variable, guint a
 void throttleType_cb (GtkComboBox *, gpointer);
 void resolveType_cb (GtkComboBox *, gpointer);
 void protportType_cb (GtkComboBox *, gpointer);
-void verboseType_cb (GtkComboBox *, gpointer);
 void outputFormatType_cb (GtkComboBox *, gpointer);
 
 void pingButton_toggled_cb(GtkWidget *ping_button, void *ignored);

_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://SecLists.Org

Current thread: