📄 prefs_dialog.c
字号:
menuitem = gtk_menu_item_new_with_mnemonic(_("_Users Manual")); menuitem_add(menuitem, submenu, NULL, NULL, GTK_SIGNAL_FUNC(show_users_manual)); menuitem = gtk_menu_item_new_with_mnemonic(_("_About")); menuitem_add(menuitem, submenu, NULL, NULL, GTK_SIGNAL_FUNC(prefs_dialog_about));/* hbox with toolbar+scopetree-vbox and notebook */ hbox = gtk_hbox_new(FALSE, 4); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 0); hpaned = gtk_hpaned_new(); gtk_widget_ref(hpaned); gtk_paned_set_position(GTK_PANED(hpaned), 210); gtk_widget_show(hpaned); gtk_box_pack_start(GTK_BOX(hbox), hpaned, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 4); vbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox); gtk_container_add(GTK_CONTAINER(hpaned), vbox);/* * The Toolbar */ toolbar = gtk_toolbar_new(); gtk_widget_show(toolbar); gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS); arg_add_value(ctrls, "TOOLBAR", ARG_PTR, -1, toolbar); icon = gtk_image_new_from_stock("gtk-help", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Scan Assistant"), _("Scan Assistant"), NULL, icon, GTK_SIGNAL_FUNC(prefs_scan_assistant), MainDialog); gtk_widget_show(toolbar_button); icon = gtk_image_new_from_stock("gtk-new", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("New"), _("New"), NULL, icon, GTK_SIGNAL_FUNC(scopetree_context_new), NULL); gtk_widget_show(toolbar_button); icon = gtk_image_new_from_stock("gtk-delete", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Delete"), _("Delete"), NULL, icon, GTK_SIGNAL_FUNC(scopetree_context_delete), NULL); gtk_widget_show(toolbar_button); arg_add_value(ctrls, "DELETECONTEXT_BUTTON", ARG_PTR, -1, toolbar_button); gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); icon = gtk_image_new_from_stock("nessus-connect", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Connect"), _("Connect"), NULL, icon, GTK_SIGNAL_FUNC(prefs_dialog_auth_connect), MainDialog); gtk_widget_show(toolbar_button); arg_add_value(ctrls, "CONNECT_BUTTON", ARG_PTR, -1, toolbar_button); icon = gtk_image_new_from_stock("nessus-disconnect", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Disconnect"), _("Disconnect"), NULL, icon, GTK_SIGNAL_FUNC(prefs_dialog_auth_disconnect), MainDialog); gtk_widget_show(toolbar_button); arg_add_value(ctrls, "DISCONNECT_BUTTON", ARG_PTR, -1, toolbar_button); gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); icon = gtk_image_new_from_stock("gtk-execute", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Execute"), _("Execute"), NULL, icon, GTK_SIGNAL_FUNC(prefs_dialog_execute), ctrls); gtk_widget_show(toolbar_button); arg_add_value(ctrls, "EXECSCOPE_BUTTON", ARG_PTR, -1, toolbar_button);#if 0 icon = gtk_image_new_from_stock("gtk-stop", gtk_toolbar_get_icon_size(GTK_TOOLBAR(toolbar))); toolbar_button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Stop"), _("Stop"), NULL, icon, GTK_SIGNAL_FUNC(prefs_dialog_execute), NULL); gtk_widget_show(toolbar_button); gtk_widget_set_sensitive(toolbar_button, FALSE);#endif/* * The Scope Tree */ prefs_scope_tree = prefs_dialog_scope_tree(context); frame = arg_get_value(prefs_scope_tree, "FRAME"); gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); arg_add_value(ctrls, "SCOPETREE", ARG_PTR, -1, prefs_scope_tree);/* * The Context Frame */ frame = gtk_frame_new(NULL); gtk_frame_set_label(GTK_FRAME(frame), _("Context")); gtk_widget_show(frame); gtk_container_add(GTK_CONTAINER(hpaned), frame); arg_add_value(ctrls, "CONTEXTFRAME", ARG_PTR, -1, frame);/* * The Context Notebook */ notebook = gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP); gtk_container_add(GTK_CONTAINER(frame), notebook); gtk_widget_show(notebook); arg_add_value(ctrls, "CONTEXTNOTEBOOK", ARG_PTR, -1, notebook);/* * We set up the pages of our notebook */ prefs_comment = prefs_dialog_comment(); prefs_options = prefs_dialog_options(context, ctrls); prefs_report = prefs_dialog_report(); arg_add_value(ctrls, "COMMENT", ARG_ARGLIST, -1, prefs_comment); arg_add_value(ctrls, "OPTIONS", ARG_ARGLIST, -1, prefs_options); arg_add_value(ctrls, "REPORT", ARG_ARGLIST, -1, prefs_report);/* * and we append them to it */ /* Tab "Comments" */ label = gtk_label_new(_("Comments")); vbox = arg_get_value(prefs_comment, "VBOX"); gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label); /* Tab "Options" */ label = gtk_label_new(_("Options")); vbox = arg_get_value(prefs_options, "VBOX"); gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label); /* Tab "Report" */ label = gtk_label_new(_("Report")); vbox = arg_get_value(prefs_report, "VBOX"); gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label); g_signal_connect_after(G_OBJECT(notebook), "switch-page", G_CALLBACK(prefs_context_switch_notebookpage), NULL);/* * Message Log */ /* The frame */ msglogframe = gtk_frame_new(NULL); gtk_widget_show(msglogframe); gtk_box_pack_start(GTK_BOX(box), msglogframe, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(msglogframe), 4); arg_add_value(ctrls, "MSGLOGFRAME", ARG_PTR, -1, msglogframe); /* The label for the frame */ label = gtk_label_new(_("Message log")); gtk_widget_show(label); gtk_frame_set_label_widget(GTK_FRAME(msglogframe), label); /* The scrolled window */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow); gtk_container_add(GTK_CONTAINER(msglogframe), scrolledwindow); gtk_container_set_border_width(GTK_CONTAINER(scrolledwindow), 4); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_CORNER_TOP_RIGHT); arg_add_value(ctrls, "MSGLOGSCROLL", ARG_PTR, -1, scrolledwindow); /* The text view */ textview = gtk_text_view_new(); gtk_widget_show(textview); gtk_container_add(GTK_CONTAINER(scrolledwindow), textview); gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE); gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)), _("Welcome to NessusClient, http://www.nessus.org/" "\nCopyright 1998-2005 by Renaud Deraison" "\nAuthors: Renaud Deraison, Thomas Arendsen Hein, Jan-Oliver Wagner" ", Bernhard Herzog, Michel Arboi (SSL-Support), Bruce Verderaime (Pie/Charts)" "\n"), -1); arg_add_value(ctrls, "MSGLOGTEXT", ARG_PTR, -1, textview); /* The whole Message Log frame is invisible by default */ gtk_widget_hide(msglogframe);/* * Status bar */ hbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox); gtk_box_pack_end(GTK_BOX(box), hbox, FALSE, TRUE, 0); hpaned = gtk_hpaned_new(); gtk_widget_show(hpaned); gtk_box_pack_start(GTK_BOX(hbox), hpaned, TRUE, TRUE, 1); statusbar = gtk_statusbar_new(); gtk_widget_show(statusbar); gtk_paned_pack1(GTK_PANED(hpaned), statusbar, TRUE, FALSE); gtk_widget_set_size_request(statusbar, 200, -1); gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(statusbar), FALSE); statusbar = gtk_statusbar_new(); gtk_widget_show(statusbar); gtk_paned_pack2(GTK_PANED(hpaned), statusbar, TRUE, FALSE); gtk_widget_set_size_request(statusbar, 200, -1); gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(statusbar), FALSE); arg_add_value(ctrls, "CONNECT_STATUSBAR", ARG_PTR, -1, statusbar); gtk_statusbar_push(GTK_STATUSBAR(statusbar), gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "connection"), _("not connected")); icon = gtk_image_new(); gtk_widget_show(icon); gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, TRUE, 0); arg_add_value(ctrls, "CONNECT_ENCRYPTED_IMAGE", ARG_PTR, -1, icon);/* * Final */ menuitem = arg_get_value(ctrls, "TOGGLETOOLBAR_MENUITEM"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), !prefs_get_int(Global, "hide_toolbar")); toggle_toolbar(menuitem, ctrls); menuitem = arg_get_value(ctrls, "TOGGLEMSGLOG_MENUITEM"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), prefs_get_int(Global, "hide_msglog")); toggle_msglog(menuitem, ctrls); prefs_dialog_set_defaults(context, ctrls); prefs_dialog_set_tooltips(ctrls); gtk_widget_show(window);}voidprefs_dialog_set_defaults(context, ctrls) struct context *context; struct arglist *ctrls;{#define EX_NONE 1#define EX_DNS 2#define EX_IP 4#define EX_NFS 8 struct arglist *t, *serv; char *v; int flag = 0; GtkWidget *gtkw; serv = arg_get_value(context->prefs, "SERVER_PREFS"); if(!serv) return; t = arg_get_value(ctrls, "PLUGINS"); gtkw = arg_get_value(t, "ENABLE_DEPS_AT_RUNTIME"); if(gtkw) { v = arg_get_value(serv, "auto_enable_dependencies"); if(arg_get_type(serv, "auto_enable_dependencies") == ARG_INT) { char *s = strdup(v ? "yes" : "no"); arg_set_type(serv, "auto_enable_dependencies", ARG_STRING); arg_set_value(serv, "auto_enable_dependencies", strlen(s), s); v = s; } if(v && !strcmp(v, "yes")) GTK_TOGGLE_BUTTON(gtkw)->active = TRUE; else GTK_TOGGLE_BUTTON(gtkw)->active = FALSE; } gtkw = arg_get_value(t, "SILENT_DEPS"); if(gtkw) { v = arg_get_value(serv, "silent_dependencies"); if(arg_get_type(serv, "silent_dependencies") == ARG_INT) { char *s = strdup(v ? "yes" : "no"); arg_set_type(serv, "silent_dependencies", ARG_STRING); arg_set_value(serv, "silent_dependencies", strlen(s), s); v = s; } if(v && !strcmp(v, "yes")) GTK_TOGGLE_BUTTON(gtkw)->active = TRUE; else GTK_TOGGLE_BUTTON(gtkw)->active = FALSE; } /* * Host expansion options */ t = arg_get_value(ctrls, "TARGET"); gtk_entry_set_text(GTK_ENTRY(arg_get_value(t, "TARGET")), prefs_get_string(context, "targets")); v = arg_get_value(serv, "host_expansion"); if(!v) flag |= EX_NONE; else { if(strstr(v, "dns")) flag = EX_DNS; if(strstr(v, "nfs")) flag |= EX_NFS; if(strstr(v, "none")) flag |= EX_NONE; if(strstr(v, "ip")) flag |= EX_IP; } if(!(flag & EX_NONE)) { GtkWidget *w; w = arg_get_value(t, "DNS_EXPAND"); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(w), (flag & EX_DNS)); } /* * Scan options */ t = arg_get_value(ctrls, "SCAN_OPTIONS"); gtkw = arg_get_value(t, "PING_HOSTS"); v = arg_get_value(serv, "ping_hosts"); if(arg_get_type(serv, "ping_hosts") == ARG_INT) { char *s = emalloc(4); if(v) strncpy(s, "yes", 3); else strncpy(s, "no", 2); arg_set_value(serv, "ping_hosts", strlen(s), s); arg_set_type(serv, "ping_hosts", ARG_STRING); } v = arg_get_value(serv, "ping_hosts"); if(v) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), !strcmp(v, "yes")); gtkw = arg_get_value(t, "REVERSE_LOOKUP"); v = arg_get_value(serv, "reverse_lookup"); if(arg_get_type(serv, "reverse_lookup") == ARG_INT) { char *s = emalloc(4); if(v) strncpy(s, "yes", 3); else strncpy(s, "no", 2); arg_set_value(serv, "reverse_lookup", strlen(s), s); arg_set_type(serv, "reverse_lookup", ARG_STRING); } v = arg_get_value(serv, "reverse_lookup"); if(v) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), !strcmp(v, "yes")); gtkw = arg_get_value(t, "OPTIMIZE_TEST"); v = arg_get_value(serv, "optimize_test"); if(arg_get_type(serv, "optimize_test") == ARG_INT) { char *s = emalloc(4); if(v) strncpy(s, "yes", 3); else strncpy(s, "no", 2); arg_set_value(serv, "optimize_test", strlen(s), s); arg_set_type(serv, "optimize_test", ARG_STRING); } v = arg_get_value(serv, "optimize_test"); if(v) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), !strcmp(v, "yes")); else gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), 1); gtkw = arg_get_value(t, "SAFE_CHECKS"); v = arg_get_value(serv, "safe_checks"); if(arg_get_type(serv, "safe_checks") == ARG_INT) { char *s = emalloc(4); if(v) strncpy(s, "yes", 3); else strncpy(s, "no", 2); arg_set_value(serv, "safe_checks", strlen(s), s); arg_set_type(serv, "safe_checks", ARG_STRING); } v = arg_get_value(serv, "safe_checks"); if(v) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), !strcmp(v, "yes")); else gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), 1); gtkw = arg_get_value(t, "USE_MAC_ADDR"); v = arg_get_value(serv, "use_mac_addr"); if(arg_get_type(serv, "use_mac_addr") == ARG_INT) { char *s = emalloc(4); if(v) strncpy(s, "yes", 3); else strncpy(s, "no", 2); arg_set_value(serv, "use_mac_addr", strlen(s), s); arg_set_type(serv, "use_mac_addr", ARG_STRING); } v = arg_get_value(serv, "use_mac_addr"); if(v) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), !strcmp(v, "yes")); else gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), 0); v = arg_get_value(serv, "port_range"); if(v) { gtkw = arg_get_value(t, "PORT_RANGE"); if(gtkw) gtk_entry_set_text(GTK_ENTRY(gtkw), v); } gtkw = arg_get_value(t, "UNSCANNED_CLOSED"); v = arg_get_value(serv, "unscanned_closed"); if(arg_get_type(serv, "unscanned_closed") == ARG_INT) { char *s; int v; v = (int)arg_get_value(serv, "unscanned_closed"); if(v) s = strdup("yes"); else s = strdup("no"); arg_set_value(serv, "unscanned_closed", strlen(s), s); arg_set_type(serv, "unscanned_closed", ARG_STRING); } v = arg_get_value(serv, "unscanned_closed"); if(v) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), !strcmp(v, "yes")); else gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(gtkw), 0); gtkw = arg_get_value(t, "MAX_HOSTS"); if(gtkw) { v = arg_get_value(serv, "max_hosts"); if(v) gtk_entry_set_text(GTK_ENTRY(gtkw), v); } gtkw = arg_get_value(t, "MAX_CHECKS"); if(gtkw) { v = arg_get_value(serv, "max_checks"); if(v) gtk_entry_set_text(GTK_ENTRY(gtkw), v); } gtkw = arg_get_value(t, "CGI_PATH"); if(gtkw) { v = arg_get_value(serv, "cgi_path"); if(v) gtk_entry_set_text(GTK_ENTRY(gtkw), v); } /* * User */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -