diff --git a/src/etc/inc/openvpn.inc b/src/etc/inc/openvpn.inc index 824433a26..df1d17c91 100644 --- a/src/etc/inc/openvpn.inc +++ b/src/etc/inc/openvpn.inc @@ -82,6 +82,7 @@ function openvpn_create_key() function openvpn_vpnid_used($vpnid) { global $config; + if (isset($config['openvpn']['openvpn-server'])) { foreach ($config['openvpn']['openvpn-server'] as &$settings) { if ($vpnid == $settings['vpnid']) { @@ -99,7 +100,7 @@ function openvpn_vpnid_used($vpnid) } return false; - } +} function openvpn_vpnid_next() { diff --git a/src/etc/inc/plugins.inc.d/if_openvpn.inc b/src/etc/inc/plugins.inc.d/if_openvpn.inc index 3c4aa6ca3..4cc9a3125 100644 --- a/src/etc/inc/plugins.inc.d/if_openvpn.inc +++ b/src/etc/inc/plugins.inc.d/if_openvpn.inc @@ -73,15 +73,21 @@ function if_openvpn_interfaces() $interfaces = array(); - if ((isset($config['openvpn']['openvpn-server']) && count($config['openvpn']['openvpn-server'])) || - (isset($config['openvpn']['openvpn-client']) && count($config['openvpn']['openvpn-client']))) { - $oic = array("enable" => true); - $oic['if'] = "openvpn"; - $oic['descr'] = 'OpenVPN'; - $oic['type'] = "none"; - $oic['virtual'] = true; - $oic['networks'] = array(); - $interfaces['openvpn'] = $oic; + foreach (array('server', 'client') as $mode) { + if (isset($config['openvpn']["openvpn-{$mode}"])) { + foreach ($config['openvpn']["openvpn-{$mode}"] as &$settings) { + if (!isset($settings['disable'])) { + $oic = array('enable' => true); + $oic['if'] = 'openvpn'; + $oic['descr'] = 'OpenVPN'; + $oic['type'] = 'none'; + $oic['virtual'] = true; + $oic['networks'] = array(); + $interfaces['openvpn'] = $oic; + break 2; + } + } + } } return $interfaces;