From 65199d40fad41c74aa3be286a63969f0b27a6937 Mon Sep 17 00:00:00 2001 From: Self-Hosting-Group <155233284+Self-Hosting-Group@users.noreply.github.com> Date: Wed, 28 Jan 2026 00:00:00 +0000 Subject: [PATCH] net/upnp: complete service improvements --- net/upnp/Makefile | 2 +- net/upnp/pkg-descr | 8 +++++ .../src/etc/inc/plugins.inc.d/miniupnpd.inc | 19 ++++++++-- .../mvc/app/models/OPNsense/UPnP/ACL/ACL.xml | 7 ++++ .../app/models/OPNsense/UPnP/Menu/Menu.xml | 1 + .../templates/OPNsense/Syslog/local/upnp.conf | 6 ++++ net/upnp/src/www/services_upnp.php | 35 ++++++++++++++----- net/upnp/src/www/status_upnp.php | 8 ++--- 8 files changed, 70 insertions(+), 16 deletions(-) create mode 100644 net/upnp/src/opnsense/service/templates/OPNsense/Syslog/local/upnp.conf diff --git a/net/upnp/Makefile b/net/upnp/Makefile index 4c5c4109b4..a805a22bb4 100644 --- a/net/upnp/Makefile +++ b/net/upnp/Makefile @@ -1,5 +1,5 @@ PLUGIN_NAME= upnp -PLUGIN_VERSION= 1.8 +PLUGIN_VERSION= 1.9 PLUGIN_DEPENDS= miniupnpd PLUGIN_COMMENT= UPnP IGD & PCP/NAT-PMP Service PLUGIN_MAINTAINER= franco@opnsense.org diff --git a/net/upnp/pkg-descr b/net/upnp/pkg-descr index e970623794..ac529f70fb 100644 --- a/net/upnp/pkg-descr +++ b/net/upnp/pkg-descr @@ -7,6 +7,14 @@ WWW: https://miniupnp.tuxfamily.org/ Plugin Changelog ================ +1.9 + +... + +1.8 + +... + 1.7 * Add option to allow arbitrary number of UPnP/NAT-PMP rules (contributed by Kreeblah) diff --git a/net/upnp/src/etc/inc/plugins.inc.d/miniupnpd.inc b/net/upnp/src/etc/inc/plugins.inc.d/miniupnpd.inc index 069680a361..e293a28d67 100644 --- a/net/upnp/src/etc/inc/plugins.inc.d/miniupnpd.inc +++ b/net/upnp/src/etc/inc/plugins.inc.d/miniupnpd.inc @@ -26,6 +26,11 @@ * POSSIBILITY OF SUCH DAMAGE. */ +function miniupnpd_syslog() +{ + return ['miniupnpd_syslog' => ['facility' => ['upnp_syslog']]]; +} + function miniupnpd_enabled() { global $config; @@ -75,7 +80,16 @@ function miniupnpd_start() return; } - mwexecfb('/usr/local/sbin/miniupnpd -f %s -P %s', [ '/var/etc/miniupnpd.conf', '/var/run/miniupnpd.pid']); + global $config; + $upnp_config = $config['installedpackages']['miniupnpd']['config'][0]; + if (($upnp_config['log_level'] ?? '') == 'info') { + $exec_cmd='/usr/local/sbin/miniupnpd -f %s -P %s -v'; + } elseif (($upnp_config['log_level'] ?? '') == 'debug') { + $exec_cmd='/usr/local/sbin/miniupnpd -f %s -P %s -vv'; + } else { + $exec_cmd='/usr/local/sbin/miniupnpd -f %s -P %s'; + } + mwexecfb($exec_cmd, ['/var/etc/miniupnpd.conf', '/var/run/miniupnpd.pid']); } function miniupnpd_stop() @@ -217,7 +231,8 @@ function miniupnpd_configure_do($verbose = false) /* enable system uptime instead of miniupnpd uptime */ if (!empty($upnp_config['sysuptime'])) { - $config_text .= "system_uptime=yes\n"; + /* Disable system uptime to workaround daemon bug with PCP/NAT-PMP epoch on BSD */ + // $config_text .= "system_uptime=yes\n"; } /* set webgui url */ diff --git a/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml b/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml index 23a2fa96e2..3e03f58686 100644 --- a/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml +++ b/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml @@ -11,4 +11,11 @@ status_upnp.php* + + Services: UPnP IGD & PCP: Log File + + ui/diagnostics/log/core/upnp/* + api/diagnostics/log/core/upnp/* + + diff --git a/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/Menu/Menu.xml b/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/Menu/Menu.xml index c040d5ea16..5608072a90 100644 --- a/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/Menu/Menu.xml +++ b/net/upnp/src/opnsense/mvc/app/models/OPNsense/UPnP/Menu/Menu.xml @@ -5,6 +5,7 @@ + diff --git a/net/upnp/src/opnsense/service/templates/OPNsense/Syslog/local/upnp.conf b/net/upnp/src/opnsense/service/templates/OPNsense/Syslog/local/upnp.conf new file mode 100644 index 0000000000..48ea7ffaf5 --- /dev/null +++ b/net/upnp/src/opnsense/service/templates/OPNsense/Syslog/local/upnp.conf @@ -0,0 +1,6 @@ +################################################################### +# Local syslog-ng configuration filter definition [upnp]. +################################################################### +filter f_local_upnp { + program("miniupnpd"); +}; diff --git a/net/upnp/src/www/services_upnp.php b/net/upnp/src/www/services_upnp.php index ec54020425..94e38e8949 100644 --- a/net/upnp/src/www/services_upnp.php +++ b/net/upnp/src/www/services_upnp.php @@ -88,6 +88,7 @@ function miniupnpd_validate_port($port) 'sysuptime', 'upload', 'upnp_igd_compat', + 'log_level' ]; foreach (miniupnpd_permuser_list() as $permuser) { @@ -186,7 +187,7 @@ function miniupnpd_validate_port($port) $upnp['num_permuser'] = $pconfig['num_permuser']; } // text field types - foreach (['ext_iface', 'download', 'upload', 'overridewanip', 'overridesubnet', 'stun_host', 'stun_port', 'friendly_name', 'upnp_igd_compat'] as $fieldname) { + foreach (['ext_iface', 'download', 'upload', 'overridewanip', 'overridesubnet', 'stun_host', 'stun_port', 'friendly_name', 'upnp_igd_compat', 'log_level'] as $fieldname) { $upnp[$fieldname] = $pconfig[$fieldname]; } foreach (miniupnpd_permuser_list() as $fieldname) { @@ -233,16 +234,16 @@ function miniupnpd_validate_port($port) - + /> - + />