diff options
-rw-r--r-- | etc/inc/openvpn.inc | 31 | ||||
-rwxr-xr-x | usr/local/www/status_services.php | 11 |
2 files changed, 35 insertions, 7 deletions
diff --git a/etc/inc/openvpn.inc b/etc/inc/openvpn.inc index 0f3febc..0e6bc28 100644 --- a/etc/inc/openvpn.inc +++ b/etc/inc/openvpn.inc @@ -1270,4 +1270,35 @@ function openvpn_gen_route_ipv6($network) { return "route-ipv6 ${ipv6}/${prefix}"; } +function openvpn_get_settings($mode, $vpnid) { + global $config; + + if (is_array($config['openvpn']['openvpn-server'])) { + foreach ($config['openvpn']['openvpn-server'] as $settings) { + if (isset($settings['disable'])) + continue; + + if ($vpnid != 0 && $vpnid == $settings['vpnid']) + return $settings; + } + } + + if (is_array($config['openvpn']['openvpn-client'])) { + foreach ($config['openvpn']['openvpn-client'] as $settings) { + if (isset($settings['disable'])) + continue; + + if ($vpnid != 0 && $vpnid == $settings['vpnid']) + return $settings; + } + } + + return array(); +} + +function openvpn_restart_by_vpnid($mode, $vpnid) { + $settings = openvpn_get_settings($mode, $vpnid); + openvpn_restart($mode, $settings); +} + ?> diff --git a/usr/local/www/status_services.php b/usr/local/www/status_services.php index 126a67a..608804f 100755 --- a/usr/local/www/status_services.php +++ b/usr/local/www/status_services.php @@ -40,6 +40,7 @@ require_once("guiconfig.inc"); require_once("captiveportal.inc"); require_once("service-utils.inc"); +require_once("openvpn.inc"); require_once("ipsec.inc"); require_once("vpn.inc"); require_once("vslb.inc"); @@ -83,12 +84,8 @@ if($_GET['mode'] == "restartservice" and !empty($_GET['service'])) { if ($vpnmode == "server" || $vpnmode == "client") { $id = $_GET['id']; $configfile = "{$g['varetc_path']}/openvpn/{$vpnmode}{$id}.conf"; - $pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid"; - if (file_exists($configfile)) { - killbypid($pidfile); - sleep(1); - mwexec_bg("/usr/local/sbin/openvpn --config {$configfile}"); - } + if (file_exists($configfile)) + openvpn_restart_by_vpnid($vpnmode, $id); } break; case 'relayd': @@ -139,7 +136,7 @@ if($_GET['mode'] == "startservice" and !empty($_GET['service'])) { $id = $_GET['id']; $configfile = "{$g['varetc_path']}/openvpn/{$vpnmode}{$id}.conf"; if (file_exists($configfile)) - mwexec_bg("/usr/local/sbin/openvpn --config {$configfile}"); + openvpn_restart_by_vpnid($vpnmode, $id); } break; case 'relayd': |