⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prefs_dialog.c

📁 大国补丁后的nessus2.2.8的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* Nessus * Copyright (C) 1998 Renaud Deraison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * In addition, as a special exception, Renaud Deraison * gives permission to link the code of this program with any * version of the OpenSSL library which is distributed under a * license identical to that listed in the included COPYING.OpenSSL * file, and distribute linked combinations including the two. * You must obey the GNU General Public License in all respects * for all of the code used other than OpenSSL.  If you modify * this file, you may extend this exception to your version of the * file, but you are not obligated to do so.  If you do not wish to * do so, delete this exception statement from your version. */#include <includes.h>#include "nessus_i18n.h"#include "nessus_plugin.h"#ifdef USE_GTK#include "comm.h"#include <gtk/gtk.h>#include "xstuff.h"#include "context.h"#include "preferences.h"#include "sighand.h"#include "prefs_dialog_auth.h"#include "prefs_dialog_prefs.h"#include "prefs_help.h"#include "prefs_dialog.h"#include "prefs_context.h"#include "prefs_scope_tree.h"#include "prefs_about.h"#include "prefs_comment.h"#include "prefs_options.h"#include "prefs_report.h"#include "prefs_scan_assistant.h"#include "prefs_comment.h"#ifdef ENABLE_SAVE_KB# include "prefs_kb.h"#endif#include "error_dialog.h"#include "monitor_dialog.h"#include "report.h"#include "report_save.h"#include "read_target_file.h"#include "globals.h"#include "../xpm/connect_16.xpm"#include "../xpm/connect_24.xpm"#include "../xpm/disconnect_16.xpm"#include "../xpm/disconnect_24.xpm"#include "../xpm/general_prefs.xpm"#include "../xpm/credentials.xpm"#include "../xpm/plugins.xpm"#include "../xpm/knowledgebase.xpm"#include "../xpm/access_rules.xpm"#include "../xpm/properties.xpm"#include "../xpm/target_selection.xpm"static void prefs_dialog_set_tooltips(struct arglist *);/* * launch the users manual pdf document with the configure * pdf viewer. */voidshow_users_manual(menuitem, ctrls)  GtkWidget *menuitem;  gpointer ctrls;{#ifdef NESSUS_DOCDIR  char * dir = NESSUS_DOCDIR;#else  char * dir = "";#endif  /* the pdf file is covered by gettext to allow   * speficication of translation in the respective po   * files rather than in the source code. */  char * fname = _("users-manual.pdf");  char * path = g_build_filename(dir, fname, NULL);  show_pdf(path);  g_free(path);}/* * Save the current global settings to ~/.nessusrc */voidsave_global_settings(menuitem, ctrls)  GtkWidget *menuitem;  gpointer ctrls;{  prefs_dialog_apply(Global, ctrls);  prefs_dialog_apply_plugin_prefs(Global->plugins);  prefs_dialog_apply_plugin_prefs(Global->scanners);  context_sync_plugin_prefs(Global);  preferences_save(Global);  show_info(_("The global settings have been saved."));}/* * Toggle Toolbar on/off */voidtoggle_toolbar(menuitem, ctrls)  GtkWidget *menuitem;  struct arglist *ctrls;{  GtkWidget *toolbar = arg_get_value(ctrls, "TOOLBAR");  if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)))  {    prefs_set_int(Global, "hide_toolbar", 0);    gtk_widget_show(toolbar);  }  else  {    prefs_set_int(Global, "hide_toolbar", 1);    gtk_widget_hide(toolbar);  }}/* * Toggle Message-Log on/off */voidtoggle_msglog(menuitem, ctrls)  GtkWidget *menuitem;  struct arglist *ctrls;{  GtkWidget *msglogframe = arg_get_value(ctrls, "MSGLOGFRAME");  if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)))  {    prefs_set_int(Global, "hide_msglog", 0);    gtk_widget_show(msglogframe);  }  else  {    prefs_set_int(Global, "hide_msglog", 1);    gtk_widget_hide(msglogframe);  }}/* * Menu items */voidmenuitem_TODO(menuitem, ctrls)  GtkWidget *menuitem;  struct arglist *ctrls;{  show_error(_("Not yet implemented."));}voidmenuitem_add(menuitem, menu, name, stockicon, func)  GtkWidget *menuitem;  GtkWidget *menu;  const gchar *name;  const gchar *stockicon;  GtkSignalFunc func;{  GtkWidget *icon;  gtk_widget_show(menuitem);  gtk_container_add(GTK_CONTAINER(menu), menuitem);  if(name)    arg_add_value(MainDialog, name, ARG_PTR, -1, menuitem);  if(stockicon)  {    icon = gtk_image_new_from_stock(stockicon, GTK_ICON_SIZE_MENU);    gtk_widget_show(icon);    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), icon);  }  if(func)    gtk_signal_connect(GTK_OBJECT(menuitem), "activate", func, MainDialog);}voidmenuitem_separator(menu)  GtkWidget *menu;{  GtkWidget *menuitem;  menuitem = gtk_menu_item_new();  menuitem_add(menuitem, menu, NULL, NULL, NULL);  gtk_widget_set_sensitive(menuitem, FALSE);}/* Add a pair of new "stock" icons to the factory. * * The parameters small and large are the arrays of char* that make up * an xpm.  The icons are added to the factory as an icon set for the * given stock id.  The small icon is used as the default icon for the * size GTK_ICON_SIZE_MENU and the large one is the default icon for the * whole set and the default icon for the size * GTK_ICON_SIZE_LARGE_TOOLBAR. * * The parameter small may be NULL to indicate that no special small * variant exists. */static voidadd_nessus_icon_set(factory, stock_id, large, small)  GtkIconFactory *factory;  const char *stock_id;  const char **large;  const char **small;{  GtkIconSet *iconset;  GtkIconSource *source;  GdkPixbuf *pixbuf;  /* The "large" icon is used as the default icon and the icon for the   * GTK_ICON_SIZE_LARGE_TOOLBAR size */  pixbuf = gdk_pixbuf_new_from_xpm_data(large);  iconset = gtk_icon_set_new_from_pixbuf(pixbuf);  source = gtk_icon_source_new();  gtk_icon_source_set_pixbuf(source, pixbuf);  gtk_icon_source_set_size_wildcarded(source, FALSE);  gtk_icon_source_set_size(source, GTK_ICON_SIZE_LARGE_TOOLBAR);  gtk_icon_set_add_source(iconset, source);  gtk_icon_source_free(source);  g_object_unref(G_OBJECT(pixbuf));  /* The "small" icon is used for the GTK_ICON_SIZE_MENU size */  if (small != NULL)  {    pixbuf = gdk_pixbuf_new_from_xpm_data(small);    source = gtk_icon_source_new();    gtk_icon_source_set_pixbuf(source, pixbuf);    gtk_icon_source_set_size_wildcarded(source, FALSE);    gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU);    gtk_icon_set_add_source(iconset, source);    gtk_icon_source_free(source);    g_object_unref(G_OBJECT(pixbuf));  }  gtk_icon_factory_add(factory, stock_id, iconset);}  /* Create some nessus specific stock icons. * * This function adds two stock icon sets, "nessus-connect" and * "nessus-disconnect" so that they can be used for menu items or * buttons. */static voidcreate_nessus_icon_factory(){  GtkIconFactory* factory = gtk_icon_factory_new();  add_nessus_icon_set(factory, "nessus-connect", connect_24, connect_16);  add_nessus_icon_set(factory, "nessus-disconnect", disconnect_24,      disconnect_16);  add_nessus_icon_set(factory, "nessus-general-prefs", general_prefs_xpm, NULL);  add_nessus_icon_set(factory, "nessus-plugins", plugins_xpm, NULL);  add_nessus_icon_set(factory, "nessus-credentials", credentials_xpm, NULL);  add_nessus_icon_set(factory, "nessus-target-selection", target_selection_xpm,      NULL);  add_nessus_icon_set(factory, "nessus-access-rules", access_rules_xpm, NULL);  add_nessus_icon_set(factory, "nessus-prefs", properties_xpm, NULL);  add_nessus_icon_set(factory, "nessus-knowledge-base", knowledgebase_xpm,      NULL);  gtk_icon_factory_add_default(factory);  g_object_unref(G_OBJECT(factory));}/* * prefs_dialog_setup *  * This function draws the preferences dialog of the Nessus * client * */voidprefs_dialog_setup(context)  struct context *context;{  GtkWidget *window;  GtkWidget *mainmenu;  GtkWidget *menuitem;  GtkWidget *submenu;  GtkWidget *subsubmenu;  GtkWidget *notebook;  GtkWidget *label;  GtkWidget *frame;  GtkWidget *box;  GtkWidget *hbox;  GtkWidget *vbox;  GtkWidget *msglogframe;  GtkWidget *icon;  GtkWidget *toolbar_button;  GtkWidget *toolbar;  GtkWidget *scrolledwindow;  GtkWidget *textview;  GtkWidget *hpaned;  GtkWidget *statusbar;  GtkAccelGroup *accel_group;  struct arglist *prefs_scope_tree;  struct arglist *prefs_comment;  struct arglist *prefs_options;  struct arglist *prefs_report;  struct arglist *ctrls = emalloc(sizeof(struct arglist));  MainDialog = ctrls;  create_nessus_icon_factory();/* * We draw the window .... */  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  g_signal_connect(G_OBJECT(window), "delete_event",      G_CALLBACK(gtk_main_quit), NULL);  g_signal_connect(G_OBJECT(window), "delete_event",      G_CALLBACK(gtk_widget_hide_on_delete), NULL);  gtk_window_set_title(GTK_WINDOW(window), _("Nessus Client"));  arg_add_value(ctrls, "WINDOW", ARG_PTR, -1, window);  arg_add_value(ctrls, "CONTEXT", ARG_PTR, -1, window);  /*   * We put a vbox in it...   */  box = gtk_vbox_new(FALSE, 0);  gtk_container_add(GTK_CONTAINER(window), box);  gtk_widget_show(box);/* * Main menu */  accel_group = gtk_accel_group_new();  gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);  mainmenu = gtk_menu_bar_new();  gtk_widget_show(mainmenu);  gtk_box_pack_start(GTK_BOX(box), mainmenu, FALSE, FALSE, 0);  /* File menu */  menuitem = gtk_menu_item_new_with_mnemonic(_("_File"));  menuitem_add(menuitem, mainmenu, NULL, NULL, NULL);  submenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);  menuitem = gtk_image_menu_item_new_with_mnemonic(_("_Connect"));  menuitem_add(menuitem, submenu, "CONNECT_MENUITEM", "nessus-connect",      GTK_SIGNAL_FUNC(prefs_dialog_auth_connect));  menuitem = gtk_image_menu_item_new_with_mnemonic(_("_Disconnect"));  menuitem_add(menuitem, submenu, "DISCONNECT_MENUITEM", "nessus-disconnect",      GTK_SIGNAL_FUNC(prefs_dialog_auth_disconnect));  gtk_widget_set_sensitive(menuitem, FALSE);  menuitem_separator(submenu);  menuitem = gtk_image_menu_item_new_with_mnemonic(_("_Scan Assistant"));  menuitem_add(menuitem, submenu, NULL, "gtk-help",      GTK_SIGNAL_FUNC(prefs_scan_assistant));  menuitem = gtk_image_menu_item_new_from_stock("gtk-preferences", accel_group);  menuitem_add(menuitem, submenu, "PREFERENCES_MENUITEM", NULL,      GTK_SIGNAL_FUNC(prefs_dialog_prefs));  menuitem = gtk_image_menu_item_new_with_mnemonic(_("Save _Global Settings"));  menuitem_add(menuitem, submenu, NULL, "gtk-save",      GTK_SIGNAL_FUNC(save_global_settings));  menuitem_separator(submenu);  menuitem = gtk_image_menu_item_new_from_stock("gtk-quit", accel_group);  menuitem_add(menuitem, submenu, NULL, NULL,      GTK_SIGNAL_FUNC(gtk_main_quit));  /* View menu */  menuitem = gtk_menu_item_new_with_mnemonic(_("_View"));  menuitem_add(menuitem, mainmenu, NULL, NULL, NULL);  submenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);  menuitem = gtk_check_menu_item_new_with_mnemonic(_("_Toolbar"));  menuitem_add(menuitem, submenu, "TOGGLETOOLBAR_MENUITEM", NULL,      GTK_SIGNAL_FUNC(toggle_toolbar));  menuitem = gtk_check_menu_item_new_with_mnemonic(_("_Message log"));  menuitem_add(menuitem, submenu, "TOGGLEMSGLOG_MENUITEM", NULL,      GTK_SIGNAL_FUNC(toggle_msglog));  /* Task menu */  menuitem = gtk_menu_item_new_with_mnemonic(_("_Task"));  menuitem_add(menuitem, mainmenu, NULL, NULL, NULL);  submenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);  menuitem = gtk_image_menu_item_new_with_mnemonic(_("_New"));  menuitem_add(menuitem, submenu, NULL, "gtk-new",      GTK_SIGNAL_FUNC(task_menu_new));  menuitem = gtk_menu_item_new_with_mnemonic(_("_Rename"));  menuitem_add(menuitem, submenu, "RENAMETASK_MENUITEM", NULL,      GTK_SIGNAL_FUNC(task_menu_rename));  menuitem = gtk_image_menu_item_new_from_stock("gtk-delete", accel_group);  menuitem_add(menuitem, submenu, "DELETETASK_MENUITEM", NULL,      GTK_SIGNAL_FUNC(task_menu_delete));  /* Scope menu */  menuitem = gtk_menu_item_new_with_mnemonic(_("_Scope"));  menuitem_add(menuitem, mainmenu, NULL, NULL, NULL);  submenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);  menuitem = gtk_image_menu_item_new_from_stock("gtk-execute", accel_group);  menuitem_add(menuitem, submenu, "EXECSCOPE_MENUITEM", NULL,      GTK_SIGNAL_FUNC(prefs_dialog_execute));#if 0  menuitem = gtk_image_menu_item_new_from_stock("gtk-stop", accel_group);  menuitem_add(menuitem, submenu, "STOPSCOPE_MENUITEM", NULL,      GTK_SIGNAL_FUNC(menuitem_TODO));  gtk_widget_set_sensitive(menuitem, FALSE);#endif  menuitem_separator(submenu);  menuitem = gtk_image_menu_item_new_with_mnemonic(_("_New"));  menuitem_add(menuitem, submenu, "NEWSCOPE_MENUITEM", "gtk-new",      GTK_SIGNAL_FUNC(scope_menu_new));  menuitem = gtk_menu_item_new_with_mnemonic(_("_Rename"));  menuitem_add(menuitem, submenu, "RENAMESCOPE_MENUITEM", NULL,      GTK_SIGNAL_FUNC(scope_menu_rename));  menuitem = gtk_image_menu_item_new_from_stock("gtk-delete", accel_group);  menuitem_add(menuitem, submenu, "DELETESCOPE_MENUITEM", NULL,      GTK_SIGNAL_FUNC(scope_menu_delete));  /* Scope -> Move to task */  menuitem = gtk_menu_item_new_with_mnemonic(_("_Move to task"));  menuitem_add(menuitem, submenu, "MOVESCOPE_MENUITEM", NULL, NULL);  subsubmenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), subsubmenu);  arg_add_value(ctrls, "MOVESCOPE_SUBMENU", ARG_PTR, -1, subsubmenu);  menuitem_separator(submenu);  menuitem = gtk_image_menu_item_new_from_stock("gtk-open", NULL);  menuitem_add(menuitem, submenu, "OPENSCOPE_MENUITEM", NULL,      GTK_SIGNAL_FUNC(scope_menu_open));  menuitem = gtk_image_menu_item_new_from_stock("gtk-save-as", NULL);  menuitem_add(menuitem, submenu, "SAVESCOPE_MENUITEM", NULL,      GTK_SIGNAL_FUNC(scope_menu_save));  /* Report menu */  menuitem = gtk_menu_item_new_with_mnemonic(_("_Report"));  menuitem_add(menuitem, mainmenu, NULL, NULL, NULL);  submenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);  menuitem = gtk_menu_item_new_with_mnemonic(_("_Rename"));  menuitem_add(menuitem, submenu, "RENAMEREPORT_MENUITEM", NULL,      GTK_SIGNAL_FUNC(report_menu_rename));  menuitem = gtk_image_menu_item_new_from_stock("gtk-delete", accel_group);  menuitem_add(menuitem, submenu, "DELETEREPORT_MENUITEM", NULL,      GTK_SIGNAL_FUNC(report_menu_delete));  menuitem_separator(submenu);  menuitem = gtk_menu_item_new_with_mnemonic(_("_Import"));  menuitem_add(menuitem, submenu, "IMPORTREPORT_MENUITEM", NULL,      GTK_SIGNAL_FUNC(open_report_selectfile));  menuitem = gtk_menu_item_new_with_mnemonic(_("E_xport"));  menuitem_add(menuitem, submenu, "EXPORTREPORT_MENUITEM", NULL,      GTK_SIGNAL_FUNC(report_save_cb));  menuitem = gtk_image_menu_item_new_from_stock("gtk-print", accel_group);  menuitem_add(menuitem, submenu, "PRINTREPORT_MENUITEM", NULL,      GTK_SIGNAL_FUNC(report_open_pdf));  /* Help menu */  menuitem = gtk_menu_item_new_with_mnemonic(_("_Help"));  menuitem_add(menuitem, mainmenu, NULL, NULL, NULL);  submenu = gtk_menu_new();  gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -