diff options
-rw-r--r-- | usr/local/pkg/miniupnpd.inc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/usr/local/pkg/miniupnpd.inc b/usr/local/pkg/miniupnpd.inc index c13cc30..518cd9e 100644 --- a/usr/local/pkg/miniupnpd.inc +++ b/usr/local/pkg/miniupnpd.inc @@ -232,6 +232,35 @@ if(upnp_config('permdefault')) $configtext .= "deny 0-65535 0.0.0.0/0 0-65535\n"; + /* generate rc file start and stop */ + $stop = <<<EOD +if [ `pgrep miniupnpd | wc -l` != 0 ]; then + /usr/bin/killall miniupnpd + while [ `pgrep miniupnpd | wc -l` != 0 ]; do + sleep 1 + done + fi + # Clear existing rules and rdr entries + if [ `pfctl -aminiupnpd -sr | wc -l` != 0 ]; then + /sbin/pfctl -aminiupnpd -Fr 2>&1 >/dev/null + fi + if [ `pfctl -aminiupnpd -sn | wc -l` != 0 ]; then + /sbin/pfctl -aminiupnpd -Fn 2>&1 >/dev/null + fi +EOD; + $start = $stop."\n\t/usr/local/sbin/miniupnpd -f ".UPNP_CONFIG; + + /* write out the configuration */ + conf_mount_rw(); + upnp_write_config(UPNP_CONFIG,$configtext); + write_rcfile(array( + 'file' => 'miniupnpd.sh', + 'start' => $start, + 'stop' => $stop + ) + ); + conf_mount_ro(); + /* if miniupnpd not running start it */ if(!upnp_running()) { upnp_notice("Starting service on interface: {$ifaces_active}"); |