diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc index f783d8aad..f2f415126 100644 --- a/src/etc/inc/filter.inc +++ b/src/etc/inc/filter.inc @@ -405,6 +405,8 @@ function filter_configure_sync($verbose = false) } $aliases = filter_generate_aliases($cnfint); + $aliases .= "\n# Plugins tables\n"; + $aliases .= $fw->tablesToText(); if ($verbose) { echo '.'; diff --git a/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php b/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php index a852349ea..d66a44c41 100644 --- a/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php +++ b/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php @@ -42,6 +42,7 @@ class Plugin private $interfaceMapping = array(); private $gatewayMapping = array(); private $systemDefaults = array(); + private $tables = array(); /** * init firewall plugin component @@ -232,4 +233,35 @@ class Plugin } return $output; } + + /** + * register a pf table + * @param string $name table name + * @param boolean $persist persistent + * @param string $file get table from file + */ + public function registerTable($name, $persist = false, $file = null) + { + $this->tables[] = array('name' => $name, 'persist' => $persist, 'file' => $file); + } + + /** + * fetch tables as text (pf tables part) + * @return string + */ + public function tablesToText() + { + $result = ""; + foreach ($this->tables as $table) { + $result .= "table <{$table['name']}>"; + if ($table['persist']) { + $result .= " persist"; + } + if (!empty($table['file'])) { + $result .= " file \"{$table['file']}\""; + } + $result .= "\n"; + } + return $result; + } }