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:
parent
8d5452c810
commit
c9a0334afe
7 changed files with 121 additions and 12 deletions
15
luci-app-mlvpn/Makefile
Normal file
15
luci-app-mlvpn/Makefile
Normal 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
|
6
luci-app-mlvpn/luasrc/controller/mlvpn.lua
Normal file
6
luci-app-mlvpn/luasrc/controller/mlvpn.lua
Normal 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
|
77
luci-app-mlvpn/luasrc/model/cbi/mlvpn.lua
Normal file
77
luci-app-mlvpn/luasrc/model/cbi/mlvpn.lua
Normal 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
|
10
luci-app-mlvpn/luasrc/view/mlvpn/cbi-select-add.htm
Normal file
10
luci-app-mlvpn/luasrc/view/mlvpn/cbi-select-add.htm
Normal 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>
|
|
@ -5,6 +5,6 @@ config mlvpn 'general'
|
|||
option reorder_buffer_size '64'
|
||||
option loss_tolerence '50'
|
||||
option mode 'client'
|
||||
option remotehost '128.128.128.128'
|
||||
option firstremoteport '65201'
|
||||
option host '128.128.128.128'
|
||||
option firstport '65201'
|
||||
option interface_name 'mlvpn0'
|
||||
|
|
|
@ -12,28 +12,28 @@ validate_section() {
|
|||
'reorder_buffer_size:uinteger:64' \
|
||||
'loss_tolerence:uinteger:30' \
|
||||
'interface_name:string:mlvpn0' \
|
||||
'remotehost:host' \
|
||||
'firstremoteport:port:65201'
|
||||
'host:host' \
|
||||
'firstport:port'
|
||||
}
|
||||
|
||||
interface_settings() {
|
||||
local mode
|
||||
interface_multipath_settings() {
|
||||
local mode port
|
||||
local config="$1"
|
||||
id=$(($id+1))
|
||||
config_get mode "$config" multipath "off"
|
||||
[ "$mode" = "off" ] && return 1
|
||||
count=$(($count+1))
|
||||
port=$((firstremoteport+count))
|
||||
port=$((firstport+count))
|
||||
cat >> /tmp/etc/${interface_name}.conf <<-EOF
|
||||
|
||||
[${id}]
|
||||
remotehost = "${remotehost}"
|
||||
remotehost = "${host}"
|
||||
remoteport = "${port}"
|
||||
EOF
|
||||
}
|
||||
|
||||
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" || {
|
||||
_err "validation failed"
|
||||
return 1
|
||||
|
@ -55,9 +55,10 @@ start_service() {
|
|||
loss_tolerence = ${loss_tolerence}
|
||||
password = "${password}"
|
||||
EOF
|
||||
|
||||
local count=0 id=0
|
||||
config_load network
|
||||
config_foreach interface_settings interface
|
||||
config_foreach interface_multipath_settings interface
|
||||
|
||||
chmod 0600 "/tmp/etc/${interface_name}.conf"
|
||||
procd_open_instance
|
||||
|
|
|
@ -21,9 +21,9 @@ if [ "$(uci -q get network.omrvpn)" = "" ] && [ "$(uci -q get network.mlvpn)" =
|
|||
EOF
|
||||
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
|
||||
add_list firewall.@zone[2].network='mlvpn'
|
||||
add_list firewall.zone_vpn.network='mlvpn'
|
||||
EOF
|
||||
fi
|
||||
rm -f /tmp/luci-indexcache
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue