diff --git a/Makefile b/Makefile
index 64d3907fe..108658c99 100644
--- a/Makefile
+++ b/Makefile
@@ -100,7 +100,6 @@ CORE_DEPENDS?= apinger \
isc-dhcp43-relay \
isc-dhcp43-server \
lighttpd \
- miniupnpd \
mpd5 \
ntp \
openssh-portable \
diff --git a/plist b/plist
index 1b05ac4a5..41dcc72b5 100644
--- a/plist
+++ b/plist
@@ -48,7 +48,6 @@
/usr/local/etc/inc/plugins.inc.d/if_legacy_opt.inc
/usr/local/etc/inc/plugins.inc.d/if_openvpn.inc
/usr/local/etc/inc/plugins.inc.d/ipfw.inc
-/usr/local/etc/inc/plugins.inc.d/miniupnpd.inc
/usr/local/etc/inc/plugins.inc.d/netflow.inc
/usr/local/etc/inc/plugins.inc.d/ntpd.inc
/usr/local/etc/inc/plugins.inc.d/pf.inc
@@ -464,8 +463,6 @@
/usr/local/opnsense/mvc/app/models/OPNsense/TrafficShaper/Migrations/M1_0_0.php
/usr/local/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.php
/usr/local/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.xml
-/usr/local/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml
-/usr/local/opnsense/mvc/app/models/OPNsense/UPnP/Menu/Menu.xml
/usr/local/opnsense/mvc/app/views/OPNsense/CaptivePortal/clients.volt
/usr/local/opnsense/mvc/app/views/OPNsense/CaptivePortal/index.volt
/usr/local/opnsense/mvc/app/views/OPNsense/CaptivePortal/vouchers.volt
@@ -1058,7 +1055,6 @@
/usr/local/www/services_unbound_domainoverride_edit.php
/usr/local/www/services_unbound_host_edit.php
/usr/local/www/services_unbound_overrides.php
-/usr/local/www/services_upnp.php
/usr/local/www/status_dhcp_leases.php
/usr/local/www/status_dhcpv6_leases.php
/usr/local/www/status_filter_reload.php
@@ -1072,7 +1068,6 @@
/usr/local/www/status_ntpd.php
/usr/local/www/status_openvpn.php
/usr/local/www/status_services.php
-/usr/local/www/status_upnp.php
/usr/local/www/status_wireless.php
/usr/local/www/system_advanced_admin.php
/usr/local/www/system_advanced_firewall.php
diff --git a/src/etc/inc/plugins.inc.d/miniupnpd.inc b/src/etc/inc/plugins.inc.d/miniupnpd.inc
deleted file mode 100644
index 2eade24ce..000000000
--- a/src/etc/inc/plugins.inc.d/miniupnpd.inc
+++ /dev/null
@@ -1,225 +0,0 @@
-registerAnchor('miniupnpd', 'rdr');
- $fw->registerAnchor('miniupnpd', 'fw');
-}
-
-function miniupnpd_services()
-{
- $services = array();
-
- if (!miniupnpd_enabled()) {
- return $services;
- }
-
- $pconfig = array();
- $pconfig['name'] = 'miniupnpd';
- $pconfig['description'] = gettext('Univeral Plug and Play');
- $pconfig['php']['restart'] = array('miniupnpd_stop', 'miniupnpd_start');
- $pconfig['php']['start'] = array('miniupnpd_start');
- $pconfig['php']['stop'] = array('miniupnpd_stop');
- $pconfig['pidfile'] = '/var/run/miniupnpd.pid';
- $services[] = $pconfig;
-
- return $services;
-}
-
-function miniupnpd_start()
-{
- if (!miniupnpd_enabled()) {
- return;
- }
-
- if (isvalidpid('/var/run/miniupnpd.pid')) {
- return;
- }
-
- mwexec_bg('/usr/local/sbin/miniupnpd -f /var/etc/miniupnpd.conf -P /var/run/miniupnpd.pid');
-}
-
-function miniupnpd_stop()
-{
- killbypid('/var/run/miniupnpd.pid', 'TERM', true);
- mwexec('/sbin/pfctl -aminiupnpd -Fr 2>&1 >/dev/null');
- mwexec('/sbin/pfctl -aminiupnpd -Fn 2>&1 >/dev/null');
-}
-
-function miniupnpd_configure()
-{
- return array('miniupnpd_configure_do');
-}
-
-function miniupnpd_uuid()
-{
- /* md5 hash of wan mac */
- $uuid = md5(get_interface_mac(get_real_interface("wan")));
- /* put uuid in correct format 8-4-4-4-12 */
- return substr($uuid,0,8).'-'.substr($uuid,9,4).'-'.substr($uuid,13,4).'-'.substr($uuid,17,4).'-'.substr($uuid,21,12);
-}
-
-function miniupnpd_configure_do($verbose = false)
-{
- global $config;
-
- miniupnpd_stop();
-
- if (!miniupnpd_enabled()) {
- return;
- }
-
- if ($verbose) {
- echo 'Starting UPnP service...';
- flush();
- }
-
- $upnp_config = $config['installedpackages']['miniupnpd']['config'][0];
-
- $ext_ifname = get_real_interface($upnp_config['ext_iface']);
- if ($ext_ifname == $upnp_config['ext_iface']) {
- if ($verbose) {
- echo "failed.\n";
- }
- return;
- }
-
- $config_text = "ext_ifname={$ext_ifname}\n";
- $config_text .= "port=2189\n";
-
- $ifaces_active = '';
-
- /* since config is written before this file invoked we don't need to read post data */
- if (!empty($upnp_config['iface_array'])) {
- foreach(explode(',', $upnp_config['iface_array']) as $iface) {
- /* Setting the same internal and external interface is not allowed. */
- if ($iface == $upnp_config['ext_iface']) {
- continue;
- }
- $if = get_real_interface($iface);
- /* above function returns iface if fail */
- if ($if!=$iface) {
- $addr = find_interface_ip($if);
- $bits = find_interface_subnet($if);
- /* check that the interface has an ip address before adding parameters */
- if (is_ipaddr($addr)) {
- $config_text .= "listening_ip={$if}\n";
- if (!$ifaces_active) {
- $webgui_ip = $addr;
- $ifaces_active = $iface;
- } else {
- $ifaces_active .= ", {$iface}";
- }
- } else {
- log_error("miniupnpd: Interface {$iface} has no ip address, ignoring");
- }
- } else {
- log_error("miniupnpd: Could not resolve real interface for {$iface}");
- }
- }
-
- if (!empty($ifaces_active)) {
- /* override wan ip address, common for carp, etc */
- if (!empty($upnp_config['overridewanip'])) {
- $config_text .= "ext_ip={$upnp_config['overridewanip']}\n";
- }
- /* set upload and download bitrates */
- if (!empty($upnp_config['download']) && !empty($upnp_config['upload'])) {
- $download = $upnp_config['download']*1000;
- $upload = $upnp_config['upload']*1000;
- $config_text .= "bitrate_down={$download}\n";
- $config_text .= "bitrate_up={$upload}\n";
- }
-
- $config_text .= "secure_mode=yes\n";
-
- /* enable logging of packets handled by miniupnpd rules */
- if (!empty($upnp_config['logpackets'])) {
- $config_text .= "packet_log=yes\n";
- }
-
- /* enable system uptime instead of miniupnpd uptime */
- if (!empty($upnp_config['sysuptime'])) {
- $config_text .= "system_uptime=yes\n";
- }
-
- /* set webgui url */
- if (!empty($config['system']['webgui']['protocol'])) {
- $config_text .= "presentation_url={$config['system']['webgui']['protocol']}://{$webgui_ip}";
- if (!empty($config['system']['webgui']['port'])) {
- $config_text .= ":{$config['system']['webgui']['port']}";
- }
- $config_text .= "/\n";
- }
-
- /* set uuid and serial */
- $config_text .= "uuid=".miniupnpd_uuid()."\n";
- $config_text .= "serial=".strtoupper(substr(miniupnpd_uuid(),0,8))."\n";
-
- /* set model number */
- $config_text .= "model_number=".file_get_contents("/usr/local/opnsense/version/opnsense")."\n";
-
- /* upnp access restrictions */
- for ($i=1; $i<=4; $i++) {
- if ($upnp_config["permuser{$i}"]) {
- $config_text .= "{$upnp_config["permuser{$i}"]}\n";
- }
- }
-
- if (!empty($upnp_config['permdefault'])) {
- $config_text .= "deny 0-65535 0.0.0.0/0 0-65535\n";
- }
-
- /* Allow UPnP or NAT-PMP as requested */
- $config_text .= "enable_upnp=" . ( $upnp_config['enable_upnp'] ? "yes\n" : "no\n" );
- $config_text .= "enable_natpmp=" . ( $upnp_config['enable_natpmp'] ? "yes\n" : "no\n" );
-
- /* write out the configuration */
- file_put_contents('/var/etc/miniupnpd.conf', $config_text);
-
- log_error("miniupnpd: Starting service on interface: {$ifaces_active}");
- miniupnpd_start();
- }
- }
-
- if ($verbose) {
- echo "done.\n";
- }
-}
diff --git a/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml b/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml
deleted file mode 100644
index cc93dde4a..000000000
--- a/src/opnsense/mvc/app/models/OPNsense/UPnP/ACL/ACL.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
| =gettext("Port");?> | -=gettext("Protocol");?> | -=gettext("Internal IP");?> | -=gettext("Int. Port");?> | -=gettext("Description");?> | -
| =$rdr_port;?> | -=$rdr_proto;?> | -=$rdr_ip;?> | -=$rdr_iport;?> | -=$rdr_label;?> | -
| - - | -||||