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

📄 preferences.c

📁 Linux系统下著名的个人防火墙
💻 C
📖 第 1 页 / 共 3 页
字号:
/*---[ preferences.c ]------------------------------------------------ * Copyright (C) 2000-2004 Tomas Junnonen (majix@sci.fi) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Functions for modifying/reading the program preferences and the * preferences GUI *--------------------------------------------------------------------*/#include <stdio.h>#include <errno.h>#include <gconf/gconf-client.h>#include <glade/glade-xml.h>#include "globals.h"#include "firestarter.h"#include "preferences.h"#include "wizard.h"#include "wizard-choices.h"#include "scriptwriter.h"#include "statusview.h"#include "util.h"#include "gui.h"#include "service.h"#include "tray.h"#include "dhcp-server.h"typedef enum{	SECTION_INTERFACE,	SECTION_INTERFACE_EVENTS,	SECTION_INTERFACE_POLICY,	SECTION_FIREWALL,	SECTION_FIREWALL_NETWORK,	SECTION_FIREWALL_ICMP,	SECTION_FIREWALL_TOS,	SECTION_FIREWALL_ADVANCED,} Section;typedef struct _PreferencesDialog PreferencesDialog;struct _PreferencesDialog {	GtkWidget *dialog_main;	GtkTooltips *tooltips;	GtkWidget *notebook;/* Interface */	GtkWidget *check_enable_tray_icon;	GtkWidget *check_minimize_to_tray;	/* Events */	GtkWidget *check_skip_redundant;	GtkWidget *check_skip_not_for_firewall;	GtkWidget *window_host_filter;	GtkWidget *window_port_filter;	GtkWidget *view_host_filter;	GtkWidget *view_port_filter;	GtkWidget *button_add_host;	GtkWidget *button_add_port;	GtkWidget *button_remove_host;	GtkWidget *button_remove_port;	GtkWidget *dialog_host_filter;	GtkWidget *dialog_port_filter;	GtkWidget *entry_host;	GtkWidget *entry_port;/* Policy */	GtkWidget *check_apply_policy_instantly;/* Firewall *//*	GtkWidget *check_start_on_boot; */	GtkWidget *check_start_on_gui;	GtkWidget *check_start_on_dial_out;	GtkWidget *check_start_on_dhcp;/* Network settings */	GtkWidget *combo_ext_device;	GtkWidget *box_local_network_settings;	GtkWidget *combo_int_device;	GtkWidget *check_enable_connection_sharing;	GtkWidget *check_enable_dhcp;	GtkWidget *expander_dhcp;	GtkWidget *radio_dhcp_create_conf;	GtkWidget *table_dhcp_settings;	GtkWidget *entry_dhcp_lowest_ip;	GtkWidget *entry_dhcp_highest_ip;	GtkWidget *entry_dhcp_name_server;/* ICMP */	GtkWidget *check_enable_icmp;	GtkWidget *frame_icmp_types;	GtkWidget *check_icmp_echo_request;	GtkWidget *check_icmp_echo_reply;	GtkWidget *check_icmp_traceroute;	GtkWidget *check_icmp_mstraceroute;	GtkWidget *check_icmp_unreachable;	GtkWidget *check_icmp_timestamping;	GtkWidget *check_icmp_address_masking;	GtkWidget *check_icmp_redirection;	GtkWidget *check_icmp_source_quenching;/* ToS */	GtkWidget *check_enable_tos;	GtkWidget *frame_tos_services;	GtkWidget *check_prioritize_workstations;	GtkWidget *check_prioritize_servers;	GtkWidget *check_prioritize_x;	GtkWidget *frame_tos_maximize;	GtkWidget *radio_max_throughput;	GtkWidget *radio_max_reliability;	GtkWidget *radio_max_interactivity;/* Advanced */		GtkWidget *radio_deny_packets;	GtkWidget *check_block_external_broadcast;	GtkWidget *check_block_internal_broadcast;	GtkWidget *check_block_non_routables;};static GConfClient *client = NULL;static gboolean prefs_init = FALSE;/* [ preferences_init ] * Initialize the GConfClient */static voidpreferences_init (void){	if (prefs_init)		return;	client = gconf_client_get_default ();	gconf_client_add_dir (client, "/apps/firestarter", GCONF_CLIENT_PRELOAD_NONE, NULL);	prefs_init = TRUE;}/* [ preferences_check_schema ] * Check that a Firestarter gconf schema has been installed * The schema is not optional */voidpreferences_check_schema (void){	gchar *string;	if (!prefs_init)		preferences_init ();    	string = preferences_get_string (PREFS_SYSLOG_FILE);        if (string == NULL) {		gchar msg[] = N_("A proper configuration for Firestarter was not found. "        	                 "If you are running Firestarter from the directory you "	                         "built it in, run 'make install-data-local' to install a "	                         "configuration, or simply 'make install' to install the "	                         "whole program.\n\n"	                         "Firestarter will now close.");		GtkWidget *dialog;		dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,        	                                 GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, msg);		gtk_dialog_run (GTK_DIALOG (dialog));		gtk_widget_destroy (dialog);		exit(1);	}}gbooleanpreferences_get_bool (const gchar *gconf_key){	if (!prefs_init)		preferences_init ();	return gconf_client_get_bool (client, gconf_key, NULL);}gchar *preferences_get_string (const gchar *gconf_key){	gchar *str;	if (!prefs_init)		preferences_init ();	str = gconf_client_get_string (client, gconf_key, NULL);	return str;}voidpreferences_set_bool (const gchar *gconf_key, gboolean data){	g_return_if_fail (gconf_key);	if (!prefs_init)		preferences_init ();	gconf_client_set_bool (client, gconf_key, data, NULL);}voidpreferences_set_string (const gchar *gconf_key, const gchar *data){	g_return_if_fail (gconf_key || data);	if (!prefs_init)		preferences_init ();	gconf_client_set_string (client, gconf_key, data, NULL);}static voidpreferences_show_help (void){	gnome_url_show ("http://www.fs-security.com/docs/preferences.php", NULL);}static GtkTreeModel*create_sections_model (void){	GtkTreeStore *store;	GtkTreeIter *iter;	GtkTreeIter *top_section;	store = gtk_tree_store_new (2, G_TYPE_INT, G_TYPE_STRING);	iter = g_new (GtkTreeIter, 1);	gtk_tree_store_append (store, iter, NULL);	top_section = gtk_tree_iter_copy (iter);	gtk_tree_store_set (store, iter,	                    0, SECTION_INTERFACE,			    1, _("Interface"),			    -1);	gtk_tree_store_append (store, iter, top_section);	gtk_tree_store_set (store, iter,	                    0, SECTION_INTERFACE_EVENTS,			    1, _("Events"),			    -1);	gtk_tree_store_append (store, iter, top_section);	gtk_tree_store_set (store, iter,	                    0, SECTION_INTERFACE_POLICY,			    1, _("Policy"),			    -1);	gtk_tree_iter_free (top_section);	gtk_tree_store_append (store, iter, NULL);	top_section = gtk_tree_iter_copy (iter);	gtk_tree_store_set (store, iter,	                    0, SECTION_FIREWALL,			    1, _("Firewall"),			    -1);	gtk_tree_store_append (store, iter, top_section);	gtk_tree_store_set (store, iter,	                    0, SECTION_FIREWALL_NETWORK,			    1, _("Network Settings"),			    -1);	gtk_tree_store_append (store, iter, top_section);	gtk_tree_store_set (store, iter,	                    0, SECTION_FIREWALL_ICMP,			    1, _("ICMP Filtering"),			    -1);	gtk_tree_store_append (store, iter, top_section);	gtk_tree_store_set (store, iter,	                    0, SECTION_FIREWALL_TOS,			    1, _("ToS Filtering"),			    -1);	gtk_tree_store_append (store, iter, top_section);	gtk_tree_store_set (store, iter,	                    0, SECTION_FIREWALL_ADVANCED,			    1, _("Advanced Options"),			    -1);	gtk_tree_iter_free (top_section);	gtk_tree_iter_free (iter);	return GTK_TREE_MODEL (store);}static voiddialog_destroyed (GtkObject  *obj,  		  void      **dialog_pointer){	if (dialog_pointer != NULL) {		g_free (*dialog_pointer);		*dialog_pointer = NULL;	}}static Sectionget_current_section (GtkTreeView *sections){	GtkTreeSelection *selection;	GtkTreeModel *model;	GtkTreeIter iter;	Section selected;	model = gtk_tree_view_get_model (sections);	selection = gtk_tree_view_get_selection (sections);	gtk_tree_selection_get_selected (selection, NULL, &iter);	gtk_tree_model_get (model, &iter, 0, &selected, -1);		return selected;}static voidchange_section_cb (GtkTreeView *view, PreferencesDialog *dialog){	Section section;	section = get_current_section (view);	gtk_notebook_set_page (GTK_NOTEBOOK (dialog->notebook), section);}static voidselect_first_section (GtkTreeView *view){	GtkTreePath *path;		path = gtk_tree_path_new_from_string ("0");	gtk_tree_view_set_cursor (view, path, NULL, FALSE);	gtk_tree_path_free (path);}static voidfilter_host_view_append (GtkListStore *store, gchar *host){	GtkTreeIter iter;	gtk_list_store_append (store, &iter);	gtk_list_store_set (store, &iter, 0, host, -1);}static voidfilter_port_view_append (GtkListStore *store, gchar *port){	GtkTreeIter iter;	gchar *data, *service;	service = service_get_name (atoi (port), "tcp");	data = g_strconcat (g_strstrip (port), " (", service, ")", NULL);	gtk_list_store_append (store, &iter);	gtk_list_store_set (store, &iter, 0, data, -1);	g_free (service);	g_free (data);}

⌨️ 快捷键说明

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