📄 prefs_report.c
字号:
n(restriction_2_key), n(restriction_2_value), n(restriction_3_key), n(restriction_3_value))); fill_list(list, subset); subset_free(subset);}static voidreports_clear(textview) GtkWidget *textview;{ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); gtk_text_buffer_set_text(buffer, "", -1);}static voidreports_fill(ctrls, textview) struct arglist *ctrls; GtkWidget *textview;{ char *restriction_1_key = g_object_get_data(G_OBJECT(textview), "restriction_1_key"); char *restriction_1_value = g_object_get_data(G_OBJECT(textview), "restriction_1_value"); char *restriction_2_key = g_object_get_data(G_OBJECT(textview), "restriction_2_key"); char *restriction_2_value = g_object_get_data(G_OBJECT(textview), "restriction_2_value"); char *restriction_3_key = g_object_get_data(G_OBJECT(textview), "restriction_3_key"); char *restriction_3_value = g_object_get_data(G_OBJECT(textview), "restriction_3_value"); char *restriction_4_key = g_object_get_data(G_OBJECT(textview), "restriction_4_key"); char *restriction_4_value = g_object_get_data(G_OBJECT(textview), "restriction_4_value"); char *sort_key = g_object_get_data(G_OBJECT(textview), "sort_key"); struct subset * subset; struct subset * walk; int be = (int)arg_get_value(ctrls, "BE"); GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); GtkTextIter iter; if (be < 0) return; subset = x(query_backend(be, "SELECT %s,severity FROM results" " WHERE %s = '%s' AND %s = '%s' AND %s = '%s' AND %s = '%s'", sort_key, n(restriction_1_key), n(restriction_1_value), n(restriction_2_key), n(restriction_2_value), n(restriction_3_key), n(restriction_3_value), n(restriction_4_key), n(restriction_4_value))); walk = subset; while(walk) { gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert(buffer, &iter, subset_value(walk), -1); walk = subset_next(walk); if(walk) { gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert(buffer, &iter, "\n" "==================================" "==================================" "\n", -1); } } subset_free(subset);}/* * Callbacks */static voidon_menu_item_subnet_selected(item, list) GtkMenuItem * item; GtkWidget * list;{ char * old_key = gtk_object_get_data(GTK_OBJECT(list), "sort_key"); char * new_key = gtk_object_get_data(GTK_OBJECT(item), "sort_key"); char * k; int idx_list = -1, idx_this_list = -1; int i; if(!strcmp(old_key, new_key)) { return; } for(i=0;i<4;i++) { if(Lists[i] == list) { idx_this_list = i; break; } } for(i=0;i<4;i++) { k = gtk_object_get_data(GTK_OBJECT(Lists[i]), "sort_key"); if((new_key != NULL) && (k != NULL) && (strcmp(new_key, k) == 0)) { idx_list = i; break; } } if(idx_list >= 0) { func_fill_t fill_a, fill_b; int min; struct arglist * ctrls; GtkWidget * optionmenu; GtkWidget * t; gtk_object_set_data(GTK_OBJECT(Lists[idx_this_list]), "sort_key", new_key); gtk_object_set_data(GTK_OBJECT(Lists[idx_list]), "sort_key", old_key); min = idx_this_list > idx_list ? idx_list:idx_this_list; fill_a = (func_fill_t) gtk_object_get_data(GTK_OBJECT(Lists[idx_this_list]), "fill"); fill_b = (func_fill_t) gtk_object_get_data(GTK_OBJECT(Lists[idx_list]), "fill"); ctrls = (struct arglist *)gtk_object_get_data(GTK_OBJECT(Lists[min]), "ctrls"); /* printf("Changing option for %d\n", idx_list); */ optionmenu = gtk_object_get_data(GTK_OBJECT(Lists[idx_list]), "optionmenu"); gtk_option_menu_set_history(GTK_OPTION_MENU(optionmenu), idx_this_list); empty_list(Lists[idx_list]); empty_list(Lists[idx_this_list]); if(fill_a)fill_a(ctrls, Lists[idx_this_list]); if(fill_b)fill_b(ctrls, Lists[idx_list]); t = Lists[idx_list]; Lists[idx_list] = Lists[idx_this_list]; Lists[idx_this_list] = t; }}static voidon_subnets_list_selection_changed(list, ctrls) GtkList *list; struct arglist * ctrls;{ char * sort_value; GtkWidget * hosts = gtk_object_get_data(GTK_OBJECT(list), "hosts_list"); char * sort_key = gtk_object_get_data(GTK_OBJECT(list), "sort_key"); empty_list(hosts); if(list->selection) { sort_value = gtk_object_get_data(GTK_OBJECT(list->selection->data), sort_key); replace_data(GTK_OBJECT(hosts), "restriction_1_key", estrdup(sort_key)); replace_data(GTK_OBJECT(hosts), "restriction_1_value", estrdup(sort_value)); if(sort_value)hosts_fill(ctrls, hosts); }}static voidon_hosts_list_selection_changed(list, ctrls) GtkList *list; struct arglist * ctrls;{ char * sort_value; char * sort_key = gtk_object_get_data(GTK_OBJECT(list), "sort_key"); GtkWidget * ports = gtk_object_get_data(GTK_OBJECT(list), "ports_list"); char * restriction_1_key = gtk_object_get_data(GTK_OBJECT(list), "restriction_1_key"); char * restriction_1_value = gtk_object_get_data(GTK_OBJECT(list), "restriction_1_value"); empty_list(ports); if(list->selection) { sort_value = gtk_object_get_data(GTK_OBJECT(list->selection->data), sort_key); /* printf("host> set restriction1 = %s (%s)\n", restriction_1_key,restriction_1_value); */ replace_data(GTK_OBJECT(ports), "restriction_1_key", estrdup(restriction_1_key)); replace_data(GTK_OBJECT(ports), "restriction_1_value", estrdup(restriction_1_value)); replace_data(GTK_OBJECT(ports), "restriction_2_key", estrdup(sort_key)); replace_data(GTK_OBJECT(ports), "restriction_2_value", estrdup(sort_value)); if(sort_value)ports_fill(ctrls, ports); }}static voidon_ports_list_selection_changed(list, ctrls) GtkList * list; struct arglist * ctrls;{ char * sort_value; char * sort_key = gtk_object_get_data(GTK_OBJECT(list), "sort_key"); GtkWidget * severity = gtk_object_get_data(GTK_OBJECT(list), "severity_list"); char * restriction_1_key = gtk_object_get_data(GTK_OBJECT(list), "restriction_1_key"); char * restriction_1_value = gtk_object_get_data(GTK_OBJECT(list), "restriction_1_value"); char * restriction_2_key = gtk_object_get_data(GTK_OBJECT(list), "restriction_2_key"); char * restriction_2_value = gtk_object_get_data(GTK_OBJECT(list), "restriction_2_value"); empty_list(severity); if(list->selection) { sort_value = gtk_object_get_data(GTK_OBJECT(list->selection->data), sort_key); replace_data(GTK_OBJECT(severity), "restriction_1_key", estrdup(restriction_1_key)); replace_data(GTK_OBJECT(severity), "restriction_1_value", estrdup(restriction_1_value)); replace_data(GTK_OBJECT(severity), "restriction_2_key", estrdup(restriction_2_key)); replace_data(GTK_OBJECT(severity), "restriction_2_value", estrdup(restriction_2_value)); replace_data(GTK_OBJECT(severity), "restriction_3_key", estrdup(sort_key)); replace_data(GTK_OBJECT(severity), "restriction_3_value", estrdup(sort_value)); if(sort_value)severity_fill(ctrls, severity); }}static voidon_severity_list_selection_changed(list, ctrls) GtkList * list; struct arglist * ctrls;{ char * sort_value; char * sort_key = gtk_object_get_data(GTK_OBJECT(list), "sort_key"); GtkWidget * reports = gtk_object_get_data(GTK_OBJECT(list), "reports_list"); char * restriction_1_key = gtk_object_get_data(GTK_OBJECT(list), "restriction_1_key"); char * restriction_1_value = gtk_object_get_data(GTK_OBJECT(list), "restriction_1_value"); char * restriction_2_key = gtk_object_get_data(GTK_OBJECT(list), "restriction_2_key"); char * restriction_2_value = gtk_object_get_data(GTK_OBJECT(list), "restriction_2_value"); char * restriction_3_key = gtk_object_get_data(GTK_OBJECT(list), "restriction_3_key"); char * restriction_3_value = gtk_object_get_data(GTK_OBJECT(list), "restriction_3_value"); reports_clear(reports); if(list->selection) { sort_value = gtk_object_get_data(GTK_OBJECT(list->selection->data), sort_key); replace_data(GTK_OBJECT(reports), "restriction_1_key", estrdup(restriction_1_key)); replace_data(GTK_OBJECT(reports), "restriction_1_value", estrdup(restriction_1_value)); replace_data(GTK_OBJECT(reports), "restriction_2_key", estrdup(restriction_2_key)); replace_data(GTK_OBJECT(reports), "restriction_2_value", estrdup(restriction_2_value)); replace_data(GTK_OBJECT(reports), "restriction_3_key", estrdup(restriction_3_key)); replace_data(GTK_OBJECT(reports), "restriction_3_value", estrdup(restriction_3_value)); replace_data(GTK_OBJECT(reports), "restriction_4_key", estrdup(sort_key)); replace_data(GTK_OBJECT(reports), "restriction_4_value", estrdup(sort_value)); if(sort_value)reports_fill(ctrls, reports); }}/* * Build a vbox element with the report text widget. * be is a handle id of the backend. The backend functions * know what to do with it. */struct arglist *prefs_dialog_report(void){ struct arglist * ctrls = emalloc(sizeof(struct arglist)); GtkWidget * vbox; GtkTooltips * tooltips; GtkWidget *hpaned1; GtkWidget *vpaned1; GtkWidget *vbox2; GtkWidget *subnet; GtkWidget *subnet_menu; GtkWidget *glade_menuitem; GtkWidget *scrolled_window_subnet; GtkWidget *list_subnets; GtkWidget *vbox3; GtkWidget *optionmenu2; GtkWidget *optionmenu2_menu; GtkWidget *hosts_scrolled_window; GtkWidget *list_hosts; GtkWidget *vpaned2; GtkWidget *hpaned2; GtkWidget *vbox4; GtkWidget *optionmenu3; GtkWidget *optionmenu3_menu; GtkWidget *scrolledwindow3; GtkWidget *list_ports; GtkWidget *vbox5; GtkWidget *optionmenu4; GtkWidget *optionmenu4_menu; GtkWidget *scrolledwindow4; GtkWidget *list_severity; GtkWidget *vbox6; GtkWidget *scrolledwindow5; GtkWidget *list_reports; GtkWidget *hbox; GtkWidget *scan_timestamps; tooltips = gtk_tooltips_new(); arg_add_value(ctrls, "BE", ARG_INT, sizeof(int), (void *)-1); vbox = gtk_vbox_new(FALSE, FALSE); arg_add_value(ctrls, "VBOX", ARG_PTR, -1, vbox); gtk_widget_show(vbox); Lists[0] = list_subnets = gtk_list_new (); Lists[1] = list_hosts = gtk_list_new (); Lists[2] = list_ports = gtk_list_new (); Lists[3] = list_severity= gtk_list_new (); list_reports = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(list_reports), FALSE); scan_timestamps = gtk_label_new("Foo"); gtk_widget_show(scan_timestamps); gtk_box_pack_end(GTK_BOX(vbox), scan_timestamps, FALSE, FALSE, 2); arg_add_value(ctrls, "SCAN_TIMESTAMPS", ARG_PTR, -1, scan_timestamps); hpaned1 = gtk_hpaned_new (); gtk_widget_ref(hpaned1); gtk_paned_set_position(GTK_PANED(hpaned1), 200); gtk_object_set_data_full(GTK_OBJECT (vbox), "hpaned1", hpaned1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (hpaned1); gtk_box_pack_start(GTK_BOX(vbox), hpaned1, TRUE, TRUE, 0); hbox = gtk_hbox_new(TRUE, 10); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_widget_show(hbox); vpaned1 = gtk_vpaned_new (); gtk_widget_ref(vpaned1); gtk_paned_set_position(GTK_PANED(vpaned1), 200); gtk_object_set_data_full(GTK_OBJECT (vbox), "vpaned1", vpaned1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(vpaned1); gtk_container_add(GTK_CONTAINER (hpaned1), vpaned1); vbox2 = gtk_vbox_new(FALSE, 0); gtk_widget_ref(vbox2); gtk_object_set_data_full(GTK_OBJECT(vbox), "vbox2", vbox2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(vbox2); gtk_container_add(GTK_CONTAINER (vpaned1), vbox2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -