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 @@
| =gettext("Custom Access Control List");?> | +=gettext("Access Control List");?> | =gettext("Port")?> | =gettext("External port")?> | =gettext("Protocol")?> | -=gettext("Source IP")?> | -=gettext("Source port")?> | +=gettext("Remote IP")?> | +=gettext("Remote port")?> | =gettext("Added via / description")?> | @@ -83,8 +83,8 @@ !preg_match('/on (?P
|---|