1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

Add MLVPN interface

This commit is contained in:
Ycarus 2018-06-07 16:52:27 +02:00
parent 8d5452c810
commit c9a0334afe
7 changed files with 121 additions and 12 deletions

15
luci-app-mlvpn/Makefile Normal file
View file

@ -0,0 +1,15 @@
#
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for MLVPN
LUCI_DEPENDS:=+mlvpn
PKG_LICENSE:=GPLv3
include ../luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -0,0 +1,6 @@
module("luci.controller.mlvpn", package.seeall)
function index()
--entry({"admin", "openmptcprouter", "mlvpn"}, cbi("mlvpn"), _("MLVPN"))
entry({"admin", "services", "mlvpn"}, cbi("mlvpn"), _("MLVPN"))
end

View file

@ -0,0 +1,77 @@
local net = require "luci.model.network".init()
local sys = require "luci.sys"
local ifaces = sys.net:devices()
local m, s, o
m = Map("mlvpn", translate("MLVPN"))
s = m:section(TypedSection, "mlvpn", translate("Settings"))
s.anonymous = true
s.addremove = false
o = s:option(Flag, "enable", translate("Enable"))
o.rmempty = false
o = s:option(Value, "timeout", translate("Timeout (s)"))
o.placeholder = "30"
o.default = "30"
o.datatype = "uinteger"
o.rmempty = false
o = s:option(Value, "reorder_buffer_size", translate("Reorder buffer size"))
o.placeholder = "64"
o.default = "64"
o.datatype = "uinteger"
o.rmempty = false
o = s:option(Value, "loss_tolerance", translate("Loss tolerance"))
o.placeholder = "50"
o.default = "50"
o.datatype = "uinteger"
o.rmempty = false
o = s:option(Value, "host", translate("Remote host"))
o.placeholder = "128.128.128.128"
o.default = "128.128.128.128"
o.datatype = "host"
o.rmempty = false
o = s:option(Value, "firstport", translate("First remote port"),translate("Interface will increase port used beginning with this"))
o.default = "65201"
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "password", translate("Password"))
o.password = true
o.rmempty = false
o = s:option(Value, "interface_name", translate("Interface name"))
o.placeholder = "mlvpn0"
o.default = "mlvpn0"
o.rmempty = false
--o = s:option(Value, "mode", translate("Mode"))
--o:value("client")
--o:value("server")
--o.default = "client"
--o.rmempty = false
--s = m:section(TypedSection, "interface", translate("Interfaces"))
--s.template_addremove = "mlvpn/cbi-select-add"
--s.addremove = true
--s.add_select_options = { }
--s.add_select_options[''] = ''
--for _, iface in ipairs(ifaces) do
-- if not (iface == "lo" or iface:match("^ifb.*")) then
-- s.add_select_options[iface] = iface
-- end
--end
--o = s:option(Value, "port", translate("Remote/Bind port"))
--o.placeholder = "65201"
--o.default = "65201"
--o.datatype = "port"
return m

View file

@ -0,0 +1,10 @@
<div class="cbi-section-create">
<% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
<select class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
<%- for k, v in luci.util.kspairs(self.add_select_options) do %>
<option value="<%=k%>"><%=luci.util.pcdata(v)%></option>
<% end -%>
</select>
<input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" title="<%:Add%>" />
<% if self.invalid_cts then %><br /><%:Invalid%></div><% end %>
</div>

View file

@ -5,6 +5,6 @@ config mlvpn 'general'
option reorder_buffer_size '64' option reorder_buffer_size '64'
option loss_tolerence '50' option loss_tolerence '50'
option mode 'client' option mode 'client'
option remotehost '128.128.128.128' option host '128.128.128.128'
option firstremoteport '65201' option firstport '65201'
option interface_name 'mlvpn0' option interface_name 'mlvpn0'

View file

@ -12,28 +12,28 @@ validate_section() {
'reorder_buffer_size:uinteger:64' \ 'reorder_buffer_size:uinteger:64' \
'loss_tolerence:uinteger:30' \ 'loss_tolerence:uinteger:30' \
'interface_name:string:mlvpn0' \ 'interface_name:string:mlvpn0' \
'remotehost:host' \ 'host:host' \
'firstremoteport:port:65201' 'firstport:port'
} }
interface_settings() { interface_multipath_settings() {
local mode local mode port
local config="$1" local config="$1"
id=$(($id+1)) id=$(($id+1))
config_get mode "$config" multipath "off" config_get mode "$config" multipath "off"
[ "$mode" = "off" ] && return 1 [ "$mode" = "off" ] && return 1
count=$(($count+1)) count=$(($count+1))
port=$((firstremoteport+count)) port=$((firstport+count))
cat >> /tmp/etc/${interface_name}.conf <<-EOF cat >> /tmp/etc/${interface_name}.conf <<-EOF
[${id}] [${id}]
remotehost = "${remotehost}" remotehost = "${host}"
remoteport = "${port}" remoteport = "${port}"
EOF EOF
} }
start_service() { start_service() {
local enable timeout mode password reorder_buffer_size interface_name remotehost firstremoteport loss_tolerence local enable timeout mode password reorder_buffer_size interface_name host firstport loss_tolerence
validate_section "general" || { validate_section "general" || {
_err "validation failed" _err "validation failed"
return 1 return 1
@ -55,9 +55,10 @@ start_service() {
loss_tolerence = ${loss_tolerence} loss_tolerence = ${loss_tolerence}
password = "${password}" password = "${password}"
EOF EOF
local count=0 id=0 local count=0 id=0
config_load network config_load network
config_foreach interface_settings interface config_foreach interface_multipath_settings interface
chmod 0600 "/tmp/etc/${interface_name}.conf" chmod 0600 "/tmp/etc/${interface_name}.conf"
procd_open_instance procd_open_instance

View file

@ -21,9 +21,9 @@ if [ "$(uci -q get network.omrvpn)" = "" ] && [ "$(uci -q get network.mlvpn)" =
EOF EOF
fi fi
if [ "$(uci get firewall.@zone[2].network | grep omrvpn)" = "" ] && [ "$(uci get firewall.@zone[2].network | grep mlvpn)" = "" ]; then if [ "$(uci get firewall.zone_vpn.network | grep omrvpn)" = "" ] && [ "$(uci get firewall.zone_vpn.network | grep mlvpn)" = "" ]; then
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
add_list firewall.@zone[2].network='mlvpn' add_list firewall.zone_vpn.network='mlvpn'
EOF EOF
fi fi
rm -f /tmp/luci-indexcache rm -f /tmp/luci-indexcache