mirror of
https://github.com/opnsense/plugins.git
synced 2026-02-20 00:10:36 -05:00
add enablecarp to softether (#2172)
This commit is contained in:
parent
fb050b2849
commit
161ff20d69
5 changed files with 112 additions and 0 deletions
|
|
@ -32,6 +32,19 @@ function softether_enabled()
|
|||
return (string)$model->enabled == '1';
|
||||
}
|
||||
|
||||
function softether_carp_enabled()
|
||||
{
|
||||
$model = new \OPNsense\Softether\General();
|
||||
return (string)$model->enabled == '1' &&
|
||||
(string)$model->enablecarp == '1';
|
||||
}
|
||||
|
||||
function softether_carp_interfaces()
|
||||
{
|
||||
$model = new \OPNsense\Softether\General();
|
||||
return (string)$model->carpinterfaces;
|
||||
}
|
||||
|
||||
function softether_services()
|
||||
{
|
||||
$services = array();
|
||||
|
|
|
|||
70
security/softether/src/etc/rc.syshook.d/carp/50-softether
Executable file
70
security/softether/src/etc/rc.syshook.d/carp/50-softether
Executable file
|
|
@ -0,0 +1,70 @@
|
|||
#!/usr/local/bin/php
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 Franco Fichtner <franco@opnsense.org>
|
||||
* Copyright (C) 2004 Scott Ullrich <sullrich@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
require_once('config.inc');
|
||||
require_once('util.inc');
|
||||
require_once('interfaces.inc');
|
||||
require_once('plugins.inc.d/softether.inc');
|
||||
|
||||
if (softether_carp_enabled()) {
|
||||
// XXX: carp enable/disable mode
|
||||
$subsystem = !empty($argv[1]) ? $argv[1] : '';
|
||||
$type = !empty($argv[2]) ? $argv[2] : '';
|
||||
|
||||
if ($type != 'MASTER' && $type != 'BACKUP') {
|
||||
log_error("Carp '$type' event unknown from source '{$subsystem}'");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!strstr($subsystem, '@')) {
|
||||
log_error("Carp '$type' event triggered from wrong source '{$subsystem}'");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
list ($vhid, $iface) = explode('@', $subsystem);
|
||||
$friendly = convert_real_interface_to_friendly_interface_name($iface);
|
||||
|
||||
if (!(strpos(softether_carp_interfaces(),$friendly) !== false)) {
|
||||
exit(0);
|
||||
}
|
||||
|
||||
switch ($type) {
|
||||
case 'MASTER':
|
||||
touch('/var/run/softether/CARP_MASTER');
|
||||
shell_exec('/usr/local/etc/rc.d/softether_server start');
|
||||
break;
|
||||
case 'BACKUP':
|
||||
if (file_exists('/var/run/softether/CARP_MASTER')) {
|
||||
unlink('/var/run/softether/CARP_MASTER');
|
||||
}
|
||||
shell_exec('/usr/local/etc/rc.d/softether_server stop');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -5,4 +5,17 @@
|
|||
<type>checkbox</type>
|
||||
<help>This will activate SoftEther vpnserver process.</help>
|
||||
</field>
|
||||
<field>
|
||||
<id>general.enablecarp</id>
|
||||
<label>Enable CARP Failover</label>
|
||||
<type>checkbox</type>
|
||||
<help>This will activate the vpnserver service only on the master device.</help>
|
||||
</field>
|
||||
<field>
|
||||
<id>general.carpinterfaces</id>
|
||||
<label>Monitored CARP interfaces</label>
|
||||
<type>select_multiple</type>
|
||||
<help><![CDATA[Select the interfaces, whose CARP transitions should be monitored.]]></help>
|
||||
<hint>Type or select interface.</hint>
|
||||
</field>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -7,5 +7,18 @@
|
|||
<default>0</default>
|
||||
<Required>Y</Required>
|
||||
</enabled>
|
||||
<enablecarp type="BooleanField">
|
||||
<default>0</default>
|
||||
<Required>Y</Required>
|
||||
</enablecarp>
|
||||
<carpinterfaces type="InterfaceField">
|
||||
<Required>N</Required>
|
||||
<multiple>Y</multiple>
|
||||
<default></default>
|
||||
<AllowDynamic>Y</AllowDynamic>
|
||||
<filters>
|
||||
<enable>/^(?!0).*$/</enable>
|
||||
</filters>
|
||||
</carpinterfaces>
|
||||
</items>
|
||||
</model>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
{% if helpers.exists('OPNsense.softether.general.enabled') and OPNsense.softether.general.enabled == '1' %}
|
||||
softether_server_var_script="/usr/local/opnsense/scripts/OPNsense/Softether/setup.sh"
|
||||
softether_server_enable="YES"
|
||||
{% if helpers.exists('OPNsense.softether.general.enablecarp') and OPNsense.softether.general.enablecarp == '1' %}
|
||||
required_files="/var/run/softether/CARP_MASTER"
|
||||
{% endif %}
|
||||
{% else %}
|
||||
softether_server_enable="NO"
|
||||
{% endif %}
|
||||
|
|
|
|||
Loading…
Reference in a new issue