adapt luci configuration to new n2n version 2.8.0; add static route support (#5576)

This commit is contained in:
小甲哥 2020-10-03 00:31:46 +08:00 committed by GitHub
parent b6a9a388b8
commit 0ecfa0d4fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 110 additions and 23 deletions

View File

@ -9,8 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=n2n_v2 VPN Configuration module
LUCI_DEPENDS:=+n2n-edge +n2n-supernode
LUCI_PKGARCH:=all
PKG_VERSION:=1.0
PKG_RELEASE:=4
PKG_VERSION:=2.8.0
PKG_RELEASE:=1
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -1,13 +1,48 @@
--[[
--N2N VPN(V2) configuration page. Made by 981213
--
]]--
]] --
local fs = require "nixio.fs"
m = Map("n2n_v2", translate("N2N v2 VPN"),
translatef("n2n is a layer-two peer-to-peer virtual private network (VPN) which allows users to exploit features typical of P2P applications at network instead of application level."))
function get_mask(v)
v:value("1 ", "128.0.0.0(1)")
v:value("2 ", "192.0.0.0(2)")
v:value("3 ", "224.0.0.0(3)")
v:value("4 ", "240.0.0.0(4)")
v:value("5 ", "248.0.0.0(5)")
v:value("6 ", "252.0.0.0(6)")
v:value("7 ", "254.0.0.0(7)")
v:value("8 ", "255.0.0.0(8)")
v:value("9 ", "255.128.0.0(9)")
v:value("10", "255.192.0.0(10)")
v:value("11", "255.224.0.0(11)")
v:value("12", "255.240.0.0(12)")
v:value("13", "255.248.0.0(13)")
v:value("14", "255.252.0.0(14)")
v:value("15", "255.254.0.0(15)")
v:value("16", "255.255.0.0(16)")
v:value("17", "255.255.128.0(17)")
v:value("18", "255.255.192.0(18)")
v:value("19", "255.255.224.0(19)")
v:value("20", "255.255.240.0(20)")
v:value("21", "255.255.248.0(21)")
v:value("22", "255.255.252.0(22)")
v:value("23", "255.255.254.0(23)")
v:value("24", "255.255.255.0(24)")
v:value("25", "255.255.255.128(25)")
v:value("26", "255.255.255.192(26)")
v:value("27", "255.255.255.224(27)")
v:value("28", "255.255.255.240(28)")
v:value("29", "255.255.255.248(29)")
v:value("30", "255.255.255.252(30)")
v:value("31", "255.255.255.254(31)")
v:value("32", "255.255.255.255(32)")
end
m = Map("n2n_v2", translate("N2N v2 VPN"), translatef(
"n2n is a layer-two peer-to-peer virtual private network (VPN) which allows users to exploit features typical of P2P applications at network instead of application level."))
-- Basic config
m:section(SimpleSection).template = "n2n_v2/status"
s = m:section(TypedSection, "edge", translate("N2N Edge Settings"))
@ -26,19 +61,24 @@ mode:value("static")
ipaddr = s:option(Value, "ipaddr", translate("Interface IP address"))
ipaddr.optional = false
ipaddr.datatype = "ip4addr"
ipaddr:depends("mode", "static")
netmask = s:option(Value, "netmask", translate("Interface netmask"))
netmask.optional = false
prefix = s:option(ListValue, "prefix", translate("Interface netmask"))
get_mask(prefix)
prefix.optional = false
prefix:depends("mode", "static")
mtu = s:option(Value, "mtu", translate("MTU"))
mtu.datatype = "range(1,1500)"
mtu.optional = false
supernode = s:option(Value, "supernode", translate("Supernode IP address"))
supernode = s:option(Value, "supernode", translate("Supernode Host"))
supernode.datatype = "host"
supernode.optional = false
port = s:option(Value, "port", translate("Supernode Port"))
port.datatype = "range(0,65535)"
port.datatype = "port"
port.optional = false
community = s:option(Value, "community", translate("N2N Community name"))
@ -57,9 +97,32 @@ switch = s2:option(Flag, "enabled", translate("Enable"))
switch.rmempty = false
port = s2:option(Value, "port", translate("Port"))
port.datatype = "range(0,65535)"
port.datatype = "port"
port.optional = false
-- Static route
s = m:section(TypedSection, "route", translate("N2N routes"),
translate("Static route for n2n interface"))
s.anonymous = true
s.addremove = true
s.template = "cbi/tblsection"
---- IP address
o = s:option(Value, "ip", translate("IP"))
o.optional = false
o.datatype = "ip4addr"
o.rmempty = false
---- IP mask
o = s:option(ListValue, "mask", translate("Mask"))
o.optional = false
get_mask(o)
o.default = "24"
---- Gateway
o = s:option(Value, "gw", translate("Gateway"))
o.optional = false
o.datatype = "ip4addr"
o.rmempty = false
return m

