From 750993b2d09c21eb39d5c9cd8ae1ee483d845995 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sun, 16 Nov 2025 22:28:20 -0600 Subject: [PATCH] Update: Remove firewall program. The firewall program is being moved into the kevux-tools repository or in its own repository. It will not be in the 0.8.x releases of the FLL project. --- level_3/firewall/c/main/common.c | 157 ----- level_3/firewall/c/main/common.h | 48 -- level_3/firewall/c/main/common/define.c | 9 - level_3/firewall/c/main/common/define.h | 132 ---- level_3/firewall/c/main/common/enumeration.c | 9 - level_3/firewall/c/main/common/enumeration.h | 174 ------ level_3/firewall/c/main/common/string.c | 125 ---- level_3/firewall/c/main/common/string.h | 404 ------------- level_3/firewall/c/main/common/type.c | 73 --- level_3/firewall/c/main/common/type.h | 279 --------- level_3/firewall/c/main/firewall.c | 53 -- level_3/firewall/c/main/firewall.h | 100 --- level_3/firewall/c/main/main.c | 75 --- level_3/firewall/c/main/main.h | 38 -- level_3/firewall/c/main/operate.c | 246 -------- level_3/firewall/c/main/operate.h | 59 -- level_3/firewall/c/main/operate/buffer.c | 100 --- level_3/firewall/c/main/operate/buffer.h | 95 --- level_3/firewall/c/main/operate/chains.c | 38 -- level_3/firewall/c/main/operate/chains.h | 46 -- level_3/firewall/c/main/operate/create.c | 227 ------- level_3/firewall/c/main/operate/create.h | 54 -- level_3/firewall/c/main/operate/default.c | 73 --- level_3/firewall/c/main/operate/default.h | 45 -- level_3/firewall/c/main/operate/delete.c | 70 --- level_3/firewall/c/main/operate/delete.h | 46 -- level_3/firewall/c/main/operate/process.c | 612 ------------------- level_3/firewall/c/main/operate/process.h | 42 -- level_3/firewall/c/main/operate/rules.c | 28 - level_3/firewall/c/main/operate/rules.h | 46 -- level_3/firewall/c/main/operate/show.c | 128 ---- level_3/firewall/c/main/operate/show.h | 45 -- level_3/firewall/c/main/print/debug.c | 31 - level_3/firewall/c/main/print/debug.h | 46 -- level_3/firewall/c/main/print/error.c | 185 ------ level_3/firewall/c/main/print/error.h | 237 -------- level_3/firewall/c/main/print/message.c | 72 --- level_3/firewall/c/main/print/message.h | 88 --- level_3/firewall/c/main/print/warning.c | 138 ----- level_3/firewall/c/main/print/warning.h | 111 ---- level_3/firewall/c/main/signal.c | 30 - level_3/firewall/c/main/signal.h | 55 -- level_3/firewall/c/main/thread.c | 22 - level_3/firewall/c/main/thread.h | 46 -- level_3/firewall/data/build/defines | 9 - level_3/firewall/data/build/dependencies | 42 -- level_3/firewall/data/build/fakefile | 27 - level_3/firewall/data/build/settings | 111 ---- .../data/documentation/man/man1/firewall.1 | 62 -- .../settings/network/firewall/default-blacklist | 1 - .../settings/network/firewall/default-whitelist | 1 - .../network/firewall/example-device-firewall | 241 -------- .../data/settings/network/firewall/firewall-first | 667 --------------------- .../data/settings/network/firewall/firewall-last | 2 - .../data/settings/network/firewall/firewall-other | 69 --- 55 files changed, 5969 deletions(-) delete mode 100644 level_3/firewall/c/main/common.c delete mode 100644 level_3/firewall/c/main/common.h delete mode 100644 level_3/firewall/c/main/common/define.c delete mode 100644 level_3/firewall/c/main/common/define.h delete mode 100644 level_3/firewall/c/main/common/enumeration.c delete mode 100644 level_3/firewall/c/main/common/enumeration.h delete mode 100644 level_3/firewall/c/main/common/string.c delete mode 100644 level_3/firewall/c/main/common/string.h delete mode 100644 level_3/firewall/c/main/common/type.c delete mode 100644 level_3/firewall/c/main/common/type.h delete mode 100644 level_3/firewall/c/main/firewall.c delete mode 100644 level_3/firewall/c/main/firewall.h delete mode 100644 level_3/firewall/c/main/main.c delete mode 100644 level_3/firewall/c/main/main.h delete mode 100644 level_3/firewall/c/main/operate.c delete mode 100644 level_3/firewall/c/main/operate.h delete mode 100644 level_3/firewall/c/main/operate/buffer.c delete mode 100644 level_3/firewall/c/main/operate/buffer.h delete mode 100644 level_3/firewall/c/main/operate/chains.c delete mode 100644 level_3/firewall/c/main/operate/chains.h delete mode 100644 level_3/firewall/c/main/operate/create.c delete mode 100644 level_3/firewall/c/main/operate/create.h delete mode 100644 level_3/firewall/c/main/operate/default.c delete mode 100644 level_3/firewall/c/main/operate/default.h delete mode 100644 level_3/firewall/c/main/operate/delete.c delete mode 100644 level_3/firewall/c/main/operate/delete.h delete mode 100644 level_3/firewall/c/main/operate/process.c delete mode 100644 level_3/firewall/c/main/operate/process.h delete mode 100644 level_3/firewall/c/main/operate/rules.c delete mode 100644 level_3/firewall/c/main/operate/rules.h delete mode 100644 level_3/firewall/c/main/operate/show.c delete mode 100644 level_3/firewall/c/main/operate/show.h delete mode 100644 level_3/firewall/c/main/print/debug.c delete mode 100644 level_3/firewall/c/main/print/debug.h delete mode 100644 level_3/firewall/c/main/print/error.c delete mode 100644 level_3/firewall/c/main/print/error.h delete mode 100644 level_3/firewall/c/main/print/message.c delete mode 100644 level_3/firewall/c/main/print/message.h delete mode 100644 level_3/firewall/c/main/print/warning.c delete mode 100644 level_3/firewall/c/main/print/warning.h delete mode 100644 level_3/firewall/c/main/signal.c delete mode 100644 level_3/firewall/c/main/signal.h delete mode 100644 level_3/firewall/c/main/thread.c delete mode 100644 level_3/firewall/c/main/thread.h delete mode 100644 level_3/firewall/data/build/defines delete mode 100644 level_3/firewall/data/build/dependencies delete mode 100644 level_3/firewall/data/build/fakefile delete mode 100644 level_3/firewall/data/build/settings delete mode 100644 level_3/firewall/data/documentation/man/man1/firewall.1 delete mode 100644 level_3/firewall/data/settings/network/firewall/default-blacklist delete mode 100644 level_3/firewall/data/settings/network/firewall/default-whitelist delete mode 100644 level_3/firewall/data/settings/network/firewall/example-device-firewall delete mode 100644 level_3/firewall/data/settings/network/firewall/firewall-first delete mode 100644 level_3/firewall/data/settings/network/firewall/firewall-last delete mode 100644 level_3/firewall/data/settings/network/firewall/firewall-other diff --git a/level_3/firewall/c/main/common.c b/level_3/firewall/c/main/common.c deleted file mode 100644 index 2bdae6a..0000000 --- a/level_3/firewall/c/main/common.c +++ /dev/null @@ -1,157 +0,0 @@ -#include "firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_setting_load_ - void firewall_setting_load(const f_console_arguments_t arguments, firewall_main_t * const main) { - - if (!main) return; - - f_console_parameters_t * const parameters = &main->program.parameters; - - main->setting.state.step_small = firewall_allocation_console_d; - - f_console_parameter_process(arguments, parameters, &main->setting.state, 0); - - main->setting.state.step_small = firewall_allocation_small_d; - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->setting.state.status = fll_program_parameter_process_context_standard(F_true, &main->program); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->setting.state.status = fll_program_parameter_process_verbosity_standard(F_true, &main->program); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - if (parameters->array[f_console_standard_parameter_help_e].result & f_console_result_found_d) { - main->setting.flag |= firewall_main_flag_help_d; - - return; - } - - if (parameters->array[f_console_standard_parameter_version_e].result & f_console_result_found_d) { - main->setting.flag |= firewall_main_flag_version_d; - - return; - } - - if (parameters->array[f_console_standard_parameter_copyright_e].result & f_console_result_found_d) { - main->setting.flag |= firewall_main_flag_copyright_d; - - return; - } - - f_number_unsigned_t index = 0; - - if (parameters->array[firewall_parameter_operation_start_e].result & f_console_result_found_d) { - main->setting.flag &= ~firewall_main_flag_operation_d; - main->setting.flag |= firewall_main_flag_operation_start_d; - - index = parameters->array[firewall_parameter_operation_start_e].location; - } - - if (parameters->array[firewall_parameter_operation_stop_e].result & f_console_result_found_d) { - if (!(main->setting.flag & firewall_main_flag_operation_d) || parameters->array[firewall_parameter_operation_stop_e].location > index) { - main->setting.flag &= ~firewall_main_flag_operation_d; - main->setting.flag |= firewall_main_flag_operation_stop_d; - - index = parameters->array[firewall_parameter_operation_stop_e].location; - } - } - - if (parameters->array[firewall_parameter_operation_restart_e].result & f_console_result_found_d) { - if (!(main->setting.flag & firewall_main_flag_operation_d) || parameters->array[firewall_parameter_operation_restart_e].location > index) { - main->setting.flag &= ~firewall_main_flag_operation_d; - main->setting.flag |= firewall_main_flag_operation_restart_d; - - index = parameters->array[firewall_parameter_operation_restart_e].location; - } - } - - if (parameters->array[firewall_parameter_operation_lock_e].result & f_console_result_found_d) { - if (!(main->setting.flag & firewall_main_flag_operation_d) || parameters->array[firewall_parameter_operation_lock_e].location > index) { - main->setting.flag &= ~firewall_main_flag_operation_d; - main->setting.flag |= firewall_main_flag_operation_lock_d; - - index = parameters->array[firewall_parameter_operation_lock_e].location; - } - } - - if (parameters->array[firewall_parameter_operation_show_e].result & f_console_result_found_d) { - if (!(main->setting.flag & firewall_main_flag_operation_d) || parameters->array[firewall_parameter_operation_show_e].location > index) { - main->setting.flag &= ~firewall_main_flag_operation_d; - main->setting.flag |= firewall_main_flag_operation_show_d; - } - } - - if (parameters->array[firewall_parameter_4_e].result & f_console_result_found_d) { - if (parameters->array[firewall_parameter_6_e].result & f_console_result_found_d) { - main->setting.flag |= firewall_main_flag_ipv46_d; - } - else { - main->setting.flag &= ~firewall_main_flag_ipv6_d; - main->setting.flag |= firewall_main_flag_ipv4_d; - } - } - else if (parameters->array[firewall_parameter_6_e].result & f_console_result_found_d) { - main->setting.flag &= ~firewall_main_flag_ipv4_d; - main->setting.flag |= firewall_main_flag_ipv6_d; - } - - if (main->program.pipe & fll_program_data_pipe_input_e) { - main->setting.flag |= firewall_main_flag_pipe_d; - } - else { - main->setting.flag &= ~firewall_main_flag_pipe_d; - } - - if (main->setting.flag & firewall_main_flag_operation_show_d) { - if (parameters->remaining.used) { - main->setting.flag &= ~firewall_main_flag_operation_show_filter_nat_mangle_d; - - for (f_number_unsigned_t i = 0; i < parameters->remaining.used; ++i) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - index = parameters->remaining.array[i]; - - if (f_compare_dynamic(firewall_show_nat_s, parameters->arguments.array[index]) == F_equal_to) { - main->setting.flag |= firewall_main_flag_operation_show_nat_d; - } - else if (f_compare_dynamic(firewall_show_mangle_s, parameters->arguments.array[index]) == F_equal_to) { - main->setting.flag |= firewall_main_flag_operation_show_mangle_d; - } - else if (f_compare_dynamic(firewall_show_filter_s, parameters->arguments.array[index]) == F_equal_to) { - main->setting.flag |= firewall_main_flag_operation_show_filter_d; - } - else { - firewall_print_warning_show_option_unknown(&main->program.warning, parameters->arguments.array[index]); - } - } // for - } - else { - main->setting.flag |= firewall_main_flag_operation_show_filter_nat_mangle_d; - } - } - } -#endif // _di_firewall_setting_load_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/common.h b/level_3/firewall/c/main/common.h deleted file mode 100644 index 629675f..0000000 --- a/level_3/firewall/c/main/common.h +++ /dev/null @@ -1,48 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the common data structures. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_common_h -#define _firewall_common_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Perform the standard program setting load process. - * - * This prints error messages as appropriate. - * - * If either main or setting is NULL, then this immediately returns without doing anything. - * - * @param arguments - * The parameters passed to the process (often referred to as command line arguments). - * @param main - * The main program data and settings. - * - * This alters main.setting.state.status: - * F_okay on success. - * - * Errors (with error bit) from: f_console_parameter_process(). - * Errors (with error bit) from: fll_program_parameter_process_context_standard(). - * - * @see f_console_parameter_process() - * @see fll_program_parameter_process_context_standard() - */ -#ifndef _di_firewall_setting_load_ - extern void firewall_setting_load(const f_console_arguments_t arguments, firewall_main_t * const main); -#endif // _di_firewall_setting_load_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_common_h diff --git a/level_3/firewall/c/main/common/define.c b/level_3/firewall/c/main/common/define.c deleted file mode 100644 index 9bcd373..0000000 --- a/level_3/firewall/c/main/common/define.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/common/define.h b/level_3/firewall/c/main/common/define.h deleted file mode 100644 index 4abada6..0000000 --- a/level_3/firewall/c/main/common/define.h +++ /dev/null @@ -1,132 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the common define types. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_common_define_h -#define _firewall_common_define_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The program allocation defines. - * - * firewall_allocation_*_d: - * - console: An allocation step used for small buffers specifically for console parameter. - * - large: An allocation step used for buffers that are anticipated to have large buffers. - * - pipe: A buffer size used for processing piped data. - * - small: An allocation step used for buffers that are anticipated to have small buffers. - */ -#ifndef _di_firewall_allocation_d_ - #define firewall_allocation_console_d 4 - #define firewall_allocation_large_d 256 - #define firewall_allocation_pipe_d 16384 - #define firewall_allocation_small_d 16 -#endif // _di_firewall_allocation_d_ - -/** - * Flags representing the current state of the processed rule. - * - * firewall_data_is_*_d: - * - none: No flags set. - * - global: The current processed rule is global. - * - local: The current processed rule is lock. - * - main: The current processed rule is main. - * - stop: The current processed rule is stop. - * - stop_main_lock: Helper flag representing main, stop, and lock being set. - */ -#ifndef _di_firewall_data_is_d_ - #define firewall_data_is_none_d 0x0 - #define firewall_data_is_global_d 0x1 - #define firewall_data_is_lock_d 0x2 - #define firewall_data_is_main_d 0x4 - #define firewall_data_is_stop_d 0x8 - #define firewall_data_is_stop_main_lock_d 0xe -#endif // _di_firewall_data_is_d_ - -/** - * Flags passed to the main function or program. - * - * firewall_main_flag_*_d: - * - none: No flags set. - * - copyright: Print copyright. - * - help: Print help. - * - ipv4: Operate in IPv4 by default or enable ipv4 when calling "show" commands. - * - ipv6: Operate in IPv6 by default or enable ipv6 when calling "show" commands. - * - ipv46: A helper flag representing both ipv4 and ipv6 flag bits being set. - * - operation: A helper flag representing every operation flag bit being set. - * - operation_lock: Perform the lock operation. - * - operation_restart: Perform the restart operation. - * - operation_show: Perform the show operation. - * - operation_show_nat: For the show operation, show nat. - * - operation_show_mangle: For the show operation, show mangle. - * - operation_show_filter: For the show operation, show filter. - * - operation_show_filter_nat_mangle: A helper flag representing the show nat, show mangle, and short filter flags set. - * - operation_start: Perform the start operation. - * - operation_start_restart: A helper flag representing both the start and restart operation flag set. - * - operation_stop: Perform the stop operation. - * - operation_stop_restart: A helper flag representing both the stop and restart operation flag set. - * - operation_stop_restart_lock: A helper flag representing both the stop, restart, and lock operation flag set. - * - pipe: Use the input pipe. - * - version: Print version. - * - version_copyright_help: A helper flag representing version, copyright, and help flag bits being set. - */ -#ifndef _di_firewall_main_flag_d_ - #define firewall_main_flag_none_d 0x0 - #define firewall_main_flag_copyright_d 0x1 - #define firewall_main_flag_help_d 0x2 - #define firewall_main_flag_ipv4_d 0x4 - #define firewall_main_flag_ipv6_d 0x8 - #define firewall_main_flag_ipv46_d 0xc - #define firewall_main_flag_operation_d 0xff0 - #define firewall_main_flag_operation_lock_d 0x10 - #define firewall_main_flag_operation_restart_d 0x20 - #define firewall_main_flag_operation_show_d 0x40 - #define firewall_main_flag_operation_show_nat_d 0x80 - #define firewall_main_flag_operation_show_mangle_d 0x100 - #define firewall_main_flag_operation_show_filter_d 0x200 - #define firewall_main_flag_operation_show_filter_nat_mangle_d 0x380 - #define firewall_main_flag_operation_start_d 0x400 - #define firewall_main_flag_operation_start_restart_d 0x420 - #define firewall_main_flag_operation_stop_d 0x800 - #define firewall_main_flag_operation_stop_restart_d 0x820 - #define firewall_main_flag_operation_stop_restart_lock_d 0x830 - #define firewall_main_flag_pipe_d 0x1000 - #define firewall_main_flag_version_d 0x2000 - #define firewall_main_flag_version_copyright_help_d 0x2003 -#endif // _di_firewall_main_flag_d_ - -/** - * The program signal defines. - * - * firewall_signal_*_d: - * - check_failsafe: When using threads, how many consecutive failures to check signal before aborting (as a recursion failsafe). - */ -#ifndef _di_firewall_signal_d_ - #define firewall_signal_check_failsafe_d 20000 -#endif // _di_firewall_signal_d_ - -/** - * A macro wrapping the appropriate signal check function based on threaded/non-threaded support. - */ -#ifndef _di_firewall_signal_check_d_ - #ifdef _di_thread_support_ - #define macro_firewall_signal_check(program, state) fll_program_signal_check_loop(program, state) - #else - #define macro_firewall_signal_check(program, state) fll_program_signal_check_simple(program, state) - #endif // _di_thread_support_ -#endif // _di_firewall_signal_check_d_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_common_define_h diff --git a/level_3/firewall/c/main/common/enumeration.c b/level_3/firewall/c/main/common/enumeration.c deleted file mode 100644 index 9bcd373..0000000 --- a/level_3/firewall/c/main/common/enumeration.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/common/enumeration.h b/level_3/firewall/c/main/common/enumeration.h deleted file mode 100644 index eb61cb1..0000000 --- a/level_3/firewall/c/main/common/enumeration.h +++ /dev/null @@ -1,174 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the common enumeration types. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_common_enumeration_h -#define _firewall_common_enumeration_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The firewall action. - * - * firewall_action_*_e: - * - none: The action is none. - * - append: The action is append. - * - insert: The action is insert. - * - policy: The action is policy. - */ -#ifndef _di_firewall_action_e_ - enum { - firewall_action_none_e, - firewall_action_append_e, - firewall_action_insert_e, - firewall_action_policy_e, - }; // enum -#endif // _di_firewall_action_e_ - -/** - * The firewall chain. - * - * firewall_chain_*_e: - * - none: The chain is none. - * - custom: The chain is custom. - * - forward: The chain is forward. - * - input: The chain is input. - * - output: The chain is output. - * - postrouting: The chain is postrouting. - * - prerouting: The chain is prerouting. - */ -#ifndef _di_firewall_action_e_ - enum { - firewall_chain_none_e, - firewall_chain_custom_e, - firewall_chain_forward_e, - firewall_chain_input_e, - firewall_chain_output_e, - firewall_chain_postrouting_e, - firewall_chain_prerouting_e, - }; // enum -#endif // _di_firewall_action_e_ - -/** - * Flags representing the existence of reserved sets. - * - * firewall_data_has_*_e: - * - none: No flags set. - * - local: The current processed rule is lock. - * - main: The current processed rule is main. - * - stop: The current processed rule is stop. - */ -#ifndef _di_firewall_data_has_e_ - enum { - firewall_data_has_none_e = 0x0, - firewall_data_has_lock_e = 0x1, - firewall_data_has_main_e = 0x2, - firewall_data_has_stop_e = 0x4, - }; // enum -#endif // _di_firewall_data_has_e_ - -/** - * The firewall direction. - * - * firewall_direction_*_e: - * - none: No direction. - * - input: The input direction. - * - output: The output direction. - */ -#ifndef _di_firewall_direction_e_ - enum { - firewall_direction_none_e = 0, - firewall_direction_input_e, - firewall_direction_output_e, - }; // enum -#endif // _di_firewall_direction_e_ - -/** - * The firewall tool (the program being used). - * - * firewall_tool_*_e: - * - none: No flags set. - * - ip46tables: Use both iptables and ip6tables tools. - * - ip6tables: Use the ip6tables tool. - * - ipset: Use the ipset tool. - * - iptables: Use the iptables tool. - */ -#ifndef _di_firewall_tool_e_ - enum { - firewall_tool_none_e = 0, - firewall_tool_ip46tables_e, - firewall_tool_ip6tables_e, - firewall_tool_iptables_e, - firewall_tool_ipset_e, - }; // enum -#endif // _di_firewall_tool_e_ - -/** - * The main program parameters. - */ -#ifndef _di_firewall_parameter_e_ - enum { - firewall_parameter_4_e = f_console_standard_parameter_last_e, - firewall_parameter_6_e, - firewall_parameter_operation_lock_e, - firewall_parameter_operation_restart_e, - firewall_parameter_operation_show_e, - firewall_parameter_operation_start_e, - firewall_parameter_operation_stop_e, - }; // enum - - #define firewall_console_parameter_t_initialize \ - { \ - macro_fll_program_console_parameter_standard_initialize, \ - \ - macro_f_console_parameter_t_initialize_4(firewall_short_4_s, 0, f_console_flag_normal_d), \ - macro_f_console_parameter_t_initialize_4(firewall_short_6_s, 0, f_console_flag_normal_d), \ - macro_f_console_parameter_t_initialize_6(firewall_operation_lock_s, 0, f_console_flag_simple_d), \ - macro_f_console_parameter_t_initialize_6(firewall_operation_restart_s, 0, f_console_flag_simple_d), \ - macro_f_console_parameter_t_initialize_6(firewall_operation_show_s, 0, f_console_flag_simple_d), \ - macro_f_console_parameter_t_initialize_6(firewall_operation_start_s, 0, f_console_flag_simple_d), \ - macro_f_console_parameter_t_initialize_6(firewall_operation_stop_s, 0, f_console_flag_simple_d), \ - } - - #define firewall_parameter_total_d (f_console_parameter_state_type_total_d + 7) -#endif // _di_firewall_parameter_e_ - -/** - * Flags for fine-tuned print control. - * - * firewall_print_flag_*_e: - * - none: No flags set. - * - debug: Stream is for debug printing. - * - error: Stream is for error printing. - * - in: Stream is a source file. - * - message: Stream is for message printing. - * - out: Stream is a destination file. - * - warning: Stream is for warning printing. - */ -#ifndef _di_firewall_print_flag_e_ - enum { - firewall_print_flag_none_e = 0x0, - firewall_print_flag_debug_e = 0x1, - firewall_print_flag_error_e = 0x2, - firewall_print_flag_file_e = 0x4, - firewall_print_flag_in_e = 0x8, - firewall_print_flag_out_e = 0x10, - firewall_print_flag_message_e = 0x20, - firewall_print_flag_warning_e = 0x40, - }; // enum -#endif // _di_firewall_print_flag_e_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_common_enumeration_h diff --git a/level_3/firewall/c/main/common/string.c b/level_3/firewall/c/main/common/string.c deleted file mode 100644 index a390902..0000000 --- a/level_3/firewall/c/main/common/string.c +++ /dev/null @@ -1,125 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_program_version_s_ - const f_string_static_t firewall_program_version_s = macro_f_string_static_t_initialize_1(FIREWALL_program_version_s, 0, FIREWALL_program_version_s_length); -#endif // _di_firewall_program_version_s_ - -#ifndef _di_firewall_program_name_s_ - const f_string_static_t firewall_program_name_s = macro_f_string_static_t_initialize_1(FIREWALL_program_name_s, 0, FIREWALL_program_name_s_length); - const f_string_static_t firewall_program_name_long_s = macro_f_string_static_t_initialize_1(FIREWALL_program_name_long_s, 0, FIREWALL_program_name_long_s_length); -#endif // _di_firewall_program_name_s_ - -#ifndef _di_firewall_program_help_parameters_s_ - const f_string_static_t firewall_program_help_parameters_s = macro_f_string_static_t_initialize_1(FIREWALL_program_help_parameters_s, 0, FIREWALL_program_help_parameters_s_length); -#endif // _di_firewall_program_help_parameters_s_ - -#ifndef _di_firewall_program_parameters_s_ - const f_string_static_t firewall_short_4_s = macro_f_string_static_t_initialize_1(FIREWALL_short_4_s, 0, FIREWALL_short_4_s_length); - const f_string_static_t firewall_short_6_s = macro_f_string_static_t_initialize_1(FIREWALL_short_6_s, 0, FIREWALL_short_6_s_length); -#endif // _di_firewall_program_parameters_s_ - -#ifndef _di_firewall_s_ - const f_string_static_t firewall_action_s = macro_f_string_static_t_initialize_1(FIREWALL_action_s, 0, FIREWALL_action_s_length); - const f_string_static_t firewall_action_append_s = macro_f_string_static_t_initialize_1(FIREWALL_action_append_s, 0, FIREWALL_action_append_s_length); - const f_string_static_t firewall_action_insert_s = macro_f_string_static_t_initialize_1(FIREWALL_action_insert_s, 0, FIREWALL_action_insert_s_length); - const f_string_static_t firewall_action_policy_s = macro_f_string_static_t_initialize_1(FIREWALL_action_policy_s, 0, FIREWALL_action_policy_s_length); - const f_string_static_t firewall_action_none_s = macro_f_string_static_t_initialize_1(FIREWALL_action_none_s, 0, FIREWALL_action_none_s_length); - - const f_string_static_t firewall_action_append_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_action_append_operation_s, 0, FIREWALL_action_append_operation_s_length); - const f_string_static_t firewall_action_insert_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_action_insert_operation_s, 0, FIREWALL_action_insert_operation_s_length); - const f_string_static_t firewall_action_policy_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_action_policy_operation_s, 0, FIREWALL_action_policy_operation_s_length); - - const f_string_static_t firewall_chain_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_s, 0, FIREWALL_chain_s_length); - const f_string_static_t firewall_chain_forward_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_forward_s, 0, FIREWALL_chain_forward_s_length); - const f_string_static_t firewall_chain_drop_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_drop_s, 0, FIREWALL_chain_drop_s_length); - const f_string_static_t firewall_chain_input_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_input_s, 0, FIREWALL_chain_input_s_length); - const f_string_static_t firewall_chain_none_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_none_s, 0, FIREWALL_chain_none_s_length); - const f_string_static_t firewall_chain_output_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_output_s, 0, FIREWALL_chain_output_s_length); - const f_string_static_t firewall_chain_postrouting_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_postrouting_s, 0, FIREWALL_chain_postrouting_s_length); - const f_string_static_t firewall_chain_prerouting_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_prerouting_s, 0, FIREWALL_chain_prerouting_s_length); - - const f_string_static_t firewall_chain_create_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_create_operation_s, 0, FIREWALL_chain_create_operation_s_length); - const f_string_static_t firewall_chain_delete_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_delete_operation_s, 0, FIREWALL_chain_delete_operation_s_length); - const f_string_static_t firewall_chain_flush_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_chain_flush_operation_s, 0, FIREWALL_chain_flush_operation_s_length); - - const f_string_static_t firewall_operation_start_s = macro_f_string_static_t_initialize_1(FIREWALL_operation_start_s, 0, FIREWALL_operation_start_s_length); - const f_string_static_t firewall_operation_stop_s = macro_f_string_static_t_initialize_1(FIREWALL_operation_stop_s, 0, FIREWALL_operation_stop_s_length); - const f_string_static_t firewall_operation_restart_s = macro_f_string_static_t_initialize_1(FIREWALL_operation_restart_s, 0, FIREWALL_operation_restart_s_length); - const f_string_static_t firewall_operation_lock_s = macro_f_string_static_t_initialize_1(FIREWALL_operation_lock_s, 0, FIREWALL_operation_lock_s_length); - const f_string_static_t firewall_operation_show_s = macro_f_string_static_t_initialize_1(FIREWALL_operation_show_s, 0, FIREWALL_operation_show_s_length); - - const f_string_static_t firewall_device_s = macro_f_string_static_t_initialize_1(FIREWALL_device_s, 0, FIREWALL_device_s_length); - const f_string_static_t firewall_device_all_s = macro_f_string_static_t_initialize_1(FIREWALL_device_all_s, 0, FIREWALL_device_all_s_length); - const f_string_static_t firewall_device_this_s = macro_f_string_static_t_initialize_1(FIREWALL_device_this_s, 0, FIREWALL_device_this_s_length); - const f_string_static_t firewall_device_loop_s = macro_f_string_static_t_initialize_1(FIREWALL_device_loop_s, 0, FIREWALL_device_loop_s_length); - - const f_string_static_t firewall_device_input_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_device_input_operation_s, 0, FIREWALL_device_input_operation_s_length); - const f_string_static_t firewall_device_output_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_device_output_operation_s, 0, FIREWALL_device_output_operation_s_length); - - const f_string_static_t firewall_direction_s = macro_f_string_static_t_initialize_1(FIREWALL_direction_s, 0, FIREWALL_direction_s_length); - const f_string_static_t firewall_direction_input_s = macro_f_string_static_t_initialize_1(FIREWALL_direction_input_s, 0, FIREWALL_direction_input_s_length); - const f_string_static_t firewall_direction_output_s = macro_f_string_static_t_initialize_1(FIREWALL_direction_output_s, 0, FIREWALL_direction_output_s_length); - const f_string_static_t firewall_direction_none_s = macro_f_string_static_t_initialize_1(FIREWALL_direction_none_s, 0, FIREWALL_direction_none_s_length); - - const f_string_static_t firewall_group_stop_s = macro_f_string_static_t_initialize_1(FIREWALL_group_stop_s, 0, FIREWALL_group_stop_s_length); - const f_string_static_t firewall_group_lock_s = macro_f_string_static_t_initialize_1(FIREWALL_group_lock_s, 0, FIREWALL_group_lock_s_length); - const f_string_static_t firewall_group_main_s = macro_f_string_static_t_initialize_1(FIREWALL_group_main_s, 0, FIREWALL_group_main_s_length); - - const f_string_static_t firewall_ip_list = macro_f_string_static_t_initialize_1(FIREWALL_ip_list_s, 0, FIREWALL_ip_list_s_length); - const f_string_static_t firewall_ip_list_source_s = macro_f_string_static_t_initialize_1(FIREWALL_ip_list_source_s, 0, FIREWALL_ip_list_source_s_length); - const f_string_static_t firewall_ip_list_source_action_s = macro_f_string_static_t_initialize_1(FIREWALL_ip_list_source_action_s, 0, FIREWALL_ip_list_source_action_s_length); - const f_string_static_t firewall_ip_list_destination_s = macro_f_string_static_t_initialize_1(FIREWALL_ip_list_destination_s, 0, FIREWALL_ip_list_destination_s_length); - const f_string_static_t firewall_ip_list_destination_action_s = macro_f_string_static_t_initialize_1(FIREWALL_ip_list_destination_action_s, 0, FIREWALL_ip_list_destination_action_s_length); - - const f_string_static_t firewall_protocol_s = macro_f_string_static_t_initialize_1(FIREWALL_protocol_s, 0, FIREWALL_protocol_s_length); - const f_string_static_t firewall_protocol_operation_s = macro_f_string_static_t_initialize_1(FIREWALL_protocol_operation_s, 0, FIREWALL_protocol_operation_s_length); - const f_string_static_t firewall_protocol_none_s = macro_f_string_static_t_initialize_1(FIREWALL_protocol_none_s, 0, FIREWALL_protocol_none_s_length); - - const f_string_static_t firewall_rule_s = macro_f_string_static_t_initialize_1(FIREWALL_rule_s, 0, FIREWALL_rule_s_length); - - const f_string_static_t firewall_show_filter_s = macro_f_string_static_t_initialize_1(FIREWALL_show_filter_s, 0, FIREWALL_show_filter_s_length); - const f_string_static_t firewall_show_mangle_s = macro_f_string_static_t_initialize_1(FIREWALL_show_mangle_s, 0, FIREWALL_show_mangle_s_length); - const f_string_static_t firewall_show_nat_s = macro_f_string_static_t_initialize_1(FIREWALL_show_nat_s, 0, FIREWALL_show_nat_s_length); - - const f_string_static_t firewall_show_parameter_exact_s = macro_f_string_static_t_initialize_1(FIREWALL_show_parameter_exact_s, 0, FIREWALL_show_parameter_exact_s_length); - const f_string_static_t firewall_show_parameter_verbose_s = macro_f_string_static_t_initialize_1(FIREWALL_show_parameter_verbose_s, 0, FIREWALL_show_parameter_verbose_s_length); - const f_string_static_t firewall_show_parameter_table_s = macro_f_string_static_t_initialize_1(FIREWALL_show_parameter_table_s, 0, FIREWALL_show_parameter_table_s_length); - const f_string_static_t firewall_show_parameter_numeric_s = macro_f_string_static_t_initialize_1(FIREWALL_show_parameter_numeric_s, 0, FIREWALL_show_parameter_numeric_s_length); - const f_string_static_t firewall_show_parameter_list_s = macro_f_string_static_t_initialize_1(FIREWALL_show_parameter_list_s, 0, FIREWALL_show_parameter_list_s_length); - - const f_string_static_t firewall_tool_s = macro_f_string_static_t_initialize_1(FIREWALL_tool_s, 0, FIREWALL_tool_s_length); - const f_string_static_t firewall_tool_iptables_s = macro_f_string_static_t_initialize_1(FIREWALL_tool_iptables_s, 0, FIREWALL_tool_iptables_s_length); - const f_string_static_t firewall_tool_ip6tables_s = macro_f_string_static_t_initialize_1(FIREWALL_tool_ip6tables_s, 0, FIREWALL_tool_ip6tables_s_length); - const f_string_static_t firewall_tool_ip46tables_s = macro_f_string_static_t_initialize_1(FIREWALL_tool_ip46tables_s, 0, FIREWALL_tool_ip46tables_s_length); - const f_string_static_t firewall_tool_ipset_s = macro_f_string_static_t_initialize_1(FIREWALL_tool_ipset_s, 0, FIREWALL_tool_ipset_s_length); -#endif // _di_firewall_s_ - -#ifndef _di_firewall_path_s_ - const f_string_static_t firewall_file_first_s = macro_f_string_static_t_initialize_1(FIREWALL_file_first_s, 0, FIREWALL_file_first_s_length); - const f_string_static_t firewall_file_last_s = macro_f_string_static_t_initialize_1(FIREWALL_file_last_s, 0, FIREWALL_file_last_s_length); - const f_string_static_t firewall_file_other_s = macro_f_string_static_t_initialize_1(FIREWALL_file_other_s, 0, FIREWALL_file_other_s_length); - const f_string_static_t firewall_file_suffix_s = macro_f_string_static_t_initialize_1(FIREWALL_file_suffix_s, 0, FIREWALL_file_suffix_s_length); - - const f_string_static_t firewall_network_firewall_path_s = macro_f_string_static_t_initialize_1(FIREWALL_network_firewall_path_s, 0, FIREWALL_network_firewall_path_s_length); - const f_string_static_t firewall_network_devices_s = macro_f_string_static_t_initialize_1(FIREWALL_network_devices_s, 0, FIREWALL_network_devices_s_length); -#endif // _di_firewall_path_s_ - -#ifndef _di_firewall_print_show_s_ - const f_string_static_t firewall_print_show_filter_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_filter_s, 0, FIREWALL_print_show_filter_s_length); - const f_string_static_t firewall_print_show_ipv4_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_ipv4_s, 0, FIREWALL_print_show_ipv4_s_length); - const f_string_static_t firewall_print_show_ipv6_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_ipv6_s, 0, FIREWALL_print_show_ipv6_s_length); - const f_string_static_t firewall_print_show_mangle_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_mangle_s, 0, FIREWALL_print_show_mangle_s_length); - const f_string_static_t firewall_print_show_nat_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_nat_s, 0, FIREWALL_print_show_nat_s_length); - - const f_string_static_t firewall_print_show_bars_26_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_bars_26_s, 0, FIREWALL_print_show_bars_26_s_length); - const f_string_static_t firewall_print_show_bars_27_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_bars_27_s, 0, FIREWALL_print_show_bars_27_s_length); - const f_string_static_t firewall_print_show_bars_28_s = macro_f_string_static_t_initialize_1(FIREWALL_print_show_bars_28_s, 0, FIREWALL_print_show_bars_28_s_length); -#endif // _di_firewall_print_show_s_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/common/string.h b/level_3/firewall/c/main/common/string.h deleted file mode 100644 index d35813f..0000000 --- a/level_3/firewall/c/main/common/string.h +++ /dev/null @@ -1,404 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the common string structures. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_common_string_h -#define _firewall_common_string_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The program version. - */ -#ifndef _di_firewall_program_version_s_ - #define FIREWALL_program_version_major_s F_string_ascii_0_s - #define FIREWALL_program_version_minor_s F_string_ascii_8_s - #define FIREWALL_program_version_micro_s F_string_ascii_0_s - - #define FIREWALL_program_version_major_s_length F_string_ascii_0_s_length - #define FIREWALL_program_version_minor_s_length F_string_ascii_8_s_length - #define FIREWALL_program_version_micro_s_length F_string_ascii_0_s_length - - #if !(defined(FIREWALL_program_version_nano_prefix_s) && defined(FIREWALL_program_version_nano_prefix_s_length)) - #define FIREWALL_program_version_nano_prefix_s - #define FIREWALL_program_version_nano_prefix_s_length 0 - #endif // !(defined(FIREWALL_program_version_nano_prefix_s) && defined(FIREWALL_program_version_nano_prefix_s_length)) - - #if !(defined(FIREWALL_program_version_nano_s) && defined(FIREWALL_program_version_nano_s_length)) - #define FIREWALL_program_version_nano_s - #define FIREWALL_program_version_nano_s_length 0 - #endif // !(defined(FIREWALL_program_version_nano_s) && defined(FIREWALL_program_version_nano_s_length)) - - #define FIREWALL_program_version_s FIREWALL_program_version_major_s F_string_ascii_period_s FIREWALL_program_version_minor_s F_string_ascii_period_s FIREWALL_program_version_micro_s FIREWALL_program_version_nano_prefix_s FIREWALL_program_version_nano_s - - #define FIREWALL_program_version_s_length FIREWALL_program_version_major_s_length + F_string_ascii_period_s_length + FIREWALL_program_version_minor_s_length + F_string_ascii_period_s_length + FIREWALL_program_version_micro_s_length + FIREWALL_program_version_nano_prefix_s_length + FIREWALL_program_version_nano_s_length - - extern const f_string_static_t firewall_program_version_s; -#endif // _di_firewall_program_version_s_ - -/** - * The program name. - */ -#ifndef _di_firewall_program_name_s_ - #define FIREWALL_program_name_s "firewall" - #define FIREWALL_program_name_long_s "Kevux Firewall Manager" - - #define FIREWALL_program_name_s_length 8 - #define FIREWALL_program_name_long_s_length 22 - - extern const f_string_static_t firewall_program_name_s; - extern const f_string_static_t firewall_program_name_long_s; -#endif // _di_firewall_program_name_s_ - -/** - * The program help related data. - */ -#ifndef _di_firewall_program_help_parameters_s_ - #define FIREWALL_program_help_parameters_s "operation" - #define FIREWALL_program_help_parameters_s_length 9 - - extern const f_string_static_t firewall_program_help_parameters_s; -#endif // _di_firewall_program_help_parameters_s_ - -/** - * The main program parameters. - */ -#ifndef _di_firewall_parameter_s_ - #define FIREWALL_short_4_s "4" - #define FIREWALL_short_6_s "6" - - #define FIREWALL_short_4_s_length 1 - #define FIREWALL_short_6_s_length 1 - - extern const f_string_static_t firewall_short_4_s; - extern const f_string_static_t firewall_short_6_s; -#endif // _di_firewall_parameter_s_ - -/** - * The firewall strings. - */ -#ifndef _di_firewall_s_ - #define FIREWALL_action_s "action" - #define FIREWALL_action_append_s "append" - #define FIREWALL_action_insert_s "insert" - #define FIREWALL_action_policy_s "policy" - #define FIREWALL_action_none_s "none" - - #define FIREWALL_action_append_operation_s "-A" - #define FIREWALL_action_insert_operation_s "-I" - #define FIREWALL_action_policy_operation_s "-P" - - #define FIREWALL_chain_s "chain" - #define FIREWALL_chain_forward_s "FORWARD" - #define FIREWALL_chain_drop_s "DROP" - #define FIREWALL_chain_input_s "INPUT" - #define FIREWALL_chain_none_s "none" - #define FIREWALL_chain_output_s "OUTPUT" - #define FIREWALL_chain_postrouting_s "POSTROUTING" - #define FIREWALL_chain_prerouting_s "PREROUTING" - - #define FIREWALL_chain_create_operation_s "-N" - #define FIREWALL_chain_delete_operation_s "-X" - #define FIREWALL_chain_flush_operation_s "-F" - - #define FIREWALL_operation_start_s "start" - #define FIREWALL_operation_stop_s "stop" - #define FIREWALL_operation_restart_s "restart" - #define FIREWALL_operation_lock_s "lock" - #define FIREWALL_operation_show_s "show" - - #define FIREWALL_device_s "device" - #define FIREWALL_device_all_s "all" - #define FIREWALL_device_this_s "this" - #define FIREWALL_device_loop_s "lo" - - #define FIREWALL_device_input_operation_s "-i" - #define FIREWALL_device_output_operation_s "-o" - - #define FIREWALL_direction_s "direction" - #define FIREWALL_direction_input_s "input" - #define FIREWALL_direction_output_s "output" - #define FIREWALL_direction_none_s "none" - - #define FIREWALL_group_stop_s "stop" - #define FIREWALL_group_lock_s "lock" - #define FIREWALL_group_main_s "main" - - #define FIREWALL_ip_list_s "ip_list" - #define FIREWALL_ip_list_source_s "source" - #define FIREWALL_ip_list_source_action_s "-s" - #define FIREWALL_ip_list_destination_s "destination" - #define FIREWALL_ip_list_destination_action_s "-d" - - #define FIREWALL_protocol_s "protocol" - #define FIREWALL_protocol_operation_s "-p" - #define FIREWALL_protocol_none_s "none" - - #define FIREWALL_rule_s "rule" - - #define FIREWALL_show_filter_s "filter" - #define FIREWALL_show_mangle_s "mangle" - #define FIREWALL_show_nat_s "nat" - - #define FIREWALL_show_parameter_exact_s "-x" - #define FIREWALL_show_parameter_verbose_s "-v" - #define FIREWALL_show_parameter_table_s "-t" - #define FIREWALL_show_parameter_numeric_s "--numeric" - #define FIREWALL_show_parameter_list_s "--list" - - #define FIREWALL_tool_s "tool" - #define FIREWALL_tool_iptables_s "iptables" - #define FIREWALL_tool_ip6tables_s "ip6tables" - #define FIREWALL_tool_ip46tables_s "ip46tables" - #define FIREWALL_tool_ipset_s "ipset" - - #define FIREWALL_action_s_length 6 - #define FIREWALL_action_append_s_length 6 - #define FIREWALL_action_insert_s_length 6 - #define FIREWALL_action_policy_s_length 6 - #define FIREWALL_action_none_s_length 4 - - #define FIREWALL_action_append_operation_s_length 2 - #define FIREWALL_action_insert_operation_s_length 2 - #define FIREWALL_action_policy_operation_s_length 2 - - #define FIREWALL_chain_s_length 5 - #define FIREWALL_chain_forward_s_length 7 - #define FIREWALL_chain_drop_s_length 4 - #define FIREWALL_chain_input_s_length 5 - #define FIREWALL_chain_none_s_length 4 - #define FIREWALL_chain_output_s_length 6 - #define FIREWALL_chain_postrouting_s_length 12 - #define FIREWALL_chain_prerouting_s_length 11 - - #define FIREWALL_chain_create_operation_s_length 2 - #define FIREWALL_chain_delete_operation_s_length 2 - #define FIREWALL_chain_flush_operation_s_length 2 - - #define FIREWALL_operation_start_s_length 5 - #define FIREWALL_operation_stop_s_length 4 - #define FIREWALL_operation_restart_s_length 7 - #define FIREWALL_operation_lock_s_length 4 - #define FIREWALL_operation_show_s_length 4 - - #define FIREWALL_device_s_length 6 - #define FIREWALL_device_all_s_length 3 - #define FIREWALL_device_this_s_length 4 - #define FIREWALL_device_loop_s_length 2 - - #define FIREWALL_device_input_operation_s_length 2 - #define FIREWALL_device_output_operation_s_length 2 - - #define FIREWALL_direction_s_length 9 - #define FIREWALL_direction_input_s_length 5 - #define FIREWALL_direction_output_s_length 6 - #define FIREWALL_direction_none_s_length 4 - - #define FIREWALL_group_stop_s_length 4 - #define FIREWALL_group_lock_s_length 4 - #define FIREWALL_group_main_s_length 4 - - #define FIREWALL_ip_list_s_length 7 - #define FIREWALL_ip_list_source_s_length 6 - #define FIREWALL_ip_list_source_action_s_length 2 - #define FIREWALL_ip_list_destination_s_length 11 - #define FIREWALL_ip_list_destination_action_s_length 2 - - #define FIREWALL_protocol_s_length 8 - #define FIREWALL_protocol_operation_s_length 2 - #define FIREWALL_protocol_none_s_length 4 - - #define FIREWALL_rule_s_length 4 - - #define FIREWALL_show_filter_s_length 6 - #define FIREWALL_show_mangle_s_length 6 - #define FIREWALL_show_nat_s_length 3 - - #define FIREWALL_show_parameter_exact_s_length 2 - #define FIREWALL_show_parameter_verbose_s_length 2 - #define FIREWALL_show_parameter_table_s_length 2 - #define FIREWALL_show_parameter_numeric_s_length 9 - #define FIREWALL_show_parameter_list_s_length 6 - - #define FIREWALL_tool_s_length 4 - #define FIREWALL_tool_iptables_s_length 8 - #define FIREWALL_tool_ip6tables_s_length 9 - #define FIREWALL_tool_ip46tables_s_length 10 - #define FIREWALL_tool_ipset_s_length 5 - - extern const f_string_static_t firewall_action_s; - extern const f_string_static_t firewall_action_append_s; - extern const f_string_static_t firewall_action_insert_s; - extern const f_string_static_t firewall_action_policy_s; - extern const f_string_static_t firewall_action_none_s; - - extern const f_string_static_t firewall_action_append_operation_s; - extern const f_string_static_t firewall_action_insert_operation_s; - extern const f_string_static_t firewall_action_policy_operation_s; - - extern const f_string_static_t firewall_chain_s; - extern const f_string_static_t firewall_chain_forward_s; - extern const f_string_static_t firewall_chain_drop_s; - extern const f_string_static_t firewall_chain_input_s; - extern const f_string_static_t firewall_chain_none_s; - extern const f_string_static_t firewall_chain_output_s; - extern const f_string_static_t firewall_chain_postrouting_s; - extern const f_string_static_t firewall_chain_prerouting_s; - - extern const f_string_static_t firewall_chain_create_operation_s; - extern const f_string_static_t firewall_chain_delete_operation_s; - extern const f_string_static_t firewall_chain_flush_operation_s; - - extern const f_string_static_t firewall_operation_start_s; - extern const f_string_static_t firewall_operation_stop_s; - extern const f_string_static_t firewall_operation_restart_s; - extern const f_string_static_t firewall_operation_lock_s; - extern const f_string_static_t firewall_operation_show_s; - - extern const f_string_static_t firewall_device_s; - extern const f_string_static_t firewall_device_all_s; - extern const f_string_static_t firewall_device_this_s; - extern const f_string_static_t firewall_device_loop_s; - - extern const f_string_static_t firewall_device_input_operation_s; - extern const f_string_static_t firewall_device_output_operation_s; - - extern const f_string_static_t firewall_direction_s; - extern const f_string_static_t firewall_direction_input_s; - extern const f_string_static_t firewall_direction_output_s; - extern const f_string_static_t firewall_direction_none_s; - - extern const f_string_static_t firewall_group_stop_s; - extern const f_string_static_t firewall_group_lock_s; - extern const f_string_static_t firewall_group_main_s; - - extern const f_string_static_t firewall_ip_list; - extern const f_string_static_t firewall_ip_list_source_s; - extern const f_string_static_t firewall_ip_list_source_action_s; - extern const f_string_static_t firewall_ip_list_destination_s; - extern const f_string_static_t firewall_ip_list_destination_action_s; - - extern const f_string_static_t firewall_protocol_s; - extern const f_string_static_t firewall_protocol_operation_s; - extern const f_string_static_t firewall_protocol_none_s; - - extern const f_string_static_t firewall_rule_s; - - extern const f_string_static_t firewall_show_filter_s; - extern const f_string_static_t firewall_show_mangle_s; - extern const f_string_static_t firewall_show_nat_s; - - extern const f_string_static_t firewall_show_parameter_exact_s; - extern const f_string_static_t firewall_show_parameter_verbose_s; - extern const f_string_static_t firewall_show_parameter_table_s; - extern const f_string_static_t firewall_show_parameter_numeric_s; - extern const f_string_static_t firewall_show_parameter_list_s; - - extern const f_string_static_t firewall_tool_s; - extern const f_string_static_t firewall_tool_iptables_s; - extern const f_string_static_t firewall_tool_ip6tables_s; - extern const f_string_static_t firewall_tool_ip46tables_s; - extern const f_string_static_t firewall_tool_ipset_s; -#endif // _di_firewall_s_ - -/** - * The main program operations. - */ -#ifndef _di_firewall_operation_s_ - #define FIREWALL_operation_start_s "start" - #define FIREWALL_operation_stop_s "stop" - #define FIREWALL_operation_restart_s "restart" - #define FIREWALL_operation_lock_s "lock" - #define FIREWALL_operation_show_s "show" - - #define FIREWALL_operation_start_s_length 5 - #define FIREWALL_operation_stop_s_length 4 - #define FIREWALL_operation_restart_s_length 7 - #define FIREWALL_operation_lock_s_length 4 - #define FIREWALL_operation_show_s_length 4 - - extern const f_string_static_t firewall_operation_start_s; - extern const f_string_static_t firewall_operation_stop_s; - extern const f_string_static_t firewall_operation_restart_s; - extern const f_string_static_t firewall_operation_lock_s; - extern const f_string_static_t firewall_operation_show_s; -#endif // _di_firewall_operation_s_ - -/** - * The program paths. - */ -#ifndef _di_firewall_path_s_ - #define FIREWALL_file_first_s "firewall-first" - #define FIREWALL_file_last_s "firewall-last" - #define FIREWALL_file_other_s "firewall-other" - #define FIREWALL_file_suffix_s "-firewall" - - #define FIREWALL_network_firewall_path_s "/etc/network/firewall/" - #define FIREWALL_network_devices_s "/sys/class/net/" - - #define FIREWALL_file_first_s_length 14 - #define FIREWALL_file_last_s_length 13 - #define FIREWALL_file_other_s_length 14 - #define FIREWALL_file_suffix_s_length 9 - - #define FIREWALL_network_firewall_path_s_length 22 - #define FIREWALL_network_devices_s_length 15 - - extern const f_string_static_t firewall_file_first_s; - extern const f_string_static_t firewall_file_last_s; - extern const f_string_static_t firewall_file_other_s; - extern const f_string_static_t firewall_file_suffix_s; - - extern const f_string_static_t firewall_network_firewall_path_s; - extern const f_string_static_t firewall_network_devices_s; -#endif // _di_firewall_path_s_ - -/** - * The show option related strings for printing to the screen. - */ -#ifndef _di_firewall_print_show_s_ - #define FIREWALL_print_show_filter_s "FILTER" - #define FIREWALL_print_show_ipv4_s "IPv4" - #define FIREWALL_print_show_ipv6_s "IPv6" - #define FIREWALL_print_show_mangle_s "MANGLE" - #define FIREWALL_print_show_nat_s "NAT" - - #define FIREWALL_print_show_bars_26_s "==========================" - #define FIREWALL_print_show_bars_27_s "============================" - #define FIREWALL_print_show_bars_28_s "============================" - - #define FIREWALL_print_show_filter_s_length 6 - #define FIREWALL_print_show_ipv4_s_length 4 - #define FIREWALL_print_show_ipv6_s_length 4 - #define FIREWALL_print_show_mangle_s_length 6 - #define FIREWALL_print_show_nat_s_length 3 - - #define FIREWALL_print_show_bars_26_s_length 26 - #define FIREWALL_print_show_bars_27_s_length 27 - #define FIREWALL_print_show_bars_28_s_length 28 - - extern const f_string_static_t firewall_print_show_filter_s; - extern const f_string_static_t firewall_print_show_ipv4_s; - extern const f_string_static_t firewall_print_show_ipv6_s; - extern const f_string_static_t firewall_print_show_mangle_s; - extern const f_string_static_t firewall_print_show_nat_s; - - extern const f_string_static_t firewall_print_show_bars_26_s; - extern const f_string_static_t firewall_print_show_bars_27_s; - extern const f_string_static_t firewall_print_show_bars_28_s; -#endif // _di_firewall_print_show_s_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_common_string_h diff --git a/level_3/firewall/c/main/common/type.c b/level_3/firewall/c/main/common/type.c deleted file mode 100644 index 2587146..0000000 --- a/level_3/firewall/c/main/common/type.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_cache_delete_ - void firewall_cache_delete(firewall_cache_t * const cache) { - - if (!cache) return; - - f_file_close(&cache->file); - - f_memory_array_resize(0, sizeof(f_char_t), (void **) &cache->buffer.string, &cache->buffer.used, &cache->buffer.size); - f_memory_array_resize(0, sizeof(f_char_t), (void **) &cache->device.string, &cache->device.used, &cache->device.size); - f_memory_array_resize(0, sizeof(f_char_t), (void **) &cache->ip_list.string, &cache->ip_list.used, &cache->ip_list.size); - f_memory_array_resize(0, sizeof(f_char_t), (void **) &cache->path_file.string, &cache->path_file.used, &cache->path_file.size); - f_memory_array_resize(0, sizeof(f_char_t), (void **) &cache->path_file_specific.string, &cache->path_file_specific.used, &cache->path_file_specific.size); - f_memory_array_resize(0, sizeof(f_char_t), (void **) &cache->protocol.string, &cache->protocol.used, &cache->protocol.size); - - f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &cache->arguments.array, &cache->arguments.used, &cache->arguments.size, &f_string_dynamics_delete_callback); - - f_memory_array_resize(0, sizeof(f_number_unsigned_t), (void **) &cache->delimits.array, &cache->delimits.used, &cache->delimits.size); - - f_memory_array_resize(0, sizeof(f_range_t), (void **) &cache->basic_objects.array, &cache->basic_objects.used, &cache->basic_objects.size); - f_memory_arrays_resize(0, sizeof(f_ranges_t), (void **) &cache->basic_contents.array, &cache->basic_contents.used, &cache->basic_contents.size, &f_rangess_delete_callback); - } -#endif // _di_firewall_cache_delete_ - -#ifndef _di_firewall_data_delete_ - void firewall_data_delete(firewall_data_t * const data) { - - if (!data) return; - - f_memory_array_resize(0, sizeof(f_char_t), (void **) &data->buffer.string, &data->buffer.used, &data->buffer.size); - - f_memory_array_resize(0, sizeof(f_number_unsigned_t), (void **) &data->chain_ids.array, &data->chain_ids.used, &data->chain_ids.size); - - f_memory_array_resize(0, sizeof(f_range_t), (void **) &data->comments.array, &data->comments.used, &data->comments.size); - f_memory_array_resize(0, sizeof(f_range_t), (void **) &data->chain_objects.array, &data->chain_objects.used, &data->chain_objects.size); - f_memory_array_resize(0, sizeof(f_range_t), (void **) &data->rule_objects.array, &data->rule_objects.used, &data->rule_objects.size); - - f_memory_arrays_resize(0, sizeof(f_ranges_t), (void **) &data->chain_contents.array, &data->chain_contents.used, &data->chain_contents.size, &f_rangess_delete_callback); - f_memory_arrays_resize(0, sizeof(f_ranges_t), (void **) &data->rule_contents.array, &data->rule_contents.used, &data->rule_contents.size, &f_rangess_delete_callback); - } -#endif // _di_firewall_data_delete_ - -#ifndef _di_firewall_main_delete_ - void firewall_main_delete(firewall_main_t * const main) { - - if (!main) return; - - fll_program_data_delete(&main->program); - - firewall_setting_delete(&main->setting); - firewall_data_delete(&main->data); - firewall_cache_delete(&main->cache); - } -#endif // _di_firewall_main_delete_ - -#ifndef _di_firewall_setting_delete_ - void firewall_setting_delete(firewall_setting_t * const setting) { - - if (!setting) return; - - f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &setting->chains.array, &setting->chains.used, &setting->chains.size, &f_string_dynamics_delete_callback); - f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &setting->devices.array, &setting->devices.used, &setting->devices.size, &f_string_dynamics_delete_callback); - } -#endif // _di_firewall_setting_delete_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/common/type.h b/level_3/firewall/c/main/common/type.h deleted file mode 100644 index 8a5532b..0000000 --- a/level_3/firewall/c/main/common/type.h +++ /dev/null @@ -1,279 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the common type structures. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_common_type_h -#define _firewall_common_type_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Pre-define the main type so it can be used in child classes. - */ -#ifndef _di_firewall_main_t_typedef_ - typedef struct firewall_main_t_ firewall_main_t; -#endif // _di_firewall_main_t_typedef_ - -/** - * A cache used for during processing. - * - * Properties: - * - file: The file structure. - * - * - buffer: A buffer used when proessing the basic objects and contents cache. - * - device: The device. - * - ip_list: The ip list. - * - path_file: The path to a file. - * - path_file_specific: The specific path to a file. - * - protocol: The protocol. - * - arguments: The arguments array. - * - * - delimits: The delimits array used when loading FSS data. - * - * - basic_objects: The FSS Basic Objects. - * - basic_contents: The FSS Basic Contents. - */ -#ifndef _di_firewall_cache_t_ - typedef struct { - f_file_t file; - - f_string_dynamic_t buffer; - f_string_dynamic_t device; - f_string_dynamic_t ip_list; - f_string_dynamic_t path_file; - f_string_dynamic_t path_file_specific; - f_string_dynamic_t protocol; - f_string_dynamics_t arguments; - - f_number_unsigneds_t delimits; - - f_ranges_t basic_objects; - f_rangess_t basic_contents; - } firewall_cache_t; - - #define firewall_cache_t_initialize \ - { \ - f_file_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_string_dynamics_t_initialize, \ - f_number_unsigneds_t_initialize, \ - f_ranges_t_initialize, \ - f_rangess_t_initialize, \ - } -#endif // _di_firewall_cache_t_ - -/** - * A data used for building and processing firewall rules. - * - * Properties: - * - is: Flags used to represent the state in the current set being processed. - * - has: Flags used to represent if each at has a position. - * - * - chain: The chain currently being processed (fom chain_contents). - * - device: The device position. - * - lock: The lock position. - * - main: The main position. - * - stop: The stop position. - * - range: A range used during operation processing. - * - * - file: The file name currently in use. - * - buffer: The entire set of chains and rules to operate on. - * - * - chain_ids: The list of chain IDs. - * - * - chain_objects: The list of chain Objects. - * - rule_objects: The list of rule Objects. - * - chain_contents: The list of chain Contents. - * - rule_contents: The list of rule Contents. - */ -#ifndef _di_firewall_data_t_ - typedef struct { - uint8_t is; - uint8_t has; - - f_number_unsigned_t chain; - f_number_unsigned_t device; - f_number_unsigned_t lock; - f_number_unsigned_t main; - f_number_unsigned_t stop; - f_range_t range; - - f_string_static_t file; - f_string_dynamic_t buffer; - - f_number_unsigneds_t chain_ids; - - f_ranges_t comments; - f_ranges_t chain_objects; - f_ranges_t rule_objects; - f_rangess_t chain_contents; - f_rangess_t rule_contents; - } firewall_data_t; - - #define firewall_data_t_initialize \ - { \ - firewall_data_is_none_d, \ - firewall_data_has_none_e, \ - 0, \ - 0, \ - 0, \ - 0, \ - 0, \ - f_range_t_initialize, \ - f_string_static_t_initialize, \ - f_string_dynamic_t_initialize, \ - f_number_unsigneds_t_initialize, \ - f_ranges_t_initialize, \ - f_ranges_t_initialize, \ - f_ranges_t_initialize, \ - f_rangess_t_initialize, \ - f_rangess_t_initialize, \ - } -#endif // _di_firewall_data_t_ - -/** - * The firewall main program settings. - * - * This is passed to the program-specific main entry point to designate program settings. - * These program settings are often processed from the program arguments (often called the command line arguments). - * - * Properties: - * - flag: Flags passed to the main function. - * - state: The state information. - * - * - chains: An array of all chains. @todo probably should be moved into data. - * - devices: An array of all devices. @todo probably should be moved into data. - */ -#ifndef _di_firewall_setting_t_ - typedef struct { - uint16_t flag; - f_state_t state; - - f_string_dynamics_t chains; - f_string_dynamics_t devices; - } firewall_setting_t; - - #define firewall_setting_t_initialize \ - { \ - firewall_main_flag_none_d, \ - f_state_t_initialize, \ - f_string_dynamics_t_initialize, \ - f_string_dynamics_t_initialize, \ - } -#endif // _di_firewall_setting_t_ - -/** - * The main program data as a single structure. - * - * Properties: - * - program: The main program data. - * - setting: The settings data. - * - data: The firewall data. - * - cache: The firewall cache. - */ -#ifndef _di_firewall_main_t_ - struct firewall_main_t_ { - fll_program_data_t program; - firewall_setting_t setting; - firewall_data_t data; - firewall_cache_t cache; - }; - - #define firewall_main_t_initialize \ - { \ - fll_program_data_t_initialize, \ - firewall_setting_t_initialize, \ - firewall_data_t_initialize, \ - firewall_cache_t_initialize, \ - } -#endif // _di_firewall_main_t_ - -/** - * De-allocate firewall cache. - * - * @param cache - * The firewall cache. - * - * Must not be NULL. - * - * This does not alter main.setting.state.status. - * - * @see f_file_close() - * @see f_memory_array_resize() - * @see f_memory_arrays_resize() - */ -#ifndef _di_firewall_cache_delete_ - extern void firewall_cache_delete(firewall_cache_t * const cache); -#endif // _di_firewall_cache_delete_ - -/** - * De-allocate firewall data. - * - * @param data - * The firewall data. - * - * Must not be NULL. - * - * This does not alter main.setting.state.status. - * - * @see f_memory_array_resize() - * @see f_memory_arrays_resize() - */ -#ifndef _di_firewall_data_delete_ - extern void firewall_data_delete(firewall_data_t * const data); -#endif // _di_firewall_data_delete_ - -/** - * De-allocate main program data. - * - * @param main - * The main program data. - * - * Must not be NULL. - * - * This does not alter main.setting.state.status. - * - * @see fll_program_data_delete() - * @see firewall_cache_delete() - * @see firewall_data_delete() - * @see firewall_setting_delete() - */ -#ifndef _di_firewall_main_delete_ - extern void firewall_main_delete(firewall_main_t * const main); -#endif // _di_firewall_main_delete_ - -/** - * Delete the program main setting data. - * - * @param setting - * The program main setting data. - * - * Must not be NULL. - * - * This does not alter setting.state.status. - * - * @see f_memory_arrays_resize() - */ -#ifndef _di_firewall_setting_delete_ - extern void firewall_setting_delete(firewall_setting_t * const setting); -#endif // _di_firewall_setting_delete_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_common_type_h diff --git a/level_3/firewall/c/main/firewall.c b/level_3/firewall/c/main/firewall.c deleted file mode 100644 index 3956a1d..0000000 --- a/level_3/firewall/c/main/firewall.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_main_ - void firewall_main(firewall_main_t * const main) { - - if (!main || F_status_is_error(main->setting.state.status)) return; - - main->setting.state.status = F_okay; - - if (main->setting.flag & firewall_main_flag_version_copyright_help_d) { - if (main->setting.flag & firewall_main_flag_help_d) { - firewall_print_message_help(&main->program.message); - } - else if (main->setting.flag & firewall_main_flag_version_d) { - fll_program_print_version(&main->program.message, firewall_program_version_s); - } - else if (main->setting.flag & firewall_main_flag_copyright_d) { - fll_program_print_copyright(&main->program.message, fll_program_copyright_year_author_s); - } - - if (main->program.signal_received) { - fll_program_print_signal_received(&main->program.warning, main->program.signal_received); - } - - return; - } - - if (main->setting.flag & firewall_main_flag_operation_d) { - firewall_operate(main); - } - else { - main->setting.state.status = F_status_set_error(F_parameter); - - firewall_print_error_operation_specified_not(&main->program.error); - } - - if (main->program.signal_received) { - fll_program_print_signal_received(&main->program.warning, main->program.signal_received); - } - - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_interrupt) return; - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_main_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/firewall.h b/level_3/firewall/c/main/firewall.h deleted file mode 100644 index 5fd83f1..0000000 --- a/level_3/firewall/c/main/firewall.h +++ /dev/null @@ -1,100 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * This is the program is intended to be used to manage iptables. - * - * This program utilizes the Featureless Linux Library. - */ -#ifndef _firewall_h -#define _firewall_h - -// Libc includes. -#include - -// FLL-0 includes. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// FLL-1 includes. -#include - -// FLL-2 includes. -#include -#include -#include -#include -#include -#include -#include -#include - -// Firewall includes. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Execute main program. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: f_file_stream_open() - * Errors (with error bit) from: firewall_load_line() - * Errors (with error bit) from: firewall_process() - * - * @see f_file_stream_open() - * @see firewall_load_line() - * @see firewall_process() - */ -#ifndef _di_firewall_main_ - extern void firewall_main(firewall_main_t * const main); -#endif // _di_firewall_main_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_h diff --git a/level_3/firewall/c/main/main.c b/level_3/firewall/c/main/main.c deleted file mode 100644 index 9cfcb47..0000000 --- a/level_3/firewall/c/main/main.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "firewall.h" - -int main(const int argc, const f_string_t *argv, const f_string_t *envp) { - - firewall_main_t data = firewall_main_t_initialize; - - data.program.debug.flag |= firewall_print_flag_debug_e | firewall_print_flag_out_e; - data.program.error.flag |= firewall_print_flag_error_e | firewall_print_flag_out_e; - data.program.output.flag |= firewall_print_flag_out_e; - data.program.message.flag |= firewall_print_flag_message_e | firewall_print_flag_out_e; - data.program.warning.flag |= firewall_print_flag_warning_e | firewall_print_flag_out_e; - data.program.error.custom = (void *) &data; - data.program.debug.custom = (void *) &data; - data.program.message.custom = (void *) &data; - data.program.output.custom = (void *) &data; - data.program.warning.custom = (void *) &data; - - f_console_parameter_t parameters[] = firewall_console_parameter_t_initialize; - - data.program.parameters.array = parameters; - data.program.parameters.used = firewall_parameter_total_d; - data.program.environment = envp; - - data.setting.flag |= firewall_main_flag_ipv46_d; - - if (f_pipe_input_exists()) { - data.program.pipe = fll_program_data_pipe_input_e; - } - - fll_program_standard_set_up(&data.program); - - f_file_umask_get(&data.program.umask); - - #ifdef _di_thread_support_ - { - const f_console_arguments_t arguments = macro_f_console_arguments_t_initialize_1(argc, argv, envp); - - firewall_setting_load(arguments, &data); - } - - firewall_main(&data); - #else - { - f_thread_id_t id_signal; - - memset(&id_signal, 0, sizeof(f_thread_id_t)); - - data.setting.state.status = f_thread_create(0, &id_signal, &firewall_thread_signal, (void *) &data); - - if (F_status_is_error(data.setting.state.status)) { - firewall_print_error(&data.program.error, F_status_debug_source_d); - } - else { - { - const f_console_arguments_t arguments = macro_f_console_arguments_t_initialize_1(argc, argv, envp); - - firewall_setting_load(arguments, &data); - } - - if (!macro_firewall_signal_check(&data.program, &data.setting.state)) { - firewall_main(&data); - } - - f_thread_cancel(id_signal); - f_thread_join(id_signal, 0); - } - } - #endif // _di_thread_support_ - - firewall_main_delete(&data); - - fll_program_standard_set_down(&data.program); - - return (F_status_is_error(data.setting.state.status) || data.setting.state.status == F_false) ? 1 : 0; -} diff --git a/level_3/firewall/c/main/main.h b/level_3/firewall/c/main/main.h deleted file mode 100644 index 2d3e3e0..0000000 --- a/level_3/firewall/c/main/main.h +++ /dev/null @@ -1,38 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * This file is only ever included by main/main.c and should not normally be included anywhere else. - * Anything that wants to include this should be providing the "firewall" program functionality in some manner. - */ -#ifndef _firewall_main_h -#define _firewall_main_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Standard program entry point. - * - * @param argc - * The number of arguments. - * @param argv - * The array of arguments. - * @param envp - * The array of all environment variables on program start. - * - * @return - * 0 on success. - * 1 on error. - */ -extern int main(const int argc, const f_string_t *argv, const f_string_t *envp); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_main_h diff --git a/level_3/firewall/c/main/operate.c b/level_3/firewall/c/main/operate.c deleted file mode 100644 index dddf91a..0000000 --- a/level_3/firewall/c/main/operate.c +++ /dev/null @@ -1,246 +0,0 @@ -#include "firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_ - void firewall_operate(firewall_main_t * const main) { - - if (!main) return; - - main->data.is = firewall_data_is_global_d; - - if (main->setting.flag & firewall_main_flag_operation_show_d) { - firewall_operate_show(main); - - return; - } - - main->setting.state.status = f_directory_list(firewall_network_devices_s, 0, alphasort, &main->setting.devices); - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_data_not) { - firewall_print_error_network_device_none(&main->program.error); - } - else if (F_status_set_fine(main->setting.state.status) == F_failure) { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, firewall_network_devices_s, f_file_operation_read_s, fll_error_file_type_directory_e); - } - else { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - return; - } - - f_number_unsigned_t i = 0; - - // Remove "lo" (loopback) from the device listing. - for (; i < main->setting.devices.used; ++i) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (f_compare_dynamic(firewall_device_loop_s, main->setting.devices.array[i]) == F_equal_to) { - main->data.file = main->setting.devices.array[i]; - - for (--main->setting.devices.used; i < main->setting.devices.used; ++i) { - main->setting.devices.array[i] = main->setting.devices.array[i + 1]; - } // for - - main->setting.devices.array[main->setting.devices.used] = main->data.file; - } - } // for - - main->data.file.string = 0; - main->data.file.used = 0; - - if (main->setting.flag & firewall_main_flag_operation_stop_restart_lock_d) { - main->data.file.used = firewall_network_firewall_path_s.used + firewall_file_other_s.used; - - f_char_t path_file_other[main->data.file.used + 1]; - main->data.file.string = path_file_other; - path_file_other[main->data.file.used] = 0; - - memcpy(path_file_other, firewall_network_firewall_path_s.string, sizeof(f_char_t) * firewall_network_firewall_path_s.used); - memcpy(path_file_other + firewall_network_firewall_path_s.used, firewall_file_other_s.string, sizeof(f_char_t) * firewall_file_other_s.used); - - firewall_operate_buffer_chain(main, main->data.file, F_false); - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return; - - for (i = 0; i < main->data.chain_objects.used; ++i) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (!(main->data.has & firewall_data_has_stop_e) && f_compare_dynamic_partial_string(firewall_group_stop_s.string, main->data.buffer, firewall_group_stop_s.used, main->data.chain_objects.array[i]) == F_equal_to) { - main->data.stop = i; - main->data.has |= firewall_data_has_stop_e; - } - else if (!(main->data.has & firewall_data_has_lock_e) && f_compare_dynamic_partial_string(firewall_group_lock_s.string, main->data.buffer, firewall_group_lock_s.used, main->data.chain_objects.array[i]) == F_equal_to) { - main->data.lock = i; - main->data.has |= firewall_data_has_lock_e; - } - } // for - - if (main->setting.flag & firewall_main_flag_operation_lock_d) { - if (main->data.has & firewall_data_has_lock_e) { - firewall_operate_delete_chains(main); - - firewall_operate_default_lock(main); - - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return; - - main->data.chain = main->data.lock; - main->data.is = firewall_data_is_lock_d; - main->data.range.start = main->data.chain_contents.array[main->data.lock].array[0].start; - main->data.range.stop = main->data.chain_contents.array[main->data.lock].array[0].stop; - - firewall_operate_buffer_rules(main); - - firewall_operate_rules(main); - } - else { - main->setting.state.status = F_status_set_error(F_data); - - firewall_print_error_operation_files_missing(&main->program.error, firewall_operation_lock_s, main->data.file); - } - - return; - } - - if (main->setting.flag & firewall_main_flag_operation_stop_restart_d) { - if (main->data.has & firewall_data_has_stop_e) { - firewall_operate_delete_chains(main); - - firewall_operate_default_lock(main); - - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return; - - main->data.chain = main->data.stop; - main->data.is = firewall_data_is_global_d | firewall_data_is_stop_d; - main->data.range.start = main->data.chain_contents.array[main->data.stop].array[0].start; - main->data.range.stop = main->data.chain_contents.array[main->data.stop].array[0].stop; - - firewall_operate_buffer_rules(main); - - firewall_operate_rules(main); - - if (F_status_is_error(main->setting.state.status) || (main->data.has & firewall_main_flag_operation_stop_d) || main->setting.state.status == F_child) return; - } - else { - main->setting.state.status = F_status_set_error(F_data); - - firewall_print_error_operation_files_missing(&main->program.error, firewall_operation_stop_s, main->data.file); - - return; - } - } - - main->data.file.string = 0; - main->data.file.used = 0; - } - - if (main->setting.flag & firewall_main_flag_operation_start_restart_d) { - main->data.file.used = firewall_network_firewall_path_s.used + firewall_file_first_s.used; - - f_char_t path_file_first[main->data.file.used + 1]; - main->data.file.string = path_file_first; - path_file_first[main->data.file.used] = 0; - - memcpy(path_file_first, firewall_network_firewall_path_s.string, sizeof(f_char_t) * firewall_network_firewall_path_s.used); - memcpy(path_file_first + firewall_network_firewall_path_s.used, firewall_file_first_s.string, sizeof(f_char_t) * firewall_file_first_s.used); - - firewall_operate_buffer_chain(main, main->data.file, F_false); - - if (main->setting.flag & firewall_main_flag_operation_start_d) { - firewall_operate_delete_chains(main); - - firewall_operate_default_lock(main); - } - - firewall_operate_create_custom_chains(main); - - main->data.is = firewall_data_is_global_d; - - firewall_operate_chains(main); - - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child || (main->setting.flag & firewall_main_flag_operation_stop_d)) return; - - for (f_number_unsigned_t j = 0; j < main->setting.devices.used; ++j) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - main->cache.path_file.used = 0; - main->data.device = j; - - main->setting.state.status = f_memory_array_increase_by(firewall_network_firewall_path_s.used + main->setting.devices.array[j].used + firewall_file_suffix_s.used + 1, sizeof(f_char_t), (void **) &main->cache.path_file.string, &main->cache.path_file.used, &main->cache.path_file.size); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->data.file = main->cache.path_file; - - main->setting.state.status = f_string_dynamic_append(firewall_network_firewall_path_s, &main->cache.path_file); - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_string_dynamic_append(main->setting.devices.array[j], &main->cache.path_file); - } - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_string_dynamic_append(firewall_file_suffix_s, &main->cache.path_file); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - firewall_operate_buffer_chain(main, main->cache.path_file, F_true); - - firewall_operate_create_custom_chains(main); - - main->data.is = 0; - - firewall_operate_chains(main); - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child || (main->setting.flag & firewall_main_flag_operation_stop_d)) return; - } // for - - main->cache.path_file.used = 0; - - main->setting.state.status = f_string_dynamic_append(firewall_network_firewall_path_s, &main->cache.path_file); - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_string_dynamic_append(firewall_file_last_s, &main->cache.path_file); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->data.file.used = main->cache.path_file.used; - - firewall_operate_buffer_chain(main, main->cache.path_file, F_false); - - firewall_operate_create_custom_chains(main); - - main->data.is = firewall_data_is_global_d; - - firewall_operate_chains(main); - if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return; - - main->data.file.string = 0; - main->data.file.used = 0; - } - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate.h b/level_3/firewall/c/main/operate.h deleted file mode 100644 index 1948e00..0000000 --- a/level_3/firewall/c/main/operate.h +++ /dev/null @@ -1,59 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides operate functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_h -#define _firewall_operate_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Perform the firewall operation. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * F_child on child process exiting. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: f_directory_list() - * Errors (with error bit) from: f_memory_array_increase_by() - * Errors (with error bit) from: firewall_operate_buffer_chain() - * Errors (with error bit) from: firewall_operate_create_custom_chains() - * Errors (with error bit) from: firewall_operate_default_lock() - * Errors (with error bit) from: firewall_operate_delete_chains() - * Errors (with error bit) from: firewall_operate_rules() - * Errors (with error bit) from: firewall_operate_process_rules() - * Errors (with error bit) from: firewall_operate_show() - * - * @see f_directory_list() - * @see f_memory_array_increase_by() - * @see firewall_operate_buffer_chain() - * @see firewall_operate_create_custom_chains() - * @see firewall_operate_default_lock() - * @see firewall_operate_delete_chains() - * @see firewall_operate_rules() - * @see firewall_operate_process_rules() - * @see firewall_operate_show() - */ -#ifndef _di_firewall_operate_ - extern void firewall_operate(firewall_main_t * const main); -#endif // _di_firewall_operate_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_h diff --git a/level_3/firewall/c/main/operate/buffer.c b/level_3/firewall/c/main/operate/buffer.c deleted file mode 100644 index a5728de..0000000 --- a/level_3/firewall/c/main/operate/buffer.c +++ /dev/null @@ -1,100 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_buffer_chain_ - void firewall_operate_buffer_chain(firewall_main_t * const main, const f_string_static_t file, const bool optional) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - main->data.buffer.used = 0; - main->data.chain_contents.used = 0; - main->data.chain_objects.used = 0; - main->cache.delimits.used = 0; - - main->setting.state.status = f_file_open(file, 0, &main->cache.file); - - if (F_status_is_error(main->setting.state.status)) { - if (!optional || optional && F_status_set_fine(main->setting.state.status) != F_file_found_not && F_status_set_fine(main->setting.state.status) != F_file_open && F_status_set_fine(main->setting.state.status) != F_file_descriptor) { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, file, f_file_operation_open_s, fll_error_file_type_file_e); - - return; - } - } - - main->setting.state.status = f_file_read(main->cache.file, &main->data.buffer); - - f_file_stream_flush(main->cache.file); - f_file_stream_close(&main->cache.file); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, file, f_file_operation_read_s, fll_error_file_type_file_e); - - return; - } - - if (main->data.buffer.used) { - main->data.range.start = 0; - main->data.range.stop = main->data.buffer.used - 1; - - fll_fss_basic_list_read(main->data.buffer, &main->data.range, &main->data.chain_objects, &main->data.chain_contents, &main->cache.delimits, 0, &main->data.comments, &main->setting.state); - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_data_not_eos || F_status_set_fine(main->setting.state.status) == F_data_not || F_status_set_fine(main->setting.state.status) == F_data_not_stop) { - firewall_print_error_file_empty(&main->program.error, file); - } - else { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, file, f_file_operation_process_s, fll_error_file_type_file_e); - } - - return; - } - else { - f_fss_apply_delimit(main->cache.delimits, &main->data.buffer, &main->setting.state); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - } - } - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_buffer_chain_ - -#ifndef _di_firewall_operate_buffer_rules_ - void firewall_operate_buffer_rules(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - main->cache.delimits.used = 0; - main->data.rule_contents.used = 0; - main->data.rule_objects.used = 0; - - fll_fss_extended_read(main->data.buffer, &main->data.range, &main->data.rule_objects, &main->data.rule_contents, 0, 0, &main->cache.delimits, 0, &main->setting.state); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - f_fss_apply_delimit(main->cache.delimits, &main->data.buffer, &main->setting.state); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_buffer_rules_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/buffer.h b/level_3/firewall/c/main/operate/buffer.h deleted file mode 100644 index 3bcc4df..0000000 --- a/level_3/firewall/c/main/operate/buffer.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate buffer functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_buffer_h -#define _firewall_operate_buffer_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Buffer firewall chain. - * - * The rules being processed are selected from main.data.range within main.data.buffer. - * Delimits are applied to the main.data.buffer on success. - * - * @param main - * The main program and setting data. - * - * This alters: - * - main.cache.delimits. - * - main.data.buffer. - * - main.data.chain_contents. - * - main.data.chain_objects. - * - * This alters main.setting.state.status: - * F_okay on success. - * F_child on child process exiting. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: f_file_open() - * Errors (with error bit) from: f_file_read() - * Errors (with error bit) from: f_fss_apply_delimit() - * Errors (with error bit) from: fll_fss_basic_list_read() - * @param file - * File name to read the rules from. - * @param optional - * TRUE if this files is optional. - * FALSE otherwise (more are errors returned when not optional). - * - * @see f_file_open() - * @see f_file_read() - * @see f_fss_apply_delimit() - * @see fll_fss_basic_list_read() - */ -#ifndef _di_firewall_operate_buffer_chain_ - extern void firewall_operate_buffer_chain(firewall_main_t * const main, const f_string_static_t file, const bool optional); -#endif // _di_firewall_operate_buffer_chain_ - -/** - * Buffer firewall rules. - * - * The rules being processed are selected from main.data.range within main.data.buffer. - * Delimits are applied to the main.data.buffer on success. - * - * @param main - * The main program and setting data. - * - * This alters: - * - main.cache.delimits. - * - main.data.buffer. - * - main.data.rule_contents. - * - main.data.rule_objects. - * - * This alters main.setting.state.status: - * F_okay on success. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: f_fss_apply_delimit() - * Errors (with error bit) from: firewall_operate_process_rules() - * Errors (with error bit) from: fll_fss_extended_read() - * - * @see f_fss_apply_delimit() - * @see firewall_operate_process_rules() - * @see fll_fss_extended_read() - */ -#ifndef _di_firewall_operate_buffer_rules_ - extern void firewall_operate_buffer_rules(firewall_main_t * const main); -#endif // _di_firewall_operate_buffer_rules_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_buffer_h diff --git a/level_3/firewall/c/main/operate/chains.c b/level_3/firewall/c/main/operate/chains.c deleted file mode 100644 index e920aba..0000000 --- a/level_3/firewall/c/main/operate/chains.c +++ /dev/null @@ -1,38 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_chains_ - void firewall_operate_chains(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - for (f_number_unsigned_t i = 0; i < main->data.chain_contents.used; ++i) { - - main->data.range = main->data.chain_contents.array[i].array[0]; - - if ((main->data.has & firewall_data_has_main_e) && i == main->data.main) { - main->data.is |= firewall_data_is_main_d; - } - else { - main->data.is &= ~firewall_data_is_main_d; - } - - main->data.chain = i; - - firewall_operate_buffer_rules(main); - - firewall_operate_rules(main); - - if (F_status_is_error(main->setting.state.status) || (main->setting.flag & firewall_main_flag_operation_stop_d) || main->setting.state.status == F_child) return; - } // for - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_chains_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/chains.h b/level_3/firewall/c/main/operate/chains.h deleted file mode 100644 index 1288344..0000000 --- a/level_3/firewall/c/main/operate/chains.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate chains functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_chains_h -#define _firewall_operate_chains_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Load and operate the each of the Content chains. - * - * @param main - * The main program and setting data. - * - * This alters: - * - main.data.is. - * - main.data.range. - * - * This alters main.setting.state.status: - * F_okay on success. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: firewall_operate_rules() - * - * @see firewall_operate_rules() - */ -#ifndef _di_firewall_operate_chains_ - extern void firewall_operate_chains(firewall_main_t * const main); -#endif // _di_firewall_operate_chains_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_chains_h diff --git a/level_3/firewall/c/main/operate/create.c b/level_3/firewall/c/main/operate/create.c deleted file mode 100644 index ff6d37b..0000000 --- a/level_3/firewall/c/main/operate/create.c +++ /dev/null @@ -1,227 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_create_custom_chains_ - void firewall_operate_create_custom_chains(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - uint8_t new_chain = F_false; - uint8_t create_chain = F_false; - - int return_code = 0; - f_number_unsigned_t i = 0; - f_number_unsigned_t j = 0; - f_number_unsigned_t t = 0; - f_number_unsigned_t length = 0; - - const f_string_static_t tools[2] = { main->setting.flag & firewall_main_flag_ipv4_d ? firewall_tool_iptables_s : f_string_empty_s, main->setting.flag & firewall_main_flag_ipv6_d ? firewall_tool_ip6tables_s : f_string_empty_s }; - - main->data.chain_ids.used = 0; - main->cache.arguments.used = 0; - - main->setting.state.status = f_memory_array_increase_by(2, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_memory_array_increase_by(main->data.chain_objects.used, sizeof(f_number_unsigned_t), (void **) &main->data.chain_ids.array, &main->data.chain_ids.used, &main->data.chain_ids.size); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->cache.arguments.array[0].used = 0; - main->cache.arguments.array[1].used = 0; - main->data.chain_ids.used = main->data.chain_objects.used; - memset(main->data.chain_ids.array, 0, sizeof(f_number_unsigned_t) * main->data.chain_ids.used); - - main->setting.state.status = f_string_dynamic_append(firewall_chain_create_operation_s, &main->cache.arguments.array[0]); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->setting.state.status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_char_t), (void **) &main->cache.arguments.array[1].string, &main->cache.arguments.array[1].used, &main->cache.arguments.array[1].size); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->cache.arguments.used = 2; - main->data.has = 0; - - for (; i < main->data.chain_objects.used; ++i) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - new_chain = F_true; - j = 0; - - // Skip globally reserved chain name: main. - if (f_compare_dynamic_partial_string(firewall_group_main_s.string, main->data.buffer, firewall_group_main_s.used, main->data.chain_objects.array[i]) == F_equal_to) { - new_chain = F_false; - main->data.has |= firewall_data_has_main_e; - main->data.main = i; - } - - // Skip globally reserved chain name: stop. - if (f_compare_dynamic_partial_string(firewall_group_stop_s.string, main->data.buffer, firewall_group_stop_s.used, main->data.chain_objects.array[i]) == F_equal_to) { - new_chain = F_false; - main->data.has |= firewall_data_has_stop_e; - main->data.stop = i; - } - - // Skip globally reserved chain name: lock. - if (f_compare_dynamic_partial_string(firewall_group_lock_s.string, main->data.buffer, firewall_group_lock_s.used, main->data.chain_objects.array[i]) == F_equal_to) { - new_chain = F_false; - main->data.has |= firewall_data_has_lock_e; - main->data.lock = i; - } - - // Skip globally reserved chain name: none. - if (f_compare_dynamic_partial_string(firewall_chain_none_s.string, main->data.buffer, firewall_chain_none_s.used, main->data.chain_objects.array[i]) == F_equal_to) { - new_chain = F_false; - } - - if (new_chain) { - for (; j < main->setting.chains.used; ++j) { - - if (f_compare_dynamic_partial_string(main->setting.chains.array[j].string, main->data.buffer, main->setting.chains.array[j].used, main->data.chain_objects.array[i]) == F_equal_to) { - new_chain = F_false; - main->data.chain_ids.array[i] = j; - - break; - } - } // for - } - - if (new_chain) { - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->setting.chains.array, &main->setting.chains.used, &main->setting.chains.size); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - create_chain = F_true; - length = (main->data.chain_objects.array[i].start > main->data.chain_objects.array[i].stop) ? 0 : (main->data.chain_objects.array[i].stop - main->data.chain_objects.array[i].start) + 1; - - main->cache.arguments.array[1].used = 0; - - main->setting.state.status = f_memory_array_increase_by(length + 1, sizeof(f_char_t), (void **) &main->cache.arguments.array[1].string, &main->cache.arguments.array[1].used, &main->cache.arguments.array[1].size); - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_memory_array_increase_by(length + 1, sizeof(f_char_t), (void **) &main->setting.chains.array[main->setting.chains.used].string, &main->setting.chains.array[main->setting.chains.used].used, &main->setting.chains.array[main->setting.chains.used].size); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - f_string_dynamic_partial_append_nulless(main->data.buffer, main->data.chain_objects.array[i], &main->cache.arguments.array[1]); - - if (F_status_is_error_not(main->setting.state.status)) { - f_string_dynamic_partial_append_nulless(main->data.buffer, main->data.chain_objects.array[i], &main->setting.chains.array[main->setting.chains.used]); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - f_string_dynamic_terminate_after(&main->cache.arguments.array[1]); - - if (F_status_is_error_not(main->setting.state.status)) { - f_string_dynamic_terminate_after(&main->setting.chains.array[main->setting.chains.used]); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->data.chain_ids.array[i] = main->setting.chains.used; - - if (f_compare_dynamic(main->cache.arguments.array[1], firewall_chain_forward_s) == F_equal_to) { - create_chain = F_false; - } - else if (f_compare_dynamic(main->cache.arguments.array[1], firewall_chain_input_s) == F_equal_to) { - create_chain = F_false; - } - else if (f_compare_dynamic(main->cache.arguments.array[1], firewall_chain_output_s) == F_equal_to) { - create_chain = F_false; - } - else if (f_compare_dynamic(main->cache.arguments.array[1], firewall_chain_postrouting_s) == F_equal_to) { - create_chain = F_false; - } - else if (f_compare_dynamic(main->cache.arguments.array[1], firewall_chain_prerouting_s) == F_equal_to) { - create_chain = F_false; - } - - if (create_chain) { - for (t = 0; t < 2; ++t) { - - if (!tools[t].used) continue; - - return_code = 0; - - firewall_print_debug_tool(&main->program.warning, tools[t], main->cache.arguments); - - main->setting.state.status = fll_execute_program(tools[t], main->cache.arguments, 0, 0, (void *) &return_code); - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (return_code && F_status_is_error_not(main->setting.state.status)) { - firewall_print_error_operation_return_code(&main->program.error, tools[t], main->cache.arguments, return_code); - } - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_failure) { - firewall_print_error_operation(&main->program.error, tools[t], main->cache.arguments); - } - else { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - return; - } - } // for - } - - ++main->setting.chains.used; - } - } // for - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_create_custom_chains_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/create.h b/level_3/firewall/c/main/operate/create.h deleted file mode 100644 index 7363d49..0000000 --- a/level_3/firewall/c/main/operate/create.h +++ /dev/null @@ -1,54 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate create functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_create_h -#define _firewall_operate_create_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Apply firewall rules for creating custom chains. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * F_child on child process exiting. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: f_memory_array_increase() - * Errors (with error bit) from: f_memory_array_increase_by() - * Errors (with error bit) from: f_string_dynamic_append() - * Errors (with error bit) from: fll_execute_program() - * @param file - * File name to read the rules from. - * @param optional - * TRUE if this files is optional. - * FALSE otherwise (more are errors returned when not optional). - * - * @see f_memory_array_increase() - * @see f_memory_array_increase_by() - * @see f_string_dynamic_append() - * @see fll_execute_program() - */ -#ifndef _di_firewall_operate_create_custom_chains_ - extern void firewall_operate_create_custom_chains(firewall_main_t * const main); -#endif // _di_firewall_operate_create_custom_chains_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_create_h diff --git a/level_3/firewall/c/main/operate/default.c b/level_3/firewall/c/main/operate/default.c deleted file mode 100644 index 3dbb2c5..0000000 --- a/level_3/firewall/c/main/operate/default.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_default_lock_ - void firewall_operate_default_lock(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - const f_string_static_t chains[3] = { firewall_chain_input_s, firewall_chain_output_s, firewall_chain_forward_s }; - const f_string_static_t tools[2] = { main->setting.flag & firewall_main_flag_ipv4_d ? firewall_tool_iptables_s : f_string_empty_s, main->setting.flag & firewall_main_flag_ipv6_d ? firewall_tool_ip6tables_s : f_string_empty_s }; - - f_string_statics_t arguments = f_string_statics_t_initialize; - arguments.used = 3; - - f_string_static_t argument_array[arguments.used]; - arguments.array = argument_array; - arguments.array[0] = firewall_action_policy_operation_s; - arguments.array[2] = firewall_chain_drop_s; - - int return_code = 0; - uint8_t i = 0; - uint8_t t = 0; - - for (; i < 3; ++i) { - - arguments.array[1] = chains[i]; - - for (t = 0; t < 2; ++t) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (!tools[t].used) continue; - - firewall_print_debug_tool(&main->program.warning, tools[t], arguments); - - return_code = 0; - - main->setting.state.status = fll_execute_program(tools[t], arguments, 0, 0, (void *) &return_code); - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_failure) { - firewall_print_error_operation(&main->program.error, tools[t], arguments); - } - else { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - return; - } - else if (return_code) { - firewall_print_error_operation_return_code(&main->program.error, tools[t], main->cache.arguments, return_code); - } - } // for - } // for - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_default_lock_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/default.h b/level_3/firewall/c/main/operate/default.h deleted file mode 100644 index e7cb15f..0000000 --- a/level_3/firewall/c/main/operate/default.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate default functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_default_h -#define _firewall_operate_default_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Apply firewall rules intended to lock down the firewall. - * - * This is intended to setup the firewall with rules that prevent access to or from the network. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * F_child on child process exiting. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: fll_execute_program() - * - * @see fll_execute_program() - */ -#ifndef _di_firewall_operate_default_lock_ - extern void firewall_operate_default_lock(firewall_main_t * const main); -#endif // _di_firewall_operate_default_lock_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_default_h diff --git a/level_3/firewall/c/main/operate/delete.c b/level_3/firewall/c/main/operate/delete.c deleted file mode 100644 index 837908e..0000000 --- a/level_3/firewall/c/main/operate/delete.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_delete_chains_ - void firewall_operate_delete_chains(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - const f_string_static_t tools[2] = { main->setting.flag & firewall_main_flag_ipv4_d ? firewall_tool_iptables_s : f_string_empty_s, main->setting.flag & firewall_main_flag_ipv6_d ? firewall_tool_ip6tables_s : f_string_empty_s }; - const f_string_static_t command[2] = { firewall_chain_flush_operation_s, firewall_chain_delete_operation_s }; - - f_string_statics_t arguments = f_string_statics_t_initialize; - arguments.used = 1; - - f_string_static_t argument_array[arguments.used]; - arguments.array = argument_array; - argument_array[0] = firewall_chain_flush_operation_s; - - int return_code = 0; - uint8_t i = 0; - uint8_t t = 0; - - for (i = 0; i < 2; ++i) { - - argument_array[0] = command[i]; - - for (t = 0; t < 2; ++t) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (!tools[t].used) continue; - - return_code = 0; - - firewall_print_debug_tool(&main->program.warning, tools[t], arguments); - - main->setting.state.status = fll_execute_program(tools[t], arguments, 0, 0, (void *) &return_code); - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_failure) { - firewall_print_error_operation(&main->program.error, tools[t], arguments); - } - else { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - return; - } - else if (return_code) { - firewall_print_error_operation_return_code(&main->program.error, tools[t], main->cache.arguments, return_code); - } - } // for - } // for - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_delete_chains_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/delete.h b/level_3/firewall/c/main/operate/delete.h deleted file mode 100644 index f64d9b4..0000000 --- a/level_3/firewall/c/main/operate/delete.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate delete functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_delete_h -#define _firewall_operate_delete_h - -#ifdef __cplusplus -extern "C" { -#endif - - /** - * Unapply (remove) the firewall rules, deleting all existing firewall rules being used. - * - * This function is not about de-allocating memory. - * This function is not about modifying settings or files. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * F_child on child process exiting. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: fll_execute_program() - * - * @see fll_execute_program() - */ -#ifndef _di_firewall_operate_delete_chains_ - extern void firewall_operate_delete_chains(firewall_main_t * const main); -#endif // _di_firewall_operate_delete_chains_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_delete_h diff --git a/level_3/firewall/c/main/operate/process.c b/level_3/firewall/c/main/operate/process.c deleted file mode 100644 index dcdbd38..0000000 --- a/level_3/firewall/c/main/operate/process.c +++ /dev/null @@ -1,612 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_process_rules_perform_ - void firewall_operate_process_rules(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - uint8_t valid = F_true; - uint8_t is_ip_list = F_false; - uint8_t ip_list_direction = F_false; // false = source, true = destination. - uint8_t use_protocol = F_false; - uint8_t chain = firewall_chain_none_e; - uint8_t direction = firewall_direction_none_e; - uint8_t action = firewall_action_append_e; - - int return_code = 0; - f_number_unsigned_t at = 0; - f_number_unsigned_t i = 0; - f_number_unsigned_t t = 0; - - // Set the default here, but allow for the firewall rules to override these settings. - f_string_static_t tools[2] = { main->setting.flag & firewall_main_flag_ipv4_d ? firewall_tool_iptables_s : f_string_empty_s, main->setting.flag & firewall_main_flag_ipv6_d ? firewall_tool_ip6tables_s : f_string_empty_s }; - - f_ranges_t * const rule_objects = &main->data.rule_objects; - f_rangess_t * const rule_contents = &main->data.rule_contents; - - if (!(main->data.is & firewall_data_is_global_d)) { - if (main->setting.devices.array[main->data.device].used) { - main->cache.device.used = 0; - - main->setting.state.status = f_string_dynamic_append(main->setting.devices.array[main->data.device], &main->cache.device); - if (F_status_is_error(main->setting.state.status)) return; - } - } - - // For custom chains, the chain command may not be specified. - if (!(main->data.is & firewall_data_is_stop_main_lock_d)) { - chain = firewall_chain_custom_e; - } - - for (; i < rule_objects->used; ++i) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - valid = F_true; - is_ip_list = F_false; - ip_list_direction = F_false; - - main->cache.ip_list.used = 0; - - // Process chain rule. - if (f_compare_dynamic_partial_string(firewall_chain_s.string, main->data.buffer, firewall_chain_s.used, rule_objects->array[i]) == F_equal_to) { - if (chain == firewall_chain_custom_e) { - - // Custom chains can only apply to themselves, so silently ignore chain commands specified within a custom chain. - firewall_print_warning_chain_meaningless_line(&main->program.warning, i); - - continue; - } - - if (rule_contents->array[i].used != 1) { - valid = F_false; - } - else if (f_compare_dynamic_partial_string(firewall_chain_input_s.string, main->data.buffer, firewall_chain_input_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - chain = firewall_chain_input_e; - } - else if (f_compare_dynamic_partial_string(firewall_chain_output_s.string, main->data.buffer, firewall_chain_output_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - chain = firewall_chain_output_e; - } - else if (f_compare_dynamic_partial_string(firewall_chain_forward_s.string, main->data.buffer, firewall_chain_forward_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - chain = firewall_chain_forward_e; - } - else if (f_compare_dynamic_partial_string(firewall_chain_postrouting_s.string, main->data.buffer, firewall_chain_postrouting_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - chain = firewall_chain_postrouting_e; - } - else if (f_compare_dynamic_partial_string(firewall_chain_prerouting_s.string, main->data.buffer, firewall_chain_prerouting_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - chain = firewall_chain_prerouting_e; - } - else if (f_compare_dynamic_partial_string(firewall_chain_none_s.string, main->data.buffer, firewall_chain_none_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - chain = firewall_chain_none_e; - } - else { - valid = F_false; - } - - if (valid) continue; - } - - // Process direction rule - else if (f_compare_dynamic_partial_string(firewall_direction_s.string, main->data.buffer, firewall_direction_s.used, rule_objects->array[i]) == F_equal_to) { - if (rule_contents->array[i].used != 1) { - valid = F_false; - } - else if (f_compare_dynamic_partial_string(firewall_direction_input_s.string, main->data.buffer, firewall_direction_input_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - direction = firewall_direction_input_e; - } - else if (f_compare_dynamic_partial_string(firewall_direction_output_s.string, main->data.buffer, firewall_direction_output_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - direction = firewall_direction_output_e; - } - else if (f_compare_dynamic_partial_string(firewall_direction_none_s.string, main->data.buffer, firewall_direction_none_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - direction = firewall_direction_none_e; - } - else { - - // Direction must be specified, and no custom directions are allowed. - valid = F_false; - } - - if (valid) continue; - } - - // Process device rule. - else if (f_compare_dynamic_partial_string(firewall_device_s.string, main->data.buffer, firewall_device_s.used, rule_objects->array[i]) == F_equal_to) { - if (rule_contents->array[i].used != 1) { - valid = F_false; - } - else if (f_compare_dynamic_partial_string(firewall_device_all_s.string, main->data.buffer, firewall_device_all_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - main->cache.device.used = 0; - - continue; - } - else if (f_compare_dynamic_partial_string(firewall_device_this_s.string, main->data.buffer, firewall_device_this_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - if (main->setting.devices.array[main->data.device].used) { - main->setting.state.status = f_string_dynamic_append(main->setting.devices.array[main->data.device], &main->cache.device); - } - else { - main->cache.device.used = 0; - } - - if (F_status_is_error(main->setting.state.status)) return; - - continue; - } - - if (valid) { - main->cache.device.used = 0; - - main->setting.state.status = f_string_dynamic_partial_append(main->data.buffer, rule_contents->array[i].array[0], &main->cache.device); - if (F_status_is_error(main->setting.state.status)) return; - - continue; - } - } - - // Process action rule. - else if (f_compare_dynamic_partial_string(firewall_action_s.string, main->data.buffer, firewall_action_s.used, rule_objects->array[i]) == F_equal_to) { - if (rule_contents->array[i].used != 1) { - valid = F_false; - } - else if (f_compare_dynamic_partial_string(firewall_action_append_s.string, main->data.buffer, firewall_action_append_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - action = firewall_action_append_e; - } - else if (f_compare_dynamic_partial_string(firewall_action_insert_s.string, main->data.buffer, firewall_action_insert_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - action = firewall_action_insert_e; - } - else if (f_compare_dynamic_partial_string(firewall_action_policy_s.string, main->data.buffer, firewall_action_policy_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - action = firewall_action_policy_e; - } - else if (f_compare_dynamic_partial_string(firewall_action_none_s.string, main->data.buffer, firewall_action_none_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - action = firewall_action_none_e; - } - else { - valid = F_false; - } - - if (valid) continue; - } - - // Process ip_list rule. - else if (f_compare_dynamic_partial_string(firewall_ip_list.string, main->data.buffer, firewall_ip_list.used, rule_objects->array[i]) == F_equal_to) { - is_ip_list = F_true; - - if (f_compare_dynamic_partial_string(firewall_ip_list_source_s.string, main->data.buffer, firewall_ip_list_source_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - ip_list_direction = F_false; - } - else if (f_compare_dynamic_partial_string(firewall_ip_list_destination_s.string, main->data.buffer, firewall_ip_list_destination_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - ip_list_direction = F_true; - } - else { - valid = F_false; - } - } - - // Process protocol rule. - else if (f_compare_dynamic_partial_string(firewall_protocol_s.string, main->data.buffer, firewall_protocol_s.used, rule_objects->array[i]) == F_equal_to) { - if (rule_contents->array[i].used != 1) { - valid = F_false; - } - else { - if (f_compare_dynamic_partial_string(firewall_protocol_none_s.string, main->data.buffer, firewall_protocol_none_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - use_protocol = F_false; - } - else if (rule_contents->array[i].array[0].start <= rule_contents->array[i].array[0].stop) { - main->cache.protocol.used = 0; - - main->setting.state.status = f_string_dynamic_partial_append(main->data.buffer, rule_contents->array[i].array[0], &main->cache.protocol); - if (F_status_is_error(main->setting.state.status)) return; - - use_protocol = F_true; - } - else { - use_protocol = F_false; - } - - continue; - } - } - - // Process tool rule. - else if (f_compare_dynamic_partial_string(firewall_tool_s.string, main->data.buffer, firewall_tool_s.used, rule_objects->array[i]) == F_equal_to) { - if (rule_contents->array[i].used != 1) { - valid = F_false; - } - else { - if (f_compare_dynamic_partial_string(firewall_tool_iptables_s.string, main->data.buffer, firewall_tool_iptables_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - tools[0] = (main->setting.flag & firewall_main_flag_ipv4_d) ? firewall_tool_iptables_s : f_string_empty_s; - tools[1] = f_string_empty_s; - } - else if (f_compare_dynamic_partial_string(firewall_tool_ip6tables_s.string, main->data.buffer, firewall_tool_ip6tables_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - tools[0] = f_string_empty_s; - tools[1] = (main->setting.flag & firewall_main_flag_ipv6_d) ? firewall_tool_ip6tables_s : f_string_empty_s; - } - else if (f_compare_dynamic_partial_string(firewall_tool_ip46tables_s.string, main->data.buffer, firewall_tool_ip46tables_s.used, rule_contents->array[i].array[0]) == F_equal_to) { - tools[0] = (main->setting.flag & firewall_main_flag_ipv4_d) ? firewall_tool_iptables_s : f_string_empty_s; - tools[1] = (main->setting.flag & firewall_main_flag_ipv6_d) ? firewall_tool_ip6tables_s : f_string_empty_s; - } - else { - valid = F_false; - } - - if (valid) continue; - } - } - - // If the remaining rule does not match as firewall_rule_s, then it is an invalid rule. - else if (f_compare_dynamic_partial_string(firewall_rule_s.string, main->data.buffer, firewall_rule_s.used, rule_objects->array[i]) == F_equal_to_not) { - firewall_print_warning_object_invalid_missing_line(&main->program.warning, i, main->data.buffer, main->data.rule_objects.array[i]); - - continue; - } - - if (!valid) { - firewall_print_warning_content_invalid_missing_line(&main->program.warning, i, main->data.buffer, main->data.rule_objects.array[i]); - - continue; - } - - for (t = 0; t < 2; ++t) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (!tools[t].used) continue; - - // First add the program name. - main->cache.arguments.used = 0; - - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - // Process the action when a non-none chain is specified. - if (chain != firewall_chain_none_e && action != firewall_action_none_e) { - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - if (action == firewall_action_append_e) { - main->setting.state.status = f_string_dynamic_append(firewall_action_append_operation_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (action == firewall_action_insert_e) { - main->setting.state.status = f_string_dynamic_append(firewall_action_insert_operation_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (action == firewall_action_policy_e) { - main->setting.state.status = f_string_dynamic_append(firewall_action_policy_operation_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - - if (F_status_is_error(main->setting.state.status)) return; - - if (action == firewall_action_append_e || action == firewall_action_insert_e || action == firewall_action_policy_e) { - ++main->cache.arguments.used; - - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - main->setting.state.status = F_data_not; - - // Process the chain, which is required by the action. - if (chain == firewall_chain_custom_e) { - main->setting.state.status = f_string_dynamic_append(main->setting.chains.array[main->data.chain_ids.array[main->data.chain]], &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (chain == firewall_chain_forward_e) { - main->setting.state.status = f_string_dynamic_append(firewall_chain_forward_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (chain == firewall_chain_postrouting_e) { - main->setting.state.status = f_string_dynamic_append(firewall_chain_postrouting_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (chain == firewall_chain_prerouting_e) { - main->setting.state.status = f_string_dynamic_append(firewall_chain_prerouting_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (chain == firewall_chain_input_e) { - main->setting.state.status = f_string_dynamic_append(firewall_chain_input_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - else if (chain == firewall_chain_output_e) { - main->setting.state.status = f_string_dynamic_append(firewall_chain_output_s, &main->cache.arguments.array[main->cache.arguments.used]); - } - - if (F_status_is_error(main->setting.state.status)) return; - - if (main->setting.state.status == F_data_not) { - main->setting.state.status = F_okay; - } - else { - ++main->cache.arguments.used; - } - } - } - - // Add the device if and only if a non-none direction is specified. - if (main->cache.device.used && (direction == firewall_direction_input_e || direction == firewall_direction_output_e)) { - if (f_compare_dynamic_partial_string(firewall_device_all_s.string, main->data.buffer, firewall_device_all_s.used, rule_contents->array[i].array[0]) == F_equal_to_not) { - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - if (direction == firewall_direction_input_e) { - main->setting.state.status = f_string_dynamic_append(firewall_device_input_operation_s, &main->cache.arguments.array[main->cache.arguments.used]); - if (F_status_is_error(main->setting.state.status)) return; - - ++main->cache.arguments.used; - } - else if (direction == firewall_direction_output_e) { - main->setting.state.status = f_string_dynamic_append(firewall_device_output_operation_s, &main->cache.arguments.array[main->cache.arguments.used]); - if (F_status_is_error(main->setting.state.status)) return; - - ++main->cache.arguments.used; - } - } - - // Add the device. - if (main->cache.device.used) { - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - main->setting.state.status = f_string_dynamic_append(main->cache.device, &main->cache.arguments.array[main->cache.arguments.used]); - if (F_status_is_error(main->setting.state.status)) return; - - ++main->cache.arguments.used; - } - } - - if (use_protocol) { - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - main->setting.state.status = f_string_dynamic_append(firewall_protocol_operation_s, &main->cache.arguments.array[main->cache.arguments.used]); - if (F_status_is_error(main->setting.state.status)) return; - - ++main->cache.arguments.used; - - if (main->cache.protocol.used) { - main->setting.state.status = f_memory_array_increase(firewall_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - main->setting.state.status = f_string_dynamic_append(main->cache.protocol, &main->cache.arguments.array[main->cache.arguments.used]); - if (F_status_is_error(main->setting.state.status)) return; - - ++main->cache.arguments.used; - } - } - - // Last up is the "rule". - if ((!is_ip_list && rule_contents->array[i].used > 0) || (is_ip_list && rule_contents->array[i].used > 1)) { - at = 0; - - if (is_ip_list) { - - // Skip past the chain. - ++at; - - if (rule_contents->array[i].array[at].start <= rule_contents->array[i].array[at].stop) { - main->cache.ip_list.used = 0; - - main->setting.state.status = f_string_dynamic_partial_append(main->data.buffer, rule_contents->array[i].array[at], &main->cache.ip_list); - - if (F_status_is_error(main->setting.state.status)) { - - // Prevent the loop below from being processed. - at = rule_contents->array[i].used; - } - else { - ++at; - } - } - } - - main->setting.state.status = f_memory_array_increase_by(rule_contents->array[i].used, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - if (F_status_is_error(main->setting.state.status)) return; - - for (; at < rule_contents->array[i].used; ++at) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - if (rule_contents->array[i].array[at].start <= rule_contents->array[i].array[at].stop) { - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - main->setting.state.status = f_string_dynamic_partial_append(main->data.buffer, rule_contents->array[i].array[at], &main->cache.arguments.array[main->cache.arguments.used]); - if (F_status_is_error(main->setting.state.status)) return; - - ++main->cache.arguments.used; - } - } // for - } - else { - firewall_print_warning_content_invalid_missing_line(&main->program.warning, i, main->data.buffer, main->data.rule_objects.array[i]); - - break; - } - - // Now execute the generated commands. - if (main->cache.arguments.used > 1) { - if (is_ip_list) { - main->cache.basic_objects.used = 0; - main->cache.basic_contents.used = 0; - main->cache.buffer.used = 0; - main->cache.delimits.used = 0; - main->cache.path_file_specific.used = 0; - - main->setting.state.status = f_string_dynamic_append(firewall_network_firewall_path_s, &main->cache.path_file_specific); - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_string_dynamic_append(main->cache.ip_list, &main->cache.path_file_specific); - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->setting.state.status = f_file_open(main->cache.path_file_specific, 0, &main->cache.file); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, main->cache.path_file_specific, f_file_operation_open_s, fll_error_file_type_file_e); - - f_file_stream_close(&main->cache.file); - - return; - } - - main->setting.state.status = f_file_read(main->cache.file, &main->cache.buffer); - - f_file_stream_close(&main->cache.file); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, main->cache.path_file_specific, f_file_operation_read_s, fll_error_file_type_file_e); - - return; - } - - main->cache.delimits.used = 0; - - if (main->cache.buffer.used) { - main->data.range.start = 0; - main->data.range.stop = main->cache.buffer.used - 1; - } - else { - main->data.range.start = 1; - main->data.range.stop = 0; - } - - fll_fss_basic_read(main->cache.buffer, &main->data.range, &main->cache.basic_objects, &main->cache.basic_contents, 0, &main->cache.delimits, 0, &main->setting.state); - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_data_not_eos || F_status_set_fine(main->setting.state.status) == F_data_not || F_status_set_fine(main->setting.state.status) == F_data_not_stop) { - // Empty files are to be silently ignored. - } - else { - firewall_print_error_file(&main->program.error, F_status_debug_source_d, main->cache.path_file_specific, f_file_operation_read_s, fll_error_file_type_file_e); - - return; - } - } - - f_fss_apply_delimit(main->cache.delimits, &main->cache.buffer, &main->setting.state); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - if (F_status_is_error_not(main->setting.state.status)) { - main->setting.state.status = f_memory_array_increase_by(2, sizeof(f_string_dynamic_t), (void **) &main->cache.arguments.array, &main->cache.arguments.used, &main->cache.arguments.size); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - main->setting.state.status = f_string_dynamic_append(ip_list_direction ? firewall_ip_list_destination_action_s : firewall_ip_list_source_action_s, &main->cache.arguments.array[main->cache.arguments.used]); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - ++main->cache.arguments.used; - - // The ip_list file contains objects and no content, all objects are what matter an nothing else. - for (at = 0; at < main->cache.basic_objects.used; ++at) { - - if (macro_firewall_signal_check(&main->program, &main->setting.state)) return; - - main->cache.arguments.array[main->cache.arguments.used].used = 0; - - main->setting.state.status = f_string_dynamic_partial_append(main->cache.buffer, main->cache.basic_objects.array[at], &main->cache.arguments.array[main->cache.arguments.used]); - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error(&main->program.error, F_status_debug_source_d); - - return; - } - - ++main->cache.arguments.used; - return_code = 0; - - firewall_print_debug_tool(&main->program.warning, tools[t], main->cache.arguments); - - main->setting.state.status = fll_execute_program(tools[t], main->cache.arguments, 0, 0, (void *) &return_code); - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - // Remove ip_argument from arguments string. - --main->cache.arguments.used; - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_failure) { - firewall_print_error_operation(&main->program.error, tools[t], main->cache.arguments); - } - else { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - return; - } - else if (return_code) { - firewall_print_error_operation_return_code(&main->program.error, tools[t], main->cache.arguments, return_code); - } - } // for - - // Remove ip_list_action from arguments string. - --main->cache.arguments.used; - } - - if (F_status_set_fine(main->setting.state.status) == F_failure || F_status_set_fine(main->setting.state.status) == F_parameter) return; - } - else { - return_code = 0; - - firewall_print_debug_tool(&main->program.warning, tools[t], main->cache.arguments); - - main->setting.state.status = fll_execute_program(tools[t], main->cache.arguments, 0, 0, (void *) &return_code); - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) == F_failure) { - firewall_print_error_operation(&main->program.error, tools[t], main->cache.arguments); - } - else { - firewall_print_error(&main->program.error, F_status_debug_source_d); - } - - return; - } - else if (return_code) { - firewall_print_error_operation_return_code(&main->program.error, tools[t], main->cache.arguments, return_code); - } - } - } - } // for - } // for - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_process_rules_perform_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/process.h b/level_3/firewall/c/main/operate/process.h deleted file mode 100644 index 3133eb3..0000000 --- a/level_3/firewall/c/main/operate/process.h +++ /dev/null @@ -1,42 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate process functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_process_h -#define _firewall_operate_process_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Perforrm the loaded firewall rules. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: () - * - * @see () - */ -#ifndef _di_firewall_operate_process_rules_ - extern void firewall_operate_process_rules(firewall_main_t * const main); -#endif // _di_firewall_operate_process_rules_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_process_h diff --git a/level_3/firewall/c/main/operate/rules.c b/level_3/firewall/c/main/operate/rules.c deleted file mode 100644 index c049efd..0000000 --- a/level_3/firewall/c/main/operate/rules.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_rules_ - void firewall_operate_rules(firewall_main_t * const main) { - - if (!main || F_status_is_error_not(main->setting.state.status) && main->setting.state.status == F_child) return; - - firewall_operate_process_rules(main); - - if (F_status_is_error(main->setting.state.status)) { - if (F_status_set_fine(main->setting.state.status) != F_failure && F_status_set_fine(main->setting.state.status) != F_interrupt) { - firewall_print_error_unhandled(&main->program.error, F_status_debug_source_d, f_string_empty_s); - } - - return; - } - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_rules_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/rules.h b/level_3/firewall/c/main/operate/rules.h deleted file mode 100644 index 09a835a..0000000 --- a/level_3/firewall/c/main/operate/rules.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate rules functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_rules_h -#define _firewall_operate_rules_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Operate the rules. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: f_fss_apply_delimit() - * Errors (with error bit) from: firewall_operate_process_rules() - * Errors (with error bit) from: fll_fss_extended_read() - * - * @see f_fss_apply_delimit() - * @see firewall_operate_process_rules() - * @see fll_fss_extended_read() - */ -#ifndef _di_firewall_operate_rules_ - extern void firewall_operate_rules(firewall_main_t * const main); -#endif // _di_firewall_operate_rules_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_rules_h diff --git a/level_3/firewall/c/main/operate/show.c b/level_3/firewall/c/main/operate/show.c deleted file mode 100644 index fdaf248..0000000 --- a/level_3/firewall/c/main/operate/show.c +++ /dev/null @@ -1,128 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_operate_show_ - void firewall_operate_show(firewall_main_t * const main) { - - if (!main) return; - - int return_code = 0; - - f_string_statics_t parameters = f_string_statics_t_initialize; - parameters.used = 6; - - f_string_static_t show_nats[] = { - firewall_show_parameter_exact_s, - firewall_show_parameter_verbose_s, - firewall_show_parameter_table_s, - firewall_show_nat_s, - firewall_show_parameter_numeric_s, - firewall_show_parameter_list_s, - }; - - f_string_static_t show_mangles[] = { - firewall_show_parameter_exact_s, - firewall_show_parameter_verbose_s, - firewall_show_parameter_table_s, - firewall_show_mangle_s, - firewall_show_parameter_numeric_s, - firewall_show_parameter_list_s, - }; - - f_string_static_t show_filters[] = { - firewall_show_parameter_exact_s, - firewall_show_parameter_verbose_s, - firewall_show_parameter_numeric_s, - firewall_show_parameter_list_s, - }; - - f_string_static_t * const show_arrays[] = { - show_nats, - show_mangles, - show_filters, - }; - - const f_number_unsigned_t show_lengths[] = { - 6, - 6, - 4, - }; - - const f_string_static_t show_lefts[] = { - firewall_print_show_bars_27_s, - firewall_print_show_bars_26_s, - firewall_print_show_bars_26_s, - }; - - const f_string_static_t show_headers[] = { - firewall_print_show_nat_s, - firewall_print_show_mangle_s, - firewall_print_show_filter_s, - }; - - const f_string_static_t show_rights[] = { - firewall_print_show_bars_28_s, - firewall_print_show_bars_26_s, - firewall_print_show_bars_26_s, - }; - - const uint16_t show_flags[] = { - firewall_main_flag_operation_show_nat_d, - firewall_main_flag_operation_show_mangle_d, - firewall_main_flag_operation_show_filter_d, - }; - - const f_string_static_t tools[2] = { main->setting.flag & firewall_main_flag_ipv4_d ? firewall_tool_iptables_s : f_string_empty_s, main->setting.flag & firewall_main_flag_ipv6_d ? firewall_tool_ip6tables_s : f_string_empty_s }; - - uint8_t i = 0; - uint8_t t = 0; - - for (; t < 2; ++t) { - - if (!tools[t].used) continue; - - for (i = 0; i < 3; ++i) { - - if (!show_flags[i]) continue; - - parameters.array = show_arrays[i]; - parameters.used = show_lengths[i]; - return_code = 0; - - // A newline should be printed before each inner message header, but not the first. - if (i) { - f_print_dynamic_raw(f_string_eol_s, main->program.output.to); - } - - firewall_print_message_show_header(&main->program.output, show_lefts[i], show_headers[i], show_rights[i], t); - - main->setting.state.status = fll_execute_program(tools[t], parameters, 0, 0, (void *) &return_code); - - if (main->setting.state.status == F_child) { - main->program.child = return_code; - - return; - } - - if (F_status_is_error(main->setting.state.status)) { - firewall_print_error_operation(&main->program.error, tools[t], parameters); - - return; - } - - if (return_code) { - firewall_print_error_operation_return_code(&main->program.error, tools[t], main->cache.arguments, return_code); - } - } // for - } // for - - main->setting.state.status = F_okay; - } -#endif // _di_firewall_operate_show_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/operate/show.h b/level_3/firewall/c/main/operate/show.h deleted file mode 100644 index 5cc3f62..0000000 --- a/level_3/firewall/c/main/operate/show.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the operate show functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_operate_show_h -#define _firewall_operate_show_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Perform the firewall show operation. - * - * @param main - * The main program and setting data. - * - * This alters main.setting.state.status: - * F_okay on success. - * F_child on child process exiting. - * - * F_interrupt (with error bit) on interrupt signal received. - * - * Errors (with error bit) from: fll_execute_program() - * Errors (with error bit) from: fll_print_dynamic_raw() - * - * @see fll_execute_program() - * @see fll_print_dynamic_raw() - */ -#ifndef _di_firewall_operate_show_ - extern void firewall_operate_show(firewall_main_t * const main); -#endif // _di_firewall_operate_show_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_operate_show_h diff --git a/level_3/firewall/c/main/print/debug.c b/level_3/firewall/c/main/print/debug.c deleted file mode 100644 index c380486..0000000 --- a/level_3/firewall/c/main/print/debug.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_print_debug_tool_ - f_status_t firewall_print_debug_tool(fl_print_t * const print, const f_string_static_t tool, const f_string_statics_t arguments) { - - if (!print) return F_status_set_error(F_output_not); - if (print->verbosity != f_console_verbosity_debug_e) return F_output_not; - - f_file_stream_lock(print->to); - - fl_print_format("%[%Q", print->to, print->context, tool); - - for (f_number_unsigned_t i = 0; i < arguments.used; ++i) { - fl_print_format(" %Q", print->to, arguments.array[i]); - } // for - - fl_print_format("%]%r", print->to, print->context, f_string_eol_s); - - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_debug_tool_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/print/debug.h b/level_3/firewall/c/main/print/debug.h deleted file mode 100644 index 2a25052..0000000 --- a/level_3/firewall/c/main/print/debug.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the print debug functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_print_debug_h -#define _firewall_print_debug_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Print debug information about tool execution. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param tool - * The name of the function associated with the error. - * @param arguments - * The name of the file, if this error is assocaited with a file. - * Otherwise, set file.used to 0 to not have an file related error message. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_debug_tool_ - extern f_status_t firewall_print_debug_tool(fl_print_t * const print, const f_string_static_t tool, const f_string_statics_t arguments); -#endif // _di_firewall_print_debug_tool_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_print_debug_h diff --git a/level_3/firewall/c/main/print/error.c b/level_3/firewall/c/main/print/error.c deleted file mode 100644 index d630150..0000000 --- a/level_3/firewall/c/main/print/error.c +++ /dev/null @@ -1,185 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_print_error_ - f_status_t firewall_print_error(fl_print_t * const print, const f_string_t debug) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - fll_error_print(print, F_status_set_fine(((firewall_main_t *) print->custom)->setting.state.status), debug, fll_error_file_flag_fallback_e); - - return F_okay; - } -#endif // _di_firewall_print_error_ - -#ifndef _di_firewall_print_error_file_ - f_status_t firewall_print_error_file(fl_print_t * const print, const f_string_t debug, const f_string_static_t name, const f_string_static_t operation, const uint8_t type) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - fll_error_file_print(print, F_status_set_fine(((firewall_main_t *) print->custom)->setting.state.status), debug, fll_error_file_flag_fallback_e, name, operation, type); - - return F_okay; - } -#endif // _di_firewall_print_error_file_ - -#ifndef _di_firewall_print_error_file_empty_ - f_status_t firewall_print_error_file_empty(fl_print_t * const print, const f_string_static_t file) { - - if (!print) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QNo relevant data is found within the file '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, file, print->notable); - fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s); - - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_error_file_empty_ - -#ifndef _di_firewall_print_error_network_device_none_ - f_status_t firewall_print_error_network_device_none(fl_print_t * const print) { - - if (!print) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - fll_print_format("%[%QCould not find any network devices.%]%r", print->to, print->context, print->prefix, print->context, f_string_eol_s); - - return F_okay; - } -#endif // _di_firewall_print_error_network_device_none_ - -#ifndef _di_firewall_print_error_operation_ - f_status_t firewall_print_error_operation(fl_print_t * const print, const f_string_static_t tool, const f_string_statics_t arguments) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - firewall_main_t * const main = (firewall_main_t *) print->custom; - - f_file_stream_lock(print->to); - - if (F_status_set_fine(main->setting.state.status) == F_memory_not) { - fl_print_format("%[%QOut of memory while performing requested %r operation '%]", print->to, print->context, print->prefix, tool, print->context); - } - else { - fl_print_format("%[%QFailed to perform requested %r operation '%]", print->to, print->context, print->prefix, tool, print->context); - } - - fl_print_format("%[%Q", print->to, print->set->notable, tool); - - for (f_number_unsigned_t i = 0; i < arguments.used; ++i) { - fl_print_format(" %Q", print->to, arguments.array[i]); - } // for - - fl_print_format("%]%[', error code is%] ", print->to, print->set->notable, print->context, print->context); - fl_print_format(f_string_format_ui_single_s.string, print->to, print->set->notable, F_status_set_fine(main->setting.state.status), print->set->notable); - fl_print_format(f_string_format_sentence_end_single_s.string, print->to, print->context, print->context, f_string_eol_s); - - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_error_operation_ - -#ifndef _di_firewall_print_error_operation_files_missing_ - f_status_t firewall_print_error_operation_files_missing(fl_print_t * const print, const f_string_static_t operation, const f_string_static_t file) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QFailed to perform%] ", print->to, print->context, print->prefix); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, operation, print->notable); - fl_print_format(" %[request because the%] ", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, operation, print->notable); - fl_print_format(" %[instructions are missing from '%]", print->to, print->set->error, print->set->error); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, file, print->notable); - fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->set->error, print->set->error, f_string_eol_s); - - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_error_operation_files_missing_ - -#ifndef _di_firewall_print_error_operation_return_code_ - f_status_t firewall_print_error_operation_return_code(fl_print_t * const print, const f_string_static_t tool, const f_string_statics_t arguments, const int return_code) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QThe operation '%]", print->to, print->context, print->prefix, tool, print->context); - fl_print_format("%[%Q", print->to, print->set->notable, tool); - - for (f_number_unsigned_t i = 0; i < arguments.used; ++i) { - fl_print_format(" %Q", print->to, arguments.array[i]); - } // for - - fl_print_format("%]%[' returned with code of%] ", print->to, print->set->notable, print->context, print->context); - fl_print_format(f_string_format_i_single_s.string, print->to, print->set->notable, return_code, print->set->notable); - fl_print_format(f_string_format_sentence_end_single_s.string, print->to, print->context, print->context, f_string_eol_s); - - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_error_operation_return_code_ - -#ifndef _di_firewall_print_error_operation_specified_not_ - f_status_t firewall_print_error_operation_specified_not(fl_print_t * const print) { - - if (!print) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - fll_print_format("%[%QNo operation is given.%]%r", print->to, print->context, print->prefix, print->context, f_string_eol_s); - - return F_okay; - } -#endif // _di_firewall_print_error_operation_specified_not_ - -#ifndef _di_firewall_print_error_unhandled_ - f_status_t firewall_print_error_unhandled(fl_print_t * const print, const f_string_t debug, const f_string_static_t file) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_error_e) return F_output_not; - - firewall_main_t * const main = (firewall_main_t *) print->custom; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QAn unhandled error (%]", print->to, f_string_eol_s, print->context, print->prefix, print->context); - fl_print_format(f_string_format_ui_single_s.string, print->to, print->notable, F_status_set_fine(main->setting.state.status), print->notable); - fl_print_format("%[) has occurred while calling%] ", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_S_single_s.string, print->to, print->notable, debug, print->notable); - - if (file.used) { - fl_print_format("%[() for the file%] ", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, file, print->notable); - fl_print_format(f_string_format_sentence_end_single_s.string, print->to, print->context, print->context, f_string_eol_s); - } - else { - fl_print_format("%[().%]%r", print->to, print->context, print->context, f_string_eol_s); - } - - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_error_unhandled_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/print/error.h b/level_3/firewall/c/main/print/error.h deleted file mode 100644 index f48af8b..0000000 --- a/level_3/firewall/c/main/print/error.h +++ /dev/null @@ -1,237 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the print error functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_print_error_h -#define _firewall_print_error_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Print generic error message regarding a function failing in some way. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param debug - * (optional) The debug details, such as file, line number, and function. - * - * Set to NULL to disable. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see fll_error_print() - */ -#ifndef _di_firewall_print_error_ - extern f_status_t firewall_print_error(fl_print_t * const print, const f_string_t debug); -#endif // _di_firewall_print_error_ - -/** - * Print file related error or warning messages. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param debug - * (optional) The debug details, such as file, line number, and function. - * - * Set to NULL to disable. - * @param name - * The name of the file or directory. - * @param operation - * The operation that fails, such as 'create' or 'access'. - * @param type - * A valid file type code from the fll_error_file_type enum. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see fll_error_file_print() - */ -#ifndef _di_firewall_print_error_file_ - extern f_status_t firewall_print_error_file(fl_print_t * const print, const f_string_t debug, const f_string_static_t name, const f_string_static_t operation, const uint8_t type); -#endif // _di_firewall_print_error_file_ - -/** - * Print file related error message regarding that there is no relevant data in the file. - * - * The file is effectively empty but could have comments or other non-valid (aka non-Object) data. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param debug - * (optional) The debug details, such as file, line number, and function. - * - * Set to NULL to disable. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see fll_error_file_print() - */ -#ifndef _di_firewall_print_error_file_empty_ - extern f_status_t firewall_print_error_file_empty(fl_print_t * const print, const f_string_static_t file); -#endif // _di_firewall_print_error_file_empty_ - -/** - * Print error message regarding being unable to find any devices. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see fll_error_print() - */ -#ifndef _di_firewall_print_error_network_device_none_ - extern f_status_t firewall_print_error_network_device_none(fl_print_t * const print); -#endif // _di_firewall_print_error_network_device_none_ - -/** - * Print an error about the given operation failed. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param tool - * The tool, such as iptables, that failed. - * @param arguments - * The arguments passed to the tool. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_error_operation_ - extern f_status_t firewall_print_error_operation(fl_print_t * const print, const f_string_static_t tool, const f_string_statics_t arguments); -#endif // _di_firewall_print_error_operation_ - -/** - * Print an error about the operation setting missing from the file. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param operation - * The operation setting that is missing from the file. - * This is also the name of the operation itself. - * @param file - * The file that is missing the operation. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_error_operation_files_missing_ - extern f_status_t firewall_print_error_operation_files_missing(fl_print_t * const print, const f_string_static_t operation, const f_string_static_t file); -#endif // _di_firewall_print_error_operation_files_missing_ - -/** - * Print an error about the given operation failed according to the given return code. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param tool - * The tool, such as iptables, that failed. - * @param arguments - * The arguments passed to the tool. - * @param return_code - * The code returned by the tool. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_error_operation_return_code_ - extern f_status_t firewall_print_error_operation_return_code(fl_print_t * const print, const f_string_static_t tool, const f_string_statics_t arguments, const int return_code); -#endif // _di_firewall_print_error_operation_return_code_ - -/** - * Print generic error message regarding a function failing in some way. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see fll_error_print() - */ -#ifndef _di_firewall_print_error_operation_specified_not_ - extern f_status_t firewall_print_error_operation_specified_not(fl_print_t * const print); -#endif // _di_firewall_print_error_operation_specified_not_ - -/** - * Print an unhandled error for the given function. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param debug - * (optional) The debug details, such as file, line number, and function. - * - * Set to NULL to disable. - * @param file - * The name of the file, if this error is assocaited with a file. - * Otherwise, set file.used to 0 to not have an file related error message. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_error_unhandled_ - extern f_status_t firewall_print_error_unhandled(fl_print_t * const print, const f_string_t debug, const f_string_static_t file); -#endif // _di_firewall_print_error_unhandled_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_print_error_h diff --git a/level_3/firewall/c/main/print/message.c b/level_3/firewall/c/main/print/message.c deleted file mode 100644 index 3e5c5c1..0000000 --- a/level_3/firewall/c/main/print/message.c +++ /dev/null @@ -1,72 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_print_message_help_ - f_status_t firewall_print_message_help(fl_print_t * const print) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - - f_file_stream_lock(print->to); - - fll_program_print_help_header(print, firewall_program_name_long_s, firewall_program_version_s); - - fll_program_print_help_option_standard(print); - - f_print_dynamic_raw(f_string_eol_s, print->to); - - fll_program_print_help_option_short(print, firewall_short_4_s, f_console_symbol_short_normal_s, "Explicitly use IPv4 for show and rules to use iptables."); - fll_program_print_help_option_short(print, firewall_short_6_s, f_console_symbol_short_normal_s, "Explicitly use IPv6 and rules to use ip6tables."); - - f_print_dynamic_raw(f_string_eol_s, print->to); - - fll_program_print_help_operations(print); - - fll_program_print_help_option_other(print, firewall_operation_lock_s, " Switch to rules intended to prevent all communication."); - fll_program_print_help_option_other(print, firewall_operation_restart_s, "Turn off and then turn on the firewall."); - fll_program_print_help_option_other(print, firewall_operation_show_s, " Show the active firewall settings."); - fll_program_print_help_option_other(print, firewall_operation_start_s, " Turn on the firewall."); - fll_program_print_help_option_other(print, firewall_operation_stop_s, " Turn off the firewall."); - - f_print_dynamic_raw(f_string_eol_s, print->to); - - fll_program_print_help_usage(print, firewall_program_name_s, firewall_program_help_parameters_s); - - f_file_stream_flush(print->to); - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_message_help_ - -#ifndef _di_firewall_print_message_show_header_ - f_status_t firewall_print_message_show_header(fl_print_t * const print, const f_string_static_t left, const f_string_static_t header, const f_string_static_t right, const uint8_t ipv6) { - - if (!print) return F_status_set_error(F_output_not); - - f_file_stream_lock(print->to); - - if (left.used) { - fl_print_format("%[%Q%] ", print->to, print->set->standout, left, print->set->standout); - } - - fll_print_format("%[%Q (%Q)%]", print->to, print->set->title, header, ipv6 ? firewall_print_show_ipv6_s: firewall_print_show_ipv4_s, print->set->title, f_string_eol_s); - - if (left.used) { - fl_print_format(" %[%Q%]", print->to, print->set->standout, right, print->set->standout); - } - - f_print_dynamic_raw(f_string_eol_s, print->to); - - f_file_stream_flush(print->to); - f_file_stream_unlock(print->to); - - return F_okay; - } -#endif // _di_firewall_print_message_show_header_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/print/message.h b/level_3/firewall/c/main/print/message.h deleted file mode 100644 index e64a045..0000000 --- a/level_3/firewall/c/main/print/message.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the print message functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_print_message_h -#define _firewall_print_message_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Print help. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see f_file_stream_flush() - * @see f_file_stream_lock() - * @see f_file_stream_unlock() - * @see f_print_dynamic_raw() - * @see fl_print_format() - * - * @see fll_program_print_help_header() - * @see fll_program_print_help_option() - * @see fll_program_print_help_option_standard() - * @see fll_program_print_help_usage() - */ -#ifndef _di_firewall_print_message_help_ - extern f_status_t firewall_print_message_help(fl_print_t * const print); -#endif // _di_firewall_print_message_help_ - -/** - * Print show option header. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param left - * The option to show on the left side of the header text. - * The left.used may be 0. - * @param header - * The header text. - * The header.used should not be 0. - * @param right - * The option to show on the right side of the header text. - * The right.used may be 0. - * @param ipv6 - * If TRUE, then print IPv6 string. - * If FALSE, then print IPv4 string. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - * - * @see f_file_stream_flush() - * @see f_file_stream_lock() - * @see f_file_stream_unlock() - * @see f_print_dynamic_raw() - * @see fl_print_format() - */ -#ifndef _di_firewall_print_message_show_header_ - extern f_status_t firewall_print_message_show_header(fl_print_t * const print, const f_string_static_t left, const f_string_static_t header, const f_string_static_t right, const uint8_t ipv6); -#endif // _di_firewall_print_message_show_header_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_print_message_h diff --git a/level_3/firewall/c/main/print/warning.c b/level_3/firewall/c/main/print/warning.c deleted file mode 100644 index 361f6e1..0000000 --- a/level_3/firewall/c/main/print/warning.c +++ /dev/null @@ -1,138 +0,0 @@ -#include "../firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _di_firewall_print_warning_chain_meaningless_line_ - f_status_t firewall_print_warning_chain_meaningless_line(fl_print_t * const print, const f_number_unsigned_t line) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_verbose_e) return F_output_not; - - firewall_main_t * const main = (firewall_main_t *) print->custom; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QAt line%] ", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_un_single_s.string, print->to, print->notable, line, print->notable); - - if (main->data.file.used && main->data.file.string) { - fl_print_format(" %[of '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, main->data.file, print->notable); - fl_print_format("%[' ", print->to, print->context); - } - else { - fl_print_format(" %[", print->to, print->context); - } - - fl_print_format("the chain option is meaningless inside of a custom chain%]%r", print->to, print->context, f_string_eol_s); - - f_file_stream_unlock(print->to); - f_file_stream_flush(print->to); - - return F_okay; - } -#endif // _di_firewall_print_warning_chain_meaningless_line_ - -#ifndef _di_firewall_print_warning_content_invalid_missing_line_ - f_status_t firewall_print_warning_content_invalid_missing_line(fl_print_t * const print, const f_number_unsigned_t line, const f_string_static_t buffer, const f_range_t range) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_verbose_e) return F_output_not; - - firewall_main_t * const main = (firewall_main_t *) print->custom; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QAt line%] ", print->to, print->context, print->prefix, print->context); - - if (main->data.file.used && main->data.file.string) { - fl_print_format(" %[of '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, main->data.file, print->notable); - fl_print_format("%[' ", print->to, print->context); - } - else { - fl_print_format(" %[", print->to, print->context); - } - - fl_print_format(f_string_format_un_single_s.string, print->to, print->notable, line, print->notable); - fl_print_format(" %[the object '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable); - - if (range.start > range.stop) { - fl_print_format("%[' has no content.%]%r", print->to, print->context, print->context, f_string_eol_s); - } - else { - fl_print_format("%[' is invalid.%]%r", print->to, print->context, print->context, f_string_eol_s); - } - - f_file_stream_unlock(print->to); - f_file_stream_flush(print->to); - - return F_okay; - } -#endif // _di_firewall_print_warning_content_invalid_missing_line_ - -#ifndef _di_firewall_print_warning_object_invalid_missing_line_ - f_status_t firewall_print_warning_object_invalid_missing_line(fl_print_t * const print, const f_number_unsigned_t line, const f_string_static_t buffer, const f_range_t range) { - - if (!print || !print->custom) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_verbose_e) return F_output_not; - - firewall_main_t * const main = (firewall_main_t *) print->custom; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QAt line%] ", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_un_single_s.string, print->to, print->notable, line, print->notable); - - if (main->data.file.used && main->data.file.string) { - fl_print_format(" %[of '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, main->data.file, print->notable); - fl_print_format("%[' ", print->to, print->context); - } - else { - fl_print_format(" %[", print->to, print->context); - } - - if (range.start > range.stop) { - fl_print_format(" %[the object is missing.%]%r", print->to, print->context, print->context, f_string_eol_s); - } - else { - fl_print_format(" %[the object '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable); - fl_print_format("%[' is invalid.%]%r", print->to, print->context, print->context, f_string_eol_s); - } - - f_file_stream_unlock(print->to); - f_file_stream_flush(print->to); - - return F_okay; - } -#endif // _di_firewall_print_warning_object_invalid_missing_line_ - -#ifndef _di_firewall_print_warning_show_option_unknown_ - f_status_t firewall_print_warning_show_option_unknown(fl_print_t * const print, const f_string_static_t option) { - - if (!print) return F_status_set_error(F_output_not); - if (print->verbosity < f_console_verbosity_verbose_e) return F_output_not; - - f_file_stream_lock(print->to); - - fl_print_format("%[%QThe%] ", print->to, print->context, print->prefix, print->context); - fl_print_format(firewall_operation_show_s.string, print->to, print->notable, option, print->notable); - fl_print_format(" %[option '%]", print->to, print->context, print->prefix, print->context); - fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, option, print->notable); - fl_print_format("%[' is not known.%]%r", print->to, print->context, print->context, f_string_eol_s); - - f_file_stream_unlock(print->to); - f_file_stream_flush(print->to); - - return F_okay; - } -#endif // _di_firewall_print_warning_show_option_unknown_ - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/print/warning.h b/level_3/firewall/c/main/print/warning.h deleted file mode 100644 index 4ef8cac..0000000 --- a/level_3/firewall/c/main/print/warning.h +++ /dev/null @@ -1,111 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides the print warning functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_print_warning_h -#define _firewall_print_warning_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Print warning message regarding chain being meaningless at the given line. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param line - * The line number. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_warning_chain_meaningless_line_ - extern f_status_t firewall_print_warning_chain_meaningless_line(fl_print_t * const print, const f_number_unsigned_t line); -#endif // _di_firewall_print_warning_chain_meaningless_line_ - -/** - * Print warning message regarding a line having no Content or invalid Content for the given Object. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param line - * The line number. - * @param buffer - * The buffer containing the Object. - * @param range - * The range within the buffer representing the Object. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_warning_content_invalid_missing_line_ - extern f_status_t firewall_print_warning_content_invalid_missing_line(fl_print_t * const print, const f_number_unsigned_t line, const f_string_static_t buffer, const f_range_t range); -#endif // _di_firewall_print_warning_content_invalid_missing_line_ - -/** - * Print warning message regarding a line having no Object or the Object is invalid. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param line - * The line number. - * @param buffer - * The buffer containing the Object. - * @param range - * The range within the buffer representing the Object. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_warning_object_invalid_missing_line_ - extern f_status_t firewall_print_warning_object_invalid_missing_line(fl_print_t * const print, const f_number_unsigned_t line, const f_string_static_t buffer, const f_range_t range); -#endif // _di_firewall_print_warning_object_invalid_missing_line_ - -/** - * Print warning message regarding a show option not being known. - * - * @param print - * The output structure to print to. - * - * This does not alter print.custom.setting.state.status. - * @param option - * The show option that is not known. - * - * @return - * F_okay on success. - * F_output_not on success, but no printing is performed. - * - * F_output_not (with error bit) if setting is NULL. - */ -#ifndef _di_firewall_print_warning_show_option_unknown_ - extern f_status_t firewall_print_warning_show_option_unknown(fl_print_t * const print, const f_string_static_t option); -#endif // _di_firewall_print_warning_show_option_unknown_ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_print_warning_h diff --git a/level_3/firewall/c/main/signal.c b/level_3/firewall/c/main/signal.c deleted file mode 100644 index 3c16dab..0000000 --- a/level_3/firewall/c/main/signal.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(_di_firewall_signal_handler_) && !defined(_di_thread_support_) - void firewall_signal_handler(firewall_main_t * const main) { - - if (!main) return; - - f_signal_set_empty(&main->program.signal.set); - f_signal_set_add(F_signal_abort, &main->program.signal.set); - f_signal_set_add(F_signal_broken_pipe, &main->program.signal.set); - f_signal_set_add(F_signal_hangup, &main->program.signal.set); - f_signal_set_add(F_signal_interrupt, &main->program.signal.set); - f_signal_set_add(F_signal_quit, &main->program.signal.set); - f_signal_set_add(F_signal_termination, &main->program.signal.set); - - fll_program_standard_signal_received_wait(&main->program, firewall_signal_check_failsafe_d); - - if (F_status_is_error(main->program.signal_status) && F_status_set_fine(main->program.signal_status) != F_interrupt) { - main->program.signal_received = F_signal_abort; - } - } -#endif // !defined(_di_firewall_signal_handler_) && !defined(_di_thread_support_) - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/signal.h b/level_3/firewall/c/main/signal.h deleted file mode 100644 index ab31079..0000000 --- a/level_3/firewall/c/main/signal.h +++ /dev/null @@ -1,55 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides signal functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_signal_h -#define _firewall_signal_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Signal handler for signals/interrupts. - * - * This blocks until an expected signal is recieved. - * When an expected signal is received it then sets the - * - * If main.signal is non-zero, then this handles the following signals: - * - F_signal_abort - * - F_signal_broken_pipe - * - F_signal_hangup - * - F_signal_interrupt - * - F_signal_quit - * - F_signal_termination - * - * @param main - * The main program and settings data. - * - * Must not be NULL. - * - * This alters main.program.signal_received, setting it to a received signal. - * This alters main.program.signal_status. - * - * This does not alter main.setting.state.status. - * - * @see f_signal_set_add() - * @see f_signal_set_empty() - * @see fll_program_standard_signal_received_wait() - */ -#if !defined(_di_firewall_signal_handler_) && !defined(_di_thread_support_) - extern void firewall_signal_handler(firewall_main_t * const main); -#endif // !defined(_di_firewall_signal_handler_) && !defined(_di_thread_support_) - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_signal_h diff --git a/level_3/firewall/c/main/thread.c b/level_3/firewall/c/main/thread.c deleted file mode 100644 index b8803f5..0000000 --- a/level_3/firewall/c/main/thread.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "firewall.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(_di_firewall_thread_signal_) && !defined(_di_thread_support_) - void * firewall_thread_signal(void * const main) { - - f_thread_cancel_state_set(PTHREAD_CANCEL_DEFERRED, 0); - - if (main) { - firewall_signal_handler((firewall_main_t *) main); - } - - return 0; - } -#endif // !defined(_di_firewall_thread_signal_) && !defined(_di_thread_support_) - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_3/firewall/c/main/thread.h b/level_3/firewall/c/main/thread.h deleted file mode 100644 index 7a03500..0000000 --- a/level_3/firewall/c/main/thread.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * FLL - Level 3 - * - * Project: Firewall - * API Version: 0.8 - * Licenses: lgpl-2.1-or-later - * - * Provides thread functionality. - * - * This is auto-included and should not need to be explicitly included. - */ -#ifndef _firewall_thread_h -#define _firewall_thread_h - -/** - * Thread handler for signals/interrupts. - * - * If main.signal is non-zero, then this handles the following signals: - * - F_signal_abort - * - F_signal_broken_pipe - * - F_signal_hangup - * - F_signal_interrupt - * - F_signal_quit - * - F_signal_termination - * - * @param main - * The program and settings data. - * - * Must be of type firewall_main_t. - * - * @return - * 0, always. - * - * @see f_thread_cancel_state_set() - * - * @see firewall_signal_handler() - */ -#if !defined(_di_firewall_thread_signal_) && !defined(_di_thread_support_) - extern void * firewall_thread_signal(void * const main); -#endif // !defined(_di_firewall_thread_signal_) && !defined(_di_thread_support_) - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _firewall_thread_h diff --git a/level_3/firewall/data/build/defines b/level_3/firewall/data/build/defines deleted file mode 100644 index 82abf48..0000000 --- a/level_3/firewall/data/build/defines +++ /dev/null @@ -1,9 +0,0 @@ -# fss-0000 - -_di_libcap_ Disable libcap support, allow for compiling and linking without libcap (-lcap). -_di_thread_support_ Disables thread support. - -_libcap_legacy_only_ Disable functionality provided by later versions of libcap (2.43 and later). - -_pthread_attr_unsupported_ Disable non-portable functionality associated with pthread_attr. -_pthread_sigqueue_unsupported_ Disable GNU specific sigqueue(). diff --git a/level_3/firewall/data/build/dependencies b/level_3/firewall/data/build/dependencies deleted file mode 100644 index dd92918..0000000 --- a/level_3/firewall/data/build/dependencies +++ /dev/null @@ -1,42 +0,0 @@ -# fss-0000 - -f_type -f_status -f_memory -f_type_array -f_string -f_utf -f_abstruse -f_capability -f_color -f_compare -f_console -f_control_group -f_conversion -f_directory -f_environment -f_execute -f_file -f_fss -f_limit -f_parse -f_path -f_pipe -f_print -f_rip -f_status_string -f_signal -f_thread - -fl_control_group -fl_conversion -fl_environment -fl_execute -fl_fss -fl_print - -fll_error -fll_execute -fll_fss -fll_print -fll_program diff --git a/level_3/firewall/data/build/fakefile b/level_3/firewall/data/build/fakefile deleted file mode 100644 index ef75214..0000000 --- a/level_3/firewall/data/build/fakefile +++ /dev/null @@ -1,27 +0,0 @@ -# fss-0005 iki-0002 - -settings: - fail exit - modes individual individual_thread level monolithic clang coverage fanalyzer gcc gcc_13 test thread threadless - - environment PATH LD_LIBRARY_PATH - environment LANG LC_ALL LC_COLLATE LC_CTYPE LC_FASTMSG LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME LOCPATH NLSPATH - -main: - build - -install: - shell ./install.sh parameter:'work' parameter:'verbosity' parameter:'color' - -help: - print - print context:'title'Fakefile Options for Firewall Program.context:'reset' - - print - print The following operations are available\: - print " - context:'notable'help:context:'reset' Perform the help operation, printing this message." - print " - context:'notable'install:context:'reset' A helper operation that simply calls the ./install.sh script with default settings." - print " - context:'notable'main:context:'reset' The default compilation using the build settings mode." - - print - print The context:'notable'install[context]:'reset' operation supports the context:'notable'work[context]:'reset', context:'notable'verbosity[context]:'reset', and context:'notable'color[context]:'reset' parameters. diff --git a/level_3/firewall/data/build/settings b/level_3/firewall/data/build/settings deleted file mode 100644 index c13016b..0000000 --- a/level_3/firewall/data/build/settings +++ /dev/null @@ -1,111 +0,0 @@ -# fss-0001 -# -# Modes: -# - android: Compile on an android system (using Termux; may need modification depending on the android system). -# - clang: Use CLang rather than the default, which is generally GCC. -# - coverage: Compile for building coverage. -# - debug: Enable debugging, such as compile time debug options. -# - fanalyzer: Compile using GCC's -fanalyzer compile time option. -# - gcc: Use GCC specific settings. -# - gcc_13: Use GCC version 13 or greater specific settings. -# - individual: Compile using per project (individual) libraries, does not handle thread or threadless cases. -# - individual_thread: This is required when compiling in individual mode with "thread" mode. -# - level: Compile using per level libraries. -# - monolithic: Compile using per monolithic libraries. -# - test: Compile for a test, such as unit testing. -# - thread: Compile with thread support. -# - threadless: Compile without thread support. -# - -build_name firewall - -version_major 0 -version_minor 8 -version_micro 0 -version_file micro -version_target minor - -modes android clang coverage debug fanalyzer gcc gcc_13 individual individual_thread level monolithic test thread threadless -modes_default debug gcc monolithic thread - -build_compiler gcc -build_compiler-clang clang -build_indexer ar -build_indexer_arguments rcs -build_language c - -build_libraries_shared -lc -lcap -build_libraries_shared-individual -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program -lfl_control_group -lfl_conversion -lfl_environment -lfl_fss -lfl_print -lf_abstruse -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_status_string -lf_string -lf_type_array -lf_utf -build_libraries_shared-individual_thread -lf_thread -build_libraries_shared-level -lfll_2 -lfll_1 -lfll_0 -build_libraries_shared-monolithic -lfll - -build_libraries_static -l:libc.a -l:libcap.a -build_libraries_static-individual -l:libfll_error.a -l:libfll_execute.a -l:libfll_fss.a -l:libfll_print.a -l:libfll_program.a -l:libfl_control_group.a -l:libfl_conversion.a -l:libfl_environment.a -l:libfl_fss.a -l:libfl_print.a -l:libf_abstruse.a -l:libf_capability.a -l:libf_color.a -l:libf_compare.a -l:libf_console.a -l:libf_control_group.a -l:libf_conversion.a -l:libf_directory.a -l:libf_environment.a -l:libf_execute.a -l:libf_file.a -l:libf_fss.a -l:libf_limit.a -l:libf_memory.a -l:libf_parse.a -l:libf_path.a -l:libf_pipe.a -l:libf_print.a -l:libf_rip.a -l:libf_signal.a -l:libf_status_string.a -l:libf_string.a -l:libf_type_array.a -l:libf_utf.a -build_libraries_static-individual_thread -l:libf_thread.a -build_libraries_static-level -l:libfll_2.a -l:libfll_1.a -l:libfll_0.a -build_libraries_static-monolithic -l:libfll.a - -build_sources_library main/common.c main/common/define.c main/common/enumeration.c main/common/string.c main/common/type.c -build_sources_library main/print/debug.c main/print/error.c main/print/message.c main/print/warning.c -build_sources_library main/operate.c main/operate/buffer.c main/operate/chains.c main/operate/create.c main/operate/default.c main/operate/delete.c main/operate/process.c main/operate/rules.c main/operate/show.c -build_sources_library main/firewall.c main/signal.c main/thread.c - -build_sources_program main/main.c - -build_sources_headers main/common.h main/common/define.h main/common/enumeration.h main/common/string.h main/common/type.h -build_sources_headers main/print/debug.h main/print/error.h main/print/message.h main/print/warning.h -build_sources_headers main/operate.h main/operate/buffer.h main/operate/chains.h main/operate/create.h main/operate/default.h main/operate/delete.h main/operate/process.h main/operate/rules.h main/operate/show.h -build_sources_headers main/firewall.h main/operate.h main/signal.h main/thread.h - -build_sources_documentation man - -build_sources_setting network - -build_script yes -build_shared yes -build_static no - -path_headers program/firewall -path_library_script script -path_library_shared shared -path_library_static static -path_object_script script -path_object_shared shared -path_object_static static -path_program_script script -path_program_shared shared -path_program_static static - -has_path_standard yes -preserve_path_headers yes - -search_exclusive yes -search_shared yes -search_static yes - -environment PATH LD_LIBRARY_PATH -environment LANG LC_ALL LC_COLLATE LC_CTYPE LC_FASTMSG LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME LOCPATH NLSPATH - -#defines -D_di_libcap_ -defines -D_libcap_legacy_only_ -defines-android -D_di_f_thread_attribute_affinity_get_ -D_di_f_thread_attribute_affinity_set_ -D_di_f_thread_attribute_concurrency_get_ -D_di_f_thread_attribute_concurrency_set_ -D_di_f_thread_attribute_default_get_ -D_di_f_thread_attribute_default_set_ -D_di_f_thread_cancel_ -D_di_f_thread_cancel_state_set_ -D_di_f_thread_cancel_test_ -D_di_f_thread_join_try_ -D_di_f_thread_join_timed_ -D_pthread_mutex_prioceiling_unsupported_ -D_di_f_thread_semaphore_file_close_ -D_di_f_thread_semaphore_file_open_ -D_di_f_thread_semaphore_file_delete_ -D_di_f_thread_cancel_type_set_ -defines-debug -D_en_f_status_debug_ -defines-thread -D_pthread_attr_unsupported_ -D_pthread_sigqueue_unsupported_ -defines-threadless -D_di_thread_support_ - -flags -O2 -g -fdiagnostics-color=always -Wno-logical-not-parentheses -Wno-parentheses -Wno-missing-braces -flags -fstack-clash-protection -fno-delete-null-pointer-checks -flags -Wl,-z,nodlopen -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -flags-android -Wno-implicit-function-declaration -Wl,-z,norelro -flags-clang -Wno-logical-op-parentheses -flags-coverage -O0 --coverage -fprofile-abs-path -fprofile-dir=build/coverage/ -flags-fanalyzer -fanalyzer -flags-gcc_13 -fstrict-flex-arrays=3 -flags-test -O0 -fstack-protector-strong -Wall -flags-thread -pthread - -flags_library -fPIC -flags_object -fPIC -flags_program -fPIE -flags_program-android -fPIE -Wl,-z,relro diff --git a/level_3/firewall/data/documentation/man/man1/firewall.1 b/level_3/firewall/data/documentation/man/man1/firewall.1 deleted file mode 100644 index 2480525..0000000 --- a/level_3/firewall/data/documentation/man/man1/firewall.1 +++ /dev/null @@ -1,62 +0,0 @@ -.TH FIREWALL "1" "November 2025" "Kevux - Firewall 0.8.0" "User Commands" -.SH NAME -firewall \- A basic iptables based firewall manager for the Kevux distribution. -.SH SYNOPSIS -.B firewall -[\fI\,OPTIONS\/\fR] [\fI\,COMMAND\/\fR] -.SH DESCRIPTION -.PP -.SH OPTIONS -.TP -\fB\{\-h, \-\-help\fR -Print the help message. -.TP -\fB+C, ++copyright\fR -Print the copyright. -\fB+d, ++dark\fR -Output using colors that show up better on dark backgrounds. -.TP -\fB+l, ++light\fR -Output using colors that show up better on light backgrounds. -.TP -\fB+n, ++no_color\fR -Do not print using color. -.TP -\fB+Q, ++quiet\fR -Decrease verbosity, silencing most output. -.TP -\fB+E, ++error\fR -Decrease verbosity, using only error output. -.TP -\fB+N, ++normal\fR -Set verbosity to normal. -.TP -\fB+V, ++verbose\fR -Increase verbosity beyond normal output. -.TP -\fB+D, ++debug\fR -Enable debugging, significantly increasing verbosity beyond normal output. -.TP -\fB+v, ++version\fR -Print only the version number. -.SH COMMAND -.TP -\fBstart\fR -Turn on the firewall. -.TP -\fBstop\fR -Turn off the firewall. -.TP -\fBrestart\fR -Turn off and then turn on the firewall. -.TP -\fBlock\fR -Prevent all communication. -.TP -\fBshow\fR -Show active firewall settings. -.SH AUTHOR -Written by Kevin Day. -.SH COPYRIGHT -.PP -Copyright \(co 2007-2025 Kevin Day, GNU LGPL Version 2.1 or later. diff --git a/level_3/firewall/data/settings/network/firewall/default-blacklist b/level_3/firewall/data/settings/network/firewall/default-blacklist deleted file mode 100644 index 4f13080..0000000 --- a/level_3/firewall/data/settings/network/firewall/default-blacklist +++ /dev/null @@ -1 +0,0 @@ -# fss-0000 diff --git a/level_3/firewall/data/settings/network/firewall/default-whitelist b/level_3/firewall/data/settings/network/firewall/default-whitelist deleted file mode 100644 index 4f13080..0000000 --- a/level_3/firewall/data/settings/network/firewall/default-whitelist +++ /dev/null @@ -1 +0,0 @@ -# fss-0000 diff --git a/level_3/firewall/data/settings/network/firewall/example-device-firewall b/level_3/firewall/data/settings/network/firewall/example-device-firewall deleted file mode 100644 index 7a7143e..0000000 --- a/level_3/firewall/data/settings/network/firewall/example-device-firewall +++ /dev/null @@ -1,241 +0,0 @@ -# fss-0002 -# valid tool: iptables, ip6tables, ip46tables (ip46tables = both ip4 and ip6 tables, which is the default). -# valid direction: input, output, none. -# valid device: all, this, (any device name goes here without parenthesis). -# valid action: append, insert, policy, none. -# valid procotol: none, (any valid iptables protocol type, such as tcp, udp, and icmp). -# reserved chains: INPUT, OUTPUT, FORWARD, POSTROUTING, PREROUTING, none (this only applies from within a 'main' list). -# some options for -j: ACCEPT, REJECT, DROP, RETURN, LOG, AUDIT, CHECKSUM, CLASSIFY, CLUSTERIP, CONNMARK, CONNSECMARK, CT, DNAT, DNPT, DSCP, ECN, HL, HMARK, IDLETIMER, LED, MARK, MASQUERADE, MIRROR, NETMAP, NFLOG, NFQUEUE, NOTRACK, RATETEST, REDIRECT, SAME, SECMARK, SET, SNAT, SNPT, TCPMSS,TCPOPTSTRIP, TEE, TOS, TPROXY, TRACE, TTL, ULOG. -# some options for -t: nat, mangle, filter, raw, security (filter is the default). -# some options for --state: NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED, SNAT, DNAT. -# some options for --ctstatus: NONE, EXPECTED, SEEN_REPLY, ASSURED, CONFIRMED. - -main: - chain INPUT - device this - direction none - - # Define a blacklist and a whitelist, put ip addresses in the file named 'example-device-whitelist' separated by white space to whitelist an ip address - # (ip_list might be removed in the future once I figure out how ipset works and confirm if ipset can replace my ip_list.) - #ip_list source example-device-whitelist -j ACCEPT - #ip_list source example-device-blacklist -j REJECT - #ip_list destination example-device-whitelist -j ACCEPT - #ip_list destination example-device-blacklist -j REJECT - - # Connection marking for vlans or QoS (via: tc). - #chain PREROUTING - #rule -t mangle -j CONNMARK --restore-mark - #chain INPUT - - # save markings that have been restored (prerouting). - #chain PREROUTING - #rule -t mangle -m mark --mark 2 -j CONNMARK --save-mark - #rule -t mangle -m mark --mark 3 -j CONNMARK --save-mark - #chain INPUT - - # example rate limit using marking for port 22 - #protocol tcp - #chain OUTPUT - #direction output - #rule -t mangle --sport 22 -j MARK --set-mark 2 - #chain INPUT - #direction input - #rule -t mangle --dport 22 -j MARK --set-mark 2 - #direction none - - # rate limit when there are 8 or more connections from a single host. - #protocol tcp - #chain OUTPUT - #rule -t mangle -m connlimit --connlimit-above 7 -j MARK --set-mark 3 - #chain INPUT - #rule -t mangle -m connlimit --connlimit-above 7 -j MARK --set-mark 3 - - # save markings that have been assigned (postrouting). - #protocol none - #chain POSTROUTING - #rule -t mangle -m mark --mark 2 -j CONNMARK --save-mark - #rule -t mangle -m mark --mark 3 -j CONNMARK --save-mark - #chain INPUT - - - # randomly trigger the rule (51% of the time) and then the reset of the time go to the second rule. - # this can be very useful in distributing connections between different devices or servers. - #rule -m random --average 51 -j example_rule_1 - #rule -j example_rule_2 - - -input-tcp: - device this - direction input - protocol tcp - - ## Http / Web - #rule --dport 80 -j LOG --log-prefix "TRAFFIC:WEB " - #rule --dport 80 -j ACCEPT - - ## Http / Web redirect to Https / Secure Web - #tool iptables - #rule -t nat --dport 80 -j REDIRECT --to-port 443 - #tool ip46tables - #direction input - - ## Https / Secure Web - #rule --dport 443 -j LOG --log-prefix "TRAFFIC:WEB " - #rule --dport 443 -j ACCEPT - - ## Http / Https / Web throttle connections that occur too often. - #rule --dport 80 --sync -m recent --name http_throttle --set - #rule --dport 80 --sync -m recent --name http_throttle --update --seconds 3 --hitcount 10 -j DROP - #rule --dport 443 --sync -m recent --name http_throttle --set - #rule --dport 443 --sync -m recent --name http_throttle --update --seconds 3 --hitcount 10 -j DROP - - ## MySQL - #rule --dport 3306 -j ACCEPT - - ## Music Player Daemon - #rule --dport 6600 -j ACCEPT - - ## Camsource - #rule --dport 9192 -j ACCEPT - - ## Cups Printer Administration - #rule --dport 631 -j ACCEPT - - ## Ssh (OpenSSH) - #rule --dport 22 -j LOG --log-prefix "TRAFFIC:SSH " - #rule --dport 22 -j ACCEPT - - ## clamd (Clam Antivirus) - remote access, not needed for normal - #rule --dport 3310 -j ACCEPT - - ## Virtual Network Client Server (add 1 for each seperat vnc server) - #rule --dport 5900 -j ACCEPT - - ## Printer Port, is probably open...safer to close unless you are SERVING a printer - #rule --dport 515 -j REJECT - - ## Subversion server - #rule --dport 3690 -j ACCEPT - - ## Silc server - #rule --dport 706 -j ACCEPT - - ## Worms of Prey - #rule --dport 47288 -j ACCEPT - - ## Git Daemon - #rule --dport 9418 -j ACCEPT - - ## Ldap Server - #rule --dport 389 -j ACCEPT - #rule --dport 636 -j ACCEPT - #rule --dport 1636 -j ACCEPT - - ## Mail Server (25 = SMTP, 465 = SMTPS, 993 = IMAP, 995 = POP) - #rule --dport 25 -j ACCEPT - - -input-udp: - device this - direction input - protocol udp - - ## DNS Server (Bind or Maradns) (zoneserver from maradns does this portion) - #rule --dport 53 -j ACCEPT - - ## DHCP Server (providing dhcp address to clients) - #tool iptables - #rule --sport 68 -d 255.255.255.255 --dport 67 -j ACCEPT - #tool ip46tables - - ## Subversion server - #rule --dport 3690 -j ACCEPT - - ## Worms of Prey - #rule --sport 47288:47544 -j ACCEPT - #rule --dport 47288:47544 -j ACCEPT - - -input-icmp: - device this - direction input - protocol icmp - - # allow all icmp input, such as pings - #rule -j ACCEPT - - # allow icmp: echo reply (outbound ping) - ##rule --icmp-type 0 -j ACCEPT - - # allow icmp: destination unreachable - #rule --icmp-type 3 -j ACCEPT - - # allow icmp: source quench - #rule --icmp-type 4 -j ACCEPT - - # allow icmp: redirect - #rule --icmp-type 5 -j ACCEPT - - # allow icmp: echo request (inbound ping) - #rule --icmp-type 8 -j ACCEPT - - # allow icmp: router advertisement - #rule --icmp-type 9 -j ACCEPT - - # allow icmp: router Solicitation - #rule --icmp-type 10 -j ACCEPT - - # allow icmp: time exceeded - #rule --icmp-type 11 -j ACCEPT - - # allow icmp: bad ip header - #rule --icmp-type 12 -j ACCEPT - - # allow icmp: timestamp - #rule --icmp-type 13 -j ACCEPT - - # allow icmp: timestamp reply - #rule --icmp-type 14 -j ACCEPT - - # allow icmp: information request - #rule --icmp-type 15 -j ACCEPT - - # allow icmp: information reply - #rule --icmp-type 16 -j ACCEPT - - # allow icmp: address request - #rule --icmp-type 17 -j ACCEPT - - # allow icmp: address reply - #rule --icmp-type 18 -j ACCEPT - - # allow icmp: traceroute - #rule --icmp-type 30 -j ACCEPT - - -output-tcp: - device this - direction output - protocol tcp - - -output-udp: - device this - direction output - protocol udp - - ## DNS Server (Bind or Maradns) (zoneserver from maradns does this portion) - #rule --dport 53 -j ACCEPT - - ## DHCP Server (providing dhcp address to clients) - #tool iptables - #rule --sport 67 -d 255.255.255.255 --dport 68 -j ACCEPT - #tool ip46tables - - -output-icmp: - device this - direction output - protocol icmp - - diff --git a/level_3/firewall/data/settings/network/firewall/firewall-first b/level_3/firewall/data/settings/network/firewall/firewall-first deleted file mode 100644 index 386b26b..0000000 --- a/level_3/firewall/data/settings/network/firewall/firewall-first +++ /dev/null @@ -1,667 +0,0 @@ -# fss-0002 - -main: - # initialize the firewall - action none - direction none - protocol none - chain none - - rule -F - rule -Z - - tool iptables - rule -t nat -F - rule -t mangle -F - tool ip46tables - - -INPUT: - # main input chain, expect this to act as the final RETURN handler. - direction input - protocol none - - # handle local (loopback) connections. - device lo - rule -j input-loop - device all - - # Drop all INVALID packets so they aren't even processed - rule -m conntrack --ctstate INVALID -j input-invalid - - # Allow ALL connections that have already been established by this host - #rule -m state --state ESTABLISHED,RELATED -j ACCEPT - rule -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - - # send to whitelist and blacklist, which should return here. - rule -j input-blacklist - rule -j input-whitelist - - # Drop multicasts and broadcasts, they should not exist for a router and in most cases should be avoided. - # unicasts are the normal behavior and blocking them would be very unusual. - rule -m pkttype --pkt-type broadcast -j input-casting - rule -m pkttype --pkt-type multicast -j input-casting - #rule -m pkttype --pkt-type unicast -j input-casting - - # send all tcp packets to the tcp queue - protocol tcp - rule -m state --state NEW -j input-tcp - - # send all udp packets to the udp queue - protocol udp - rule -m state --state NEW -j input-udp - - # send all icmp packets to the icmp queue - protocol icmp - rule -m state --state NEW -j input-icmp - - # send all icmpv6 packets to the icmpv6 queue - tool ip6tables - protocol icmpv6 - rule -m state --state NEW -j input-icmpv6 - tool ip46tables - - # load custom device-specific rules - rule -j input-devices - - # remaining packets - #rule -j LOG --log-prefix "INPUT:" - rule -j DROP - - -input-invalid: - direction input - protocol none - - # silently drop invalid RST tcp packets instead of sending a RST back. - protocol tcp - rule --tcp-flags RST RST -j DROP - - # invalid FIN,ACK (server is wanting a FIN response), silently DROP it, send RST back, or send a FIN back. - #rule --tcp-flags ALL ACK,FIN -j DROP - #rule --tcp-flags ALL ACK,FIN -j REJECT --reject-with tcp-reset - rule --tcp-flags ALL ACK,FIN -j ACCEPT - - - # remaining packets - protocol none - #rule -j LOG --log-prefix "INV_IN:" - rule -j DROP - - -input-invalid-stream: - direction input - protocol tcp - - # remaining packets - rule -j REJECT --reject-with tcp-reset - - -input-loop: - direction input - protocol none - - # allow cups via loopback. - protocol tcp - tool iptables - rule --sport 631 -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - rule --dport 631 -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - - # allow local dns server - #protocol udp - #rule --dport 53 -s 127.0.0.0/8 -d 127.0.1.1 -j ACCEPT - - # this is the localhost address, valid localhost are allowed to return to the previous chain. - protocol none - rule -s 127.0.0.0/8 -d 127.0.0.0/8 -j RETURN - tool ip6tables - rule -s ::1 -d ::1 -j RETURN - tool iptables - - # it may be necessay to add a return for individual ips because there are some cases that result in non-localhost addresses going through loopback. - #rule -s 192.168.0.1 -d 192.168.0.1 -j RETURN - tool ip46tables - - # remaining packets - #rule -j DROP - rule -j RETURN - - -input-blacklist: - direction input - protocol none - - -input-whitelist: - direction input - protocol none - - -input-devices: - direction input - protocol none - - # add device-specific rules here. - - -input-tcp: - direction input - protocol tcp - - # Resist TCP sequence number spoof attacks. - rule --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW -j input-invalid - - # TCP streams must always start with SYN, all others are invalid and may be an attack. - rule ! --syn -m conntrack --ctstate NEW -j input-invalid-stream - - # Prevent an XMAS attacks - rule --tcp-flags ALL FIN,URG,PSH -j input-invalid - rule --tcp-flags ALL ALL -j input-invalid - rule --tcp-flags ALL SYN,RST,ACK,FIN,URG -j input-invalid - - # Prevent NULL attack - rule --tcp-flags ALL NONE -j input-invalid - - # Prevent Sync Reset Attacks - rule --tcp-flags SYN,RST SYN,RST -j input-invalid - rule --tcp-flags SYN,FIN SYN,FIN -j input-invalid - - # XMPP ports. - #rule -m multiport --dports 5222,5223,5269 -j ACCEPT - - # Postgresql standard port - #rule --dport 5432 -j ACCEPT - - # Mysql standard port - #rule --dport 5432 -j ACCEPT - - # Oracle standard port - #rule --dport 1521 -j ACCEPT - - # Web standard ports - #rule -m multiport --dports 80,443,8080,8181,8443,8099,9000,9001,9002 -j ACCEPT - - # ldap standard ports - #rule -m multiport --dports 389,636,1636 -j ACCEPT - - # mail standard ports - #rule -m multiport --dports 25,465,993 -j ACCEPT - - # ssh standard port - #rule --dport 22 -j ACCEPT - - # require 3 knocks before opening the door for SSH. - #rule --dport 22 -m state --state NEW -m recent --set - #rule --dport 22 -m state --state NEW -m recent --update --seconds 15 --hitcount 3 -j ACCEPT - - # common chef ssh ports - #rule --dport 2200:2210 -j ACCEPT - - # gpg standard port - #rule --dport 9050 -j ACCEPT - - # ftp standard port - #rule --dport 21 -j ACCEPT - - # dns standard port (via tcp) - #rule --dport 53 -j ACCEPT - - # rdp standard port - #rule --dport 3389 -j ACCEPT - - # spice standard ports - #rule -m multiport --dports 5900:5905 -j ACCEPT - - # allow high ports - #rule -m multiport --dports 49152:65535 -j ACCEPT - - # accept all loopback - tool iptables - rule -d 127.0.0.0/8 -j ACCEPT - tool ip6tables - rule -d ::1 -j ACCEPT - tool ip46tables - - -input-udp: - direction input - protocol udp - - # openvpn standard port - #rule --dport 1194 -j ACCEPT - - # dns standard port - #rule --dport 53 -j ACCEPT - - # mdns standard port - #rule --dport 5353 -j ACCEPT - - # dhcp standard port - rule --sport 67:68 --dport 67:68 -j ACCEPT - - # ntp standard port - #rule --dport 123 -j ACCEPT - - # teeworlds game server and client - #rule --dport 8300:8310 -j ACCEPT - - # XMPP ports. - #rule -m multiport --dports 5222,5223,5269 -j ACCEPT - - # allow high ports - #rule -m multiport --dports 49152:65535 -j ACCEPT - - # accept all loopback - tool iptables - rule -d 127.0.0.0/8 -j ACCEPT - tool ip6tables - rule -d ::1 -j ACCEPT - tool ip46tables - - -input-icmp: - direction input - protocol icmp - tool iptables - - # destination unreachable - rule --icmp-type 3 -j ACCEPT - - # redirect - rule --icmp-type 5 -j ACCEPT - - # (outgoing) ping - rule --icmp-type 0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - - # time exceeded - rule --icmp-type 11 -j ACCEPT - - # parameter problem - rule --icmp-type 12 -j ACCEPT - - # all loopback ICMP traffic - tool iptables - rule -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - tool ip46tables - - # remaining packets - #rule -j LOG --log-prefix "ICMP_IN:" - #rule -j DROP - rule -j ACCEPT - - -input-icmpv6: - direction input - protocol icmp - tool ip6tables - - #rule -j LOG --log-prefix "ICMP6_IN:" - #rule -j DROP - rule -j ACCEPT - - tool ip46tables - - -input-casting: - direction input - protocol none - tool ip46tables - - # do not auto-drop dhcp messages sent from a dhcp server to a local dhcp client. - # dhcp offer/acknowledge (the source address must be the routers address, so do not allow 0.0.0.0/0) - protocol udp - tool iptables - rule --sport 67 -d 255.255.255.255 --dport 68 -j RETURN - protocol none - - # Move ICMPv6 along. - tool ip6tables - protocol icmpv6 - rule -m state --state NEW -j input-icmpv6 - tool ip46tables - - # drop all remaining broadcasts and multicasts - #rule -j LOG --log-prefix "CAST_IN:" - #rule -j DROP - rule -j RETURN - - -OUTPUT: - # main output chain, expect this to act as the final RETURN handler. - direction output - protocol none - - # handle local (loopback) connections. - device lo - rule -j output-loop - device all - - # Drop all INVALID packets so they aren't even processed - rule -m conntrack --ctstate INVALID -j output-invalid - - # Allow ALL connections that have already been established by this host - #rule -m state --state ESTABLISHED,RELATED -j ACCEPT - rule -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - - # send to whitelist and blacklist, which should return here. - rule -j input-blacklist - rule -j input-whitelist - - # Drop multicasts and broadcasts, they should not exist for a router and in most cases should be avoided. - # unicasts are the normal behavior and blocking them would be very unusual. - rule -m pkttype --pkt-type broadcast -j output-casting - rule -m pkttype --pkt-type multicast -j output-casting - #rule -m pkttype --pkt-type unicast -j output-casting - - # send all tcp packets to the tcp queue - protocol tcp - rule -m state --state NEW -j output-tcp - - # send all udp packets to the udp queue - protocol udp - rule -m state --state NEW -j output-udp - - # send all icmp packets to the icmp queue - protocol icmp - rule -m state --state NEW -j output-icmp - - # send all icmpv6 packets to the icmpv6 queue - tool ip6tables - protocol icmpv6 - rule -m state --state NEW -j output-icmpv6 - tool ip46tables - - # load custom device-specific rules - rule -j input-devices - - # remaining packets - #rule -j LOG --log-prefix "OUTPUT:" - #rule -j DROP - rule -j ACCEPT - - -output-invalid: - direction output - protocol none - - # remaining packets - #rule -j LOG --log-prefix "INV_OUT:" - rule -j DROP - - -output-invalid-stream: - direction input - protocol tcp - - # remaining packets - rule -j REJECT --reject-with tcp-reset - - -output-loop: - direction output - protocol none - - # allow cups via loopback. - protocol tcp - tool iptables - rule --sport 631 -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - rule --dport 631 -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - - # allow local dns server - protocol udp - rule --sport 53 -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - - # this is the localhost address, valid localhost are allowed to return to the previous chain. - protocol none - rule -s 127.0.0.0/8 -d 127.0.0.0/8 -j RETURN - - # it may be necessay to add a return for individual ips because there are some cases that result in non-localhost addresses going through loopback. - #rule -s 192.168.0.1 -d 192.168.0.1 -j RETURN - tool ip46tables - - # remaining packets - #rule -j DROP - rule -j RETURN - - -output-blacklist: - direction output - protocol none - - -output-whitelist: - direction output - protocol none - - -output-devices: - direction output - protocol none - - # add device-specific rules here. - - -output-tcp: - direction output - protocol tcp - - # allow sending TCP RST even when there is no valid local connection - protocol tcp - rule --tcp-flags RST RST -j ACCEPT - - # allow sending ACK,PSH,FIN even when there is no valid local connection. - # the connection may already be closed locally by the time this packet goes out and it could improperly be marked as invalid before it leaves the system. - # allowing this ensures that the client gets the final disconnect acknowledgment. - rule --tcp-flags ALL ACK,FIN -j ACCEPT - rule --tcp-flags ALL ACK,PSH,FIN -j ACCEPT - - # Resist TCP sequence number spoof attacks. - rule --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW -j input-invalid - - # TCP streams must always start with SYN, all others are invalid and may be an attack. - rule ! --syn -m conntrack --ctstate NEW -j output-invalid-stream - - # Prevent an XMAS attacks - rule --tcp-flags ALL FIN,URG,PSH -j output-invalid - rule --tcp-flags ALL ALL -j output-invalid - rule --tcp-flags ALL SYN,RST,ACK,FIN,URG -j output-invalid - - # Prevent NULL attack - rule --tcp-flags ALL NONE -j output-invalid - - # Prevent Sync Reset Attacks - rule --tcp-flags SYN,RST SYN,RST -j output-invalid - rule --tcp-flags SYN,FIN SYN,FIN -j output-invalid - - # Postgresql standard port - #rule --sport 5432 -j ACCEPT - - # Mysql standard port - #rule --sport 5432 -j ACCEPT - - # Oracle standard port - #rule --sport 1521 -j ACCEPT - - # Web standard ports - rule -m multiport --dports 80,443,8080,8181,8443,8099,9000,9001,9002 -j ACCEPT - #rule -m multiport --sports 80,443,8080,8181,8443,8099,9000,9001,9002 -j ACCEPT - - # ldap standard ports - rule -m multiport --dports 389,636,1636 -j ACCEPT - #rule -m multiport --sports 389,636,1636 -j ACCEPT - - # mail standard ports - rule -m multiport --dports 25,465,993 -j ACCEPT - #rule -m multiport --sports 25,465,993 -j ACCEPT - - # XMPP ports - rule -m multiport --dports 5222,5223,5269 -j ACCEPT - - # ssh standard port - rule --dport 22 -j ACCEPT - #rule --sport 22 -j ACCEPT - - # common chef ssh ports - #rule --dport 2200:2210 -j ACCEPT - #rule --sport 2200:2210 -j ACCEPT - - # gpg standard port - rule --dport 9050 -j ACCEPT - #rule --sport 9050 -j ACCEPT - - # pgp keyserver port - rule --dport 11371 -j ACCEPT - - # ftp standard port - rule --dport 21 -j ACCEPT - #rule --sport 21 -j ACCEPT - - # dns standard port (via tcp) - rule --dport 53 -j ACCEPT - #rule --sport 53 -j ACCEPT - - # rdp standard port - rule --dport 3389 -j ACCEPT - #rule --sport 3389 -j ACCEPT - - # spice standard ports - rule -m multiport --dports 5900:5905 -j ACCEPT - #rule -m multiport --sports 5900:5905 -j ACCEPT - - # allow high ports - rule -m multiport --sports 49152:65535 -j ACCEPT - #rule -m multiport --dports 49152:65535 -j ACCEPT - - # accept all loopback - tool iptables - rule -s 127.0.0.0/8 -j ACCEPT - tool ip6tables - rule -d ::1 -j ACCEPT - tool ip46tables - - -output-udp: - direction output - protocol udp - - # openvpn standard port - rule --dport 1194 -j ACCEPT - #rule --sport 1194 -j ACCEPT - - # dns standard port - rule --dport 53 -j ACCEPT - #rule --sport 53 -j ACCEPT - - # mdns standard port - #rule --dport 5353 -j ACCEPT - #rule --sport 5353 -j ACCEPT - - # dhcp standard port - rule --sport 67:68 --dport 67:68 -j ACCEPT - - # ntp standard port - rule --dport 123 -j ACCEPT - #rule --sport 123 -j ACCEPT - - # ntpsec standard port - rule --dport 4460 -j ACCEPT - - # teeworlds game server and client - rule --dport 8300:8310 -j ACCEPT - - # XMPP ports - rule -m multiport --dports 5222,5223,5269 -j ACCEPT - - # allow high ports - rule -m multiport --sports 49152:65535 -j ACCEPT - #rule -m multiport --dports 49152:65535 -j ACCEPT - - # accept all loopback - tool iptables - rule -s 127.0.0.0/8 -j ACCEPT - tool ip6tables - rule -d ::1 -j ACCEPT - tool ip46tables - - -output-icmp: - direction output - protocol icmp - tool iptables - - # destination unreachable - rule --icmp-type 3 -j ACCEPT - - # redirect - rule --icmp-type 5 -j ACCEPT - - # (outgoing) ping - rule --icmp-type 8 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT - - # time exceeded - rule --icmp-type 11 -j ACCEPT - - # parameter problem - rule --icmp-type 12 -j ACCEPT - - # all loopback ICMP traffic - tool iptables - rule -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT - tool ip46tables - - # remaining packets - #rule -j LOG --log-prefix "ICMP_OUT:" - #rule -j DROP - rule -j ACCEPT - - -output-icmpv6: - direction output - protocol icmp - tool ip6tables - - #rule -j LOG --log-prefix "ICMP6_OUT:" - #rule -j DROP - rule -j ACCEPT - - tool ip46tables - - -output-casting: - direction output - protocol none - tool ip46tables - - # do not auto-drop dhcp client messages sent to a dhcp server. - # dhcp discover/request (for the request, the dhcp server ip address is known but for some reason the dhcp standard states tat the src is 0.0.0.0. - protocol udp - tool iptables - rule --sport 68 -d 255.255.255.255 --dport 67 -j RETURN - protocol none - tool ip46tables - - # Move ICMPv6 along. - tool ip6tables - protocol icmpv6 - rule -m state --state NEW -j output-icmpv6 - tool ip46tables - - # drop all remaining broadcasts and multicasts - #rule -j LOG --log-prefix "CAST:" - #rule -j DROP - rule -j ACCEPT - - -FORWARD: - - # load custom device-specific rules - rule -j forward-devices - - #rule -j LOG --log-prefix "FORWARDs:" - #rule -j DROP - rule -j ACCEPT - - -forward-devices: - - # add device-specific rules here. diff --git a/level_3/firewall/data/settings/network/firewall/firewall-last b/level_3/firewall/data/settings/network/firewall/firewall-last deleted file mode 100644 index 1f8375b..0000000 --- a/level_3/firewall/data/settings/network/firewall/firewall-last +++ /dev/null @@ -1,2 +0,0 @@ -# fss-0002 - diff --git a/level_3/firewall/data/settings/network/firewall/firewall-other b/level_3/firewall/data/settings/network/firewall/firewall-other deleted file mode 100644 index 5112a34..0000000 --- a/level_3/firewall/data/settings/network/firewall/firewall-other +++ /dev/null @@ -1,69 +0,0 @@ -# fss-0002 - -stop: - action policy - - chain INPUT - rule ACCEPT - - chain OUTPUT - rule ACCEPT - - chain FORWARD - rule ACCEPT - - chain none - direction none - action none - rule -t filter --flush - - tool iptables - rule -t nat --flush - rule -t mangle --flush - tool ip46tables - - rule --delete-chain - - tool iptables - rule -t nat --delete-chain - rule -t mangle --delete-chain - tool ip46tables - - -lock: - action policy - - chain INPUT - rule DROP - - chain OUTPUT - rule DROP - - chain FORWARD - rule DROP - - chain none - direction none - action none - rule --flush - - tool iptables - rule -t nat --flush - rule -t mangle --flush - tool ip46tables - - rule --delete-chain - - tool iptables - rule -t nat --delete-chain - rule -t mangle --delete-chain - tool ip46tables - - device lo - action insert - direction output - chain OUTPUT - rule -j ACCEPT - direction input - chain INPUT - rule -j ACCEPT -- 1.8.3.1