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

📄 preferences.c

📁 Linux系统下著名的个人防火墙
💻 C
📖 第 1 页 / 共 3 页
字号:
/*	preferences_update_widget_from_conf (dialog->check_start_on_boot, PREFS_START_ON_BOOT); */	preferences_update_widget_from_conf (dialog->check_start_on_gui, PREFS_START_ON_GUI);	preferences_update_widget_from_conf (dialog->check_start_on_dial_out, PREFS_START_ON_DIAL_OUT);	preferences_update_widget_from_conf (dialog->check_start_on_dhcp, PREFS_START_ON_DHCP);	/* Network settings */	if (!combo_set_active_device (GTK_COMBO_BOX (dialog->combo_ext_device),	                              preferences_get_string (PREFS_FW_EXT_IF))) {		printf ("Warning: External interface previously configured not found\n");		gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->combo_ext_device), 0); /* Default to the first item */	}	if (!combo_set_active_device (GTK_COMBO_BOX (dialog->combo_int_device),	                              preferences_get_string (PREFS_FW_INT_IF))) {		printf ("Warning: External interface previously configured not found\n");		gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->combo_int_device), 0); /* Default to the first item */	}	preferences_update_widget_from_conf (dialog->check_enable_connection_sharing, PREFS_FW_NAT);	preferences_update_widget_from_conf (dialog->check_enable_dhcp, PREFS_FW_DHCP_ENABLE);	preferences_update_widget_from_conf (dialog->entry_dhcp_lowest_ip, PREFS_FW_DHCP_LOWEST_IP);	preferences_update_widget_from_conf (dialog->entry_dhcp_highest_ip, PREFS_FW_DHCP_HIGHEST_IP);	preferences_update_widget_from_conf (dialog->entry_dhcp_name_server, PREFS_FW_DHCP_NAMESERVER);	gtk_widget_set_sensitive (dialog->expander_dhcp, preferences_get_bool (PREFS_FW_DHCP_ENABLE));	gtk_widget_set_sensitive (dialog->table_dhcp_settings, FALSE);	/* ICMP */	preferences_update_widget_from_conf (dialog->check_enable_icmp, PREFS_FW_FILTER_ICMP);	preferences_update_widget_from_conf (dialog->check_icmp_echo_request, PREFS_FW_ICMP_ECHO_REQUEST);	preferences_update_widget_from_conf (dialog->check_icmp_echo_reply, PREFS_FW_ICMP_ECHO_REPLY);	preferences_update_widget_from_conf (dialog->check_icmp_traceroute, PREFS_FW_ICMP_TRACEROUTE);	preferences_update_widget_from_conf (dialog->check_icmp_mstraceroute, PREFS_FW_ICMP_MSTRACEROUTE);	preferences_update_widget_from_conf (dialog->check_icmp_unreachable, PREFS_FW_ICMP_UNREACHABLE);	preferences_update_widget_from_conf (dialog->check_icmp_timestamping, PREFS_FW_ICMP_TIMESTAMPING);	preferences_update_widget_from_conf (dialog->check_icmp_address_masking, PREFS_FW_ICMP_MASKING);	preferences_update_widget_from_conf (dialog->check_icmp_redirection, PREFS_FW_ICMP_REDIRECTION);	preferences_update_widget_from_conf (dialog->check_icmp_source_quenching, PREFS_FW_ICMP_SOURCE_QUENCHES);	gtk_widget_set_sensitive (dialog->frame_icmp_types, preferences_get_bool (PREFS_FW_FILTER_ICMP));	/* ToS */	preferences_update_widget_from_conf (dialog->check_enable_tos, PREFS_FW_FILTER_TOS);	preferences_update_widget_from_conf (dialog->check_prioritize_workstations, PREFS_FW_TOS_CLIENT);	preferences_update_widget_from_conf (dialog->check_prioritize_servers, PREFS_FW_TOS_SERVER);	preferences_update_widget_from_conf (dialog->check_prioritize_x, PREFS_FW_TOS_X);	preferences_update_widget_from_conf (dialog->radio_max_throughput, PREFS_FW_TOS_OPT_TROUGHPUT);	preferences_update_widget_from_conf (dialog->radio_max_reliability, PREFS_FW_TOS_OPT_RELIABILITY);	preferences_update_widget_from_conf (dialog->radio_max_interactivity, PREFS_FW_TOS_OPT_DELAY);	gtk_widget_set_sensitive (dialog->frame_tos_services, preferences_get_bool (PREFS_FW_FILTER_TOS));	gtk_widget_set_sensitive (dialog->frame_tos_maximize, preferences_get_bool (PREFS_FW_FILTER_TOS));	/* Advanced */	preferences_update_widget_from_conf (dialog->radio_deny_packets, PREFS_FW_DENY_PACKETS);	preferences_update_widget_from_conf (dialog->check_block_external_broadcast, PREFS_FW_BLOCK_EXTERNAL_BROADCAST);	preferences_update_widget_from_conf (dialog->check_block_internal_broadcast, PREFS_FW_BLOCK_INTERNAL_BROADCAST);	preferences_update_widget_from_conf (dialog->check_block_non_routables, PREFS_FW_BLOCK_NON_ROUTABLES);}static voidsave_preferences (PreferencesDialog *dialog){	/* Interface */	preferences_update_conf_from_widget (dialog->check_enable_tray_icon, PREFS_ENABLE_TRAY_ICON);	preferences_update_conf_from_widget (dialog->check_minimize_to_tray, PREFS_MINIMIZE_TO_TRAY);	/* Events */	preferences_update_conf_from_widget (dialog->check_skip_redundant, PREFS_SKIP_REDUNDANT);	preferences_update_conf_from_widget (dialog->check_skip_not_for_firewall, PREFS_SKIP_NOT_FOR_FIREWALL);		/* Policy */	preferences_update_conf_from_widget (dialog->check_apply_policy_instantly, PREFS_APPLY_POLICY_INSTANTLY);	/* Firewall *//*	preferences_update_conf_from_widget (dialog->check_start_on_boot, PREFS_START_ON_BOOT); */	preferences_update_conf_from_widget (dialog->check_start_on_gui, PREFS_START_ON_GUI);	preferences_update_conf_from_widget (dialog->check_start_on_dial_out, PREFS_START_ON_DIAL_OUT);	preferences_update_conf_from_widget (dialog->check_start_on_dhcp, PREFS_START_ON_DHCP);	/* Network settings */	preferences_set_string (PREFS_FW_EXT_IF, combo_get_active_device (GTK_COMBO_BOX (dialog->combo_ext_device)));	preferences_set_string (PREFS_FW_INT_IF, combo_get_active_device (GTK_COMBO_BOX (dialog->combo_int_device)));	preferences_update_conf_from_widget (dialog->check_enable_connection_sharing, PREFS_FW_NAT);	preferences_update_conf_from_widget (dialog->check_enable_dhcp, PREFS_FW_DHCP_ENABLE);	preferences_update_conf_from_widget (dialog->entry_dhcp_lowest_ip, PREFS_FW_DHCP_LOWEST_IP);	preferences_update_conf_from_widget (dialog->entry_dhcp_highest_ip, PREFS_FW_DHCP_HIGHEST_IP);	preferences_update_conf_from_widget (dialog->entry_dhcp_name_server, PREFS_FW_DHCP_NAMESERVER);	/* ICMP */	preferences_update_conf_from_widget (dialog->check_enable_icmp, PREFS_FW_FILTER_ICMP);	preferences_update_conf_from_widget (dialog->check_icmp_echo_request, PREFS_FW_ICMP_ECHO_REQUEST);	preferences_update_conf_from_widget (dialog->check_icmp_echo_reply, PREFS_FW_ICMP_ECHO_REPLY);	preferences_update_conf_from_widget (dialog->check_icmp_traceroute, PREFS_FW_ICMP_TRACEROUTE);	preferences_update_conf_from_widget (dialog->check_icmp_mstraceroute, PREFS_FW_ICMP_MSTRACEROUTE);	preferences_update_conf_from_widget (dialog->check_icmp_unreachable, PREFS_FW_ICMP_UNREACHABLE);	preferences_update_conf_from_widget (dialog->check_icmp_timestamping, PREFS_FW_ICMP_TIMESTAMPING);	preferences_update_conf_from_widget (dialog->check_icmp_address_masking, PREFS_FW_ICMP_MASKING);	preferences_update_conf_from_widget (dialog->check_icmp_redirection, PREFS_FW_ICMP_REDIRECTION);	preferences_update_conf_from_widget (dialog->check_icmp_source_quenching, PREFS_FW_ICMP_SOURCE_QUENCHES);	/* ToS */	preferences_update_conf_from_widget (dialog->check_enable_tos, PREFS_FW_FILTER_TOS);	preferences_update_conf_from_widget (dialog->check_prioritize_workstations, PREFS_FW_TOS_CLIENT);	preferences_update_conf_from_widget (dialog->check_prioritize_servers, PREFS_FW_TOS_SERVER);	preferences_update_conf_from_widget (dialog->check_prioritize_x, PREFS_FW_TOS_X);	preferences_update_conf_from_widget (dialog->radio_max_throughput, PREFS_FW_TOS_OPT_TROUGHPUT);	preferences_update_conf_from_widget (dialog->radio_max_reliability, PREFS_FW_TOS_OPT_RELIABILITY);	preferences_update_conf_from_widget (dialog->radio_max_interactivity, PREFS_FW_TOS_OPT_DELAY);	gtk_widget_set_sensitive (dialog->frame_tos_services, preferences_get_bool (PREFS_FW_FILTER_TOS));	gtk_widget_set_sensitive (dialog->frame_tos_maximize, preferences_get_bool (PREFS_FW_FILTER_TOS));	/* Advanced */	preferences_update_conf_from_widget (dialog->radio_deny_packets, PREFS_FW_DENY_PACKETS);	preferences_update_conf_from_widget (dialog->check_block_external_broadcast, PREFS_FW_BLOCK_EXTERNAL_BROADCAST);	preferences_update_conf_from_widget (dialog->check_block_internal_broadcast, PREFS_FW_BLOCK_INTERNAL_BROADCAST);	preferences_update_conf_from_widget (dialog->check_block_non_routables, PREFS_FW_BLOCK_NON_ROUTABLES);	scriptwriter_output_configuration ();	/* Write DHCP configuration */	if (preferences_get_bool (PREFS_FW_NAT) &&	    preferences_get_bool (PREFS_FW_DHCP_ENABLE) &&	    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->radio_dhcp_create_conf)))		dhcp_server_create_configuration ();	/* Start firewall on ppp interface up */	if (preferences_get_bool (PREFS_START_ON_DIAL_OUT))		scriptwriter_write_ppp_hook ();	else		scriptwriter_remove_ppp_hook ();			/* Start firewall on DCHP lease renewal */	if (preferences_get_bool (PREFS_START_ON_DHCP))		scriptwriter_write_dhcp_hook ();	else		scriptwriter_remove_dhcp_hook ();	restart_firewall_if_active ();	poicyview_update_nat_widgets ();	if (preferences_get_bool (PREFS_ENABLE_TRAY_ICON)) {		if (!tray_is_running ())			tray_init ();	} else {		if (tray_is_running ())			tray_remove ();	}}static voidpreferences_response_cb (GtkDialog *main_dialog, gint response, PreferencesDialog *dialog){	if (response == GTK_RESPONSE_ACCEPT) {		if (validate_dhcp_settings (dialog)) {			save_preferences (dialog);			gtk_widget_destroy (GTK_WIDGET (main_dialog));		}	} else if (response == GTK_RESPONSE_HELP) {		preferences_show_help ();	} else		gtk_widget_destroy (GTK_WIDGET (main_dialog));}static voidlog_handler_cb (const gchar *log_domain, GLogLevelFlags                log_level, const gchar *message, gpointer user_data){	return;}static PreferencesDialog *get_preferences_dialog (GtkWindow *parent){	static PreferencesDialog *dialog = NULL;	GladeXML *gui;	GtkTreeModel *model;	GtkTreeViewColumn *column;	GtkCellRenderer *renderer;	GtkWidget *sections;	if (dialog != NULL) {		gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog_main),					      parent);		gtk_window_present (GTK_WINDOW (dialog->dialog_main));		return dialog;	}	/* Suppress libglade warnings */	g_log_set_handler ("libglade",                            G_LOG_LEVEL_WARNING,		    	   log_handler_cb, 			   NULL);	/* Try to load the interface from the current directory first */	gui = glade_xml_new ("preferences.glade", NULL, NULL);	if (gui == NULL) { /* If that fails, load the shared interface file */		gui = glade_xml_new (GLADEDIR"/preferences.glade", NULL, NULL);	}	if (gui == NULL) {		error_dialog (_("Missing file"),		              _("Firestarter interface file not found"),			      _("The interface markup file preferences.glade could not be found."),			      Firestarter.window);		return NULL;	}		dialog = g_new0 (PreferencesDialog, 1);	dialog->dialog_main = glade_xml_get_widget (gui, "preferences_dialog");	g_signal_connect (G_OBJECT (dialog->dialog_main), "destroy",			  G_CALLBACK (dialog_destroyed), &dialog);	g_signal_connect (G_OBJECT (dialog->dialog_main), "response",			  G_CALLBACK (preferences_response_cb), dialog);	/* Set up the contents index */	sections = glade_xml_get_widget (gui, "sections");	model = create_sections_model ();	gtk_tree_view_set_model (GTK_TREE_VIEW (sections), model);	renderer = gtk_cell_renderer_text_new ();	column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", 1, NULL);	gtk_tree_view_append_column (GTK_TREE_VIEW (sections), column);	gtk_tree_view_expand_all (GTK_TREE_VIEW (sections));	g_signal_connect (G_OBJECT (sections), "cursor-changed",			  G_CALLBACK (change_section_cb), dialog);	/* Set up the notebook */	dialog->notebook = glade_xml_get_widget (gui, "notebook");	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (dialog->notebook), FALSE);	/* Set up the interface section */	dialog->check_enable_tray_icon = glade_xml_get_widget (gui, "check_enable_tray_icon");	dialog->check_minimize_to_tray = glade_xml_get_widget (gui, "check_minimize_to_tray");	setup_interface_section (dialog);	/* Set up the events section */	dialog->check_skip_redundant = glade_xml_get_widget (gui, "check_skip_redundant");	dialog->check_skip_not_for_firewall = glade_xml_get_widget (gui, "check_skip_not_for_firewall");	dialog->window_host_filter = glade_xml_get_widget (gui, "window_host_filter");	dialog->window_port_filter = glade_xml_get_widget (gui, "window_port_filter");	dialog->button_add_host = glade_xml_get_widget (gui, "button_add_host");	dialog->button_add_port = glade_xml_get_widget (gui, "button_add_port");	dialog->button_remove_host = glade_xml_get_widget (gui, "button_remove_host");	dialog->button_remove_port = glade_xml_get_widget (gui, "button_remove_port");	dialog->dialog_host_filter = glade_xml_get_widget (gui, "dialog_host_filter");	dialog->dialog_port_filter = glade_xml_get_widget (gui, "dialog_port_filter");	dialog->entry_host = glade_xml_get_widget (gui, "entry_host");	dialog->entry_port = glade_xml_get_widget (gui, "entry_port");	setup_events_section (dialog);	/* Set up the policy section */	dialog->check_apply_policy_instantly = glade_xml_get_widget (gui, "check_apply_policy_instantly");	/* Set up the firewall section *//*	dialog->check_start_on_boot = glade_xml_get_widget (gui, "check_start_on_boot"); */	dialog->check_start_on_gui = glade_xml_get_widget (gui, "check_start_on_gui");	dialog->check_start_on_dial_out = glade_xml_get_widget (gui, "check_start_on_dial_out");	dialog->check_start_on_dhcp = glade_xml_get_widget (gui, "check_start_on_dhcp");	/* Set up the network settings section */	dialog->combo_ext_device = glade_xml_get_widget (gui, "combo_ext_device");	dialog->box_local_network_settings = glade_xml_get_widget (gui, "box_local_network_settings");	dialog->combo_int_device = glade_xml_get_widget (gui, "combo_int_device");	dialog->check_enable_connection_sharing = glade_xml_get_widget (gui, "check_enable_connection_sharing");	dialog->check_enable_dhcp = glade_xml_get_widget (gui, "check_enable_dhcp");	dialog->expander_dhcp = glade_xml_get_widget (gui, "expander_dhcp");	dialog->radio_dhcp_create_conf = glade_xml_get_widget (gui, "radio_dhcp_create_conf");	dialog->table_dhcp_settings = glade_xml_get_widget (gui, "table_dhcp_settings");	dialog->entry_dhcp_lowest_ip = glade_xml_get_widget (gui, "entry_dhcp_lowest_ip");	dialog->entry_dhcp_highest_ip = glade_xml_get_widget (gui, "entry_dhcp_highest_ip");	dialog->entry_dhcp_name_server = glade_xml_get_widget (gui, "entry_dhcp_name_server");	setup_network_settings_section (dialog);	/* Set up ICMP section */	dialog->check_enable_icmp = glade_xml_get_widget (gui, "check_enable_icmp");	dialog->frame_icmp_types = glade_xml_get_widget (gui, "frame_icmp_types");	dialog->check_icmp_echo_request = glade_xml_get_widget (gui, "check_icmp_echo_request");	dialog->check_icmp_echo_reply = glade_xml_get_widget (gui, "check_icmp_echo_reply");	dialog->check_icmp_traceroute = glade_xml_get_widget (gui, "check_icmp_traceroute");	dialog->check_icmp_mstraceroute = glade_xml_get_widget (gui, "check_icmp_mstraceroute");	dialog->check_icmp_unreachable = glade_xml_get_widget (gui, "check_icmp_unreachable");	dialog->check_icmp_timestamping = glade_xml_get_widget (gui, "check_icmp_timestamping");	dialog->check_icmp_address_masking = glade_xml_get_widget (gui, "check_icmp_address_masking");	dialog->check_icmp_redirection = glade_xml_get_widget (gui, "check_icmp_redirection");	dialog->check_icmp_source_quenching = glade_xml_get_widget (gui, "check_icmp_source_quenching");	setup_icmp_section (dialog);	/* Set up the ToS section */	dialog->check_enable_tos = glade_xml_get_widget (gui, "check_enable_tos");	dialog->frame_tos_services = glade_xml_get_widget (gui, "frame_tos_services");	dialog->check_prioritize_workstations = glade_xml_get_widget (gui, "check_prioritize_workstations");	dialog->check_prioritize_servers = glade_xml_get_widget (gui, "check_prioritize_servers");	dialog->check_prioritize_x = glade_xml_get_widget (gui, "check_prioritize_x");	dialog->frame_tos_maximize = glade_xml_get_widget (gui, "frame_tos_maximize");	dialog->radio_max_throughput = glade_xml_get_widget (gui, "radio_max_throughput");	dialog->radio_max_reliability = glade_xml_get_widget (gui, "radio_max_reliability");	dialog->radio_max_interactivity = glade_xml_get_widget (gui, "radio_max_interactivity");	setup_tos_section (dialog);	/* Set up the advanced section */	dialog->radio_deny_packets = glade_xml_get_widget (gui, "radio_drop_packets");	dialog->check_block_external_broadcast = glade_xml_get_widget (gui, "check_block_external_broadcast");	dialog->check_block_internal_broadcast = glade_xml_get_widget (gui, "check_block_internal_broadcast");	dialog->check_block_non_routables = glade_xml_get_widget (gui, "check_block_non_routables");	select_first_section (GTK_TREE_VIEW (sections));	/* Set the default page */	gtk_notebook_set_page (GTK_NOTEBOOK (dialog->notebook), 0);	g_object_unref (gui);		return dialog;}/* [ preferences_run ] * Display the preferences GUI */voidpreferences_show (void){	PreferencesDialog *dialog;	dialog = get_preferences_dialog (GTK_WINDOW (Firestarter.window));	if (!dialog)		return;	load_preferences (dialog);	if (!GTK_WIDGET_VISIBLE (dialog->dialog_main))		gtk_widget_show (dialog->dialog_main);}

⌨️ 快捷键说明

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