View File

@ -32,8 +32,8 @@ msgstr "接口IP地址"
msgid "Interface netmask"
msgstr "接口子网掩码"
msgid "Supernode IP address"
msgstr "Supernode节点IP地址"
msgid "Supernode Host"
msgstr "Supernode节点地址"
msgid "N2N Community name"
msgstr "N2N网络组名称"
@ -58,3 +58,18 @@ msgstr "<b style='color:green;'>N2N v2 VPN 运行中</b>"
msgid "<b style='color:red;'>N2N v2 VPN is not running.</b>"
msgstr "<b style='color:red;'>N2N v2 VPN 未运行</b>"
msgid "N2N routes"
msgstr "路由表"
msgid "Static route for n2n interface"
msgstr "配置静态路由"
msgid "IP"
msgstr "IP"
msgid "Mask"
msgstr "掩码"
msgid "Gateway"
msgstr "网关"

View File

@ -8,7 +8,7 @@ PKG_NAME:=n2n
PKG_SOURCE_URL:=https://github.com/ntop/n2n.git
PKG_SOURCE_VERSION:=99e56e9f3c34c49eeb297971d41150b433489120
PKG_VERSION:=2.8.0_git-$(PKG_SOURCE_VERSION)
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)

View File

@ -3,7 +3,8 @@ config edge
option tunname 'n2n0'
option mode 'static'
option ipaddr '10.0.0.100'
option netmask '255.255.255.0'
option prefix '24'
option mtu '1290'
option supernode '1.2.3.4'
option port '1234'
option community 'example'

View File

@ -15,17 +15,18 @@ start_instance() {
config_get tunname "$cfg" 'tunname'
config_get mode "$cfg" 'mode'
config_get ipaddr "$cfg" 'ipaddr'
config_get netmask "$cfg" 'netmask'
config_get prefix "$cfg" 'prefix'
config_get mtu "$cfg" 'mtu'
config_get supernode "$cfg" 'supernode'
config_get port "$cfg" 'port'
config_get community "$cfg" 'community'
config_get key "$cfg" 'key'
config_get_bool route "$cfg" 'route' '0'
address="$ipaddr/$prefix"
[ "$route" = "1" ] && args='-r'
[ "$mode" = 'dhcp' ] && ipaddr='0.0.0.0'
[ "$mode" = 'dhcp' ] && address='0.0.0.0'
[ "-$mtu" != "-" ] && mtu="-M $mtu"
/usr/bin/edge -d $tunname -a ${mode}:${ipaddr} -c $community $([ -n "$key" ] && echo -k $key) -s ${netmask} -l ${supernode}:${port} $args $mtu
/usr/bin/edge -u 0 -g 0 -d $tunname -a ${mode}:${address} -c $community $([ -n "$key" ] && echo -k $key) -l ${supernode}:${port} $args $mtu
;;
supernode)
config_get_bool enabled "$cfg" 'enabled' '0'
@ -33,6 +34,12 @@ start_instance() {
config_get port "$cfg" port
/usr/bin/supernode -l $port &
;;
route)
config_get ip "$cfg" 'ip'
config_get mask "$cfg" 'mask'
config_get gw "$cfg" 'gw'
route add -net $ip/$mask gw $gw
;;
esac
}
@ -55,6 +62,7 @@ start() {
config_load 'n2n_v2'
config_foreach start_instance 'edge'
config_foreach start_instance 'supernode'
config_foreach start_instance 'route'
}
stop() {