diff options
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/services.inc | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/etc/inc/services.inc b/etc/inc/services.inc index 0ddeb50..5b2158f 100644 --- a/etc/inc/services.inc +++ b/etc/inc/services.inc @@ -1272,11 +1272,38 @@ function configure_cron() { conf_mount_ro(); } +function upnp_action ($action) { + switch($action) { + case "start": + if(file_exists('/var/etc/miniupnpd.conf')) + mwexec_bg('/usr/local/sbin/miniupnpd -f /var/etc/miniupnpd.conf'); + break; + case "stop": + while((int)exec("pgrep miniupnpd | wc -l") > 0) + mwexec('killall miniupnpd 2>/dev/null'); + mwexec('/sbin/pfctl -aminiupnpd -Fr 2>&1 >/dev/null'); + mwexec('/sbin/pfctl -aminiupnpd -Fn 2>&1 >/dev/null'); + break; + case "restart": + upnp_action('stop'); + upnp_action('start'); + break; + } +} + function upnp_start() { - global $config; - if($config['installedpackages']['miniupnpd']['config'][0]["enable"]) { - mwexec_bg("/usr/local/sbin/miniupnpd -f /var/etc/miniupnpd.conf"); + global $config, $g; + if($config['installedpackages']['miniupnpd']['config'][0]['enable']) { + if($g['booting']) { + echo "Starting UPnP service... "; + include('/usr/local/pkg/miniupnpd.inc'); + sync_package_miniupnpd(); + echo "done.\n"; + } + else { + upnp_action('start'); + } } } -?>
\ No newline at end of file +?> |