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_TITLE:=n2n_v2 VPN Configuration module
LUCI_DEPENDS:=+n2n-edge +n2n-supernode LUCI_DEPENDS:=+n2n-edge +n2n-supernode
LUCI_PKGARCH:=all LUCI_PKGARCH:=all
PKG_VERSION:=1.0 PKG_VERSION:=2.8.0
PKG_RELEASE:=4 PKG_RELEASE:=1
include $(TOPDIR)/feeds/luci/luci.mk include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -1,13 +1,48 @@
--[[ --[[
--N2N VPN(V2) configuration page. Made by 981213 --N2N VPN(V2) configuration page. Made by 981213
-- --
]]-- ]] --
local fs = require "nixio.fs" local fs = require "nixio.fs"
m = Map("n2n_v2", translate("N2N v2 VPN"), function get_mask(v)
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.")) 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" m:section(SimpleSection).template = "n2n_v2/status"
s = m:section(TypedSection, "edge", translate("N2N Edge Settings")) 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 = s:option(Value, "ipaddr", translate("Interface IP address"))
ipaddr.optional = false ipaddr.optional = false
ipaddr.datatype = "ip4addr"
ipaddr:depends("mode", "static")
netmask = s:option(Value, "netmask", translate("Interface netmask")) prefix = s:option(ListValue, "prefix", translate("Interface netmask"))
netmask.optional = false get_mask(prefix)
prefix.optional = false
prefix:depends("mode", "static")
mtu = s:option(Value, "mtu", translate("MTU")) mtu = s:option(Value, "mtu", translate("MTU"))
mtu.datatype = "range(1,1500)" mtu.datatype = "range(1,1500)"
mtu.optional = false 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 supernode.optional = false
port = s:option(Value, "port", translate("Supernode Port")) port = s:option(Value, "port", translate("Supernode Port"))
port.datatype = "range(0,65535)" port.datatype = "port"
port.optional = false port.optional = false
community = s:option(Value, "community", translate("N2N Community name")) community = s:option(Value, "community", translate("N2N Community name"))
@ -57,9 +97,32 @@ switch = s2:option(Flag, "enabled", translate("Enable"))
switch.rmempty = false switch.rmempty = false
port = s2:option(Value, "port", translate("Port")) port = s2:option(Value, "port", translate("Port"))
port.datatype = "range(0,65535)" port.datatype = "port"
port.optional = false 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 return m

View File

@ -32,8 +32,8 @@ msgstr "接口IP地址"
msgid "Interface netmask" msgid "Interface netmask"
msgstr "接口子网掩码" msgstr "接口子网掩码"
msgid "Supernode IP address" msgid "Supernode Host"
msgstr "Supernode节点IP地址" msgstr "Supernode节点地址"
msgid "N2N Community name" msgid "N2N Community name"
msgstr "N2N网络组名称" 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>" msgid "<b style='color:red;'>N2N v2 VPN is not running.</b>"
msgstr "<b style='color:red;'>N2N v2 VPN 未运行</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_URL:=https://github.com/ntop/n2n.git
PKG_SOURCE_VERSION:=99e56e9f3c34c49eeb297971d41150b433489120 PKG_SOURCE_VERSION:=99e56e9f3c34c49eeb297971d41150b433489120
PKG_VERSION:=2.8.0_git-$(PKG_SOURCE_VERSION) 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:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)

View File

@ -3,7 +3,8 @@ config edge
option tunname 'n2n0' option tunname 'n2n0'
option mode 'static' option mode 'static'
option ipaddr '10.0.0.100' 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 supernode '1.2.3.4'
option port '1234' option port '1234'
option community 'example' option community 'example'

View File

@ -15,17 +15,18 @@ start_instance() {
config_get tunname "$cfg" 'tunname' config_get tunname "$cfg" 'tunname'
config_get mode "$cfg" 'mode' config_get mode "$cfg" 'mode'
config_get ipaddr "$cfg" 'ipaddr' config_get ipaddr "$cfg" 'ipaddr'
config_get netmask "$cfg" 'netmask' config_get prefix "$cfg" 'prefix'
config_get mtu "$cfg" 'mtu' config_get mtu "$cfg" 'mtu'
config_get supernode "$cfg" 'supernode' config_get supernode "$cfg" 'supernode'
config_get port "$cfg" 'port' config_get port "$cfg" 'port'
config_get community "$cfg" 'community' config_get community "$cfg" 'community'
config_get key "$cfg" 'key' config_get key "$cfg" 'key'
config_get_bool route "$cfg" 'route' '0' config_get_bool route "$cfg" 'route' '0'
address="$ipaddr/$prefix"
[ "$route" = "1" ] && args='-r' [ "$route" = "1" ] && args='-r'
[ "$mode" = 'dhcp' ] && ipaddr='0.0.0.0' [ "$mode" = 'dhcp' ] && address='0.0.0.0'
[ "-$mtu" != "-" ] && mtu="-M $mtu" [ "-$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) supernode)
config_get_bool enabled "$cfg" 'enabled' '0' config_get_bool enabled "$cfg" 'enabled' '0'
@ -33,6 +34,12 @@ start_instance() {
config_get port "$cfg" port config_get port "$cfg" port
/usr/bin/supernode -l $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 esac
} }
@ -55,6 +62,7 @@ start() {
config_load 'n2n_v2' config_load 'n2n_v2'
config_foreach start_instance 'edge' config_foreach start_instance 'edge'
config_foreach start_instance 'supernode' config_foreach start_instance 'supernode'
config_foreach start_instance 'route'
} }
stop() { stop() {