gluon-mesh-vpn-fastd: replace config script generator with Lua script
This commit is contained in:
parent
156813b34f
commit
4d9df6d253
@ -1,8 +1,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=gluon-mesh-vpn-fastd
|
PKG_NAME:=gluon-mesh-vpn-fastd
|
||||||
PKG_VERSION:=1
|
PKG_VERSION:=2
|
||||||
PKG_RELEASE:=1.$(GLUON_CONFIG_VERSION)
|
|
||||||
|
|
||||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
@ -31,10 +30,6 @@ endef
|
|||||||
|
|
||||||
define Package/gluon-mesh-vpn-fastd/install
|
define Package/gluon-mesh-vpn-fastd/install
|
||||||
$(CP) ./files/* $(1)/
|
$(CP) ./files/* $(1)/
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/lib/gluon/upgrade/mesh-vpn-fastd/invariant
|
|
||||||
$(GLUON_CONFIGURE) fastd.pl > $(1)/lib/gluon/upgrade/mesh-vpn-fastd/invariant/010-mesh-vpn-fastd
|
|
||||||
chmod +x $(1)/lib/gluon/upgrade/mesh-vpn-fastd/invariant/010-mesh-vpn-fastd
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,gluon-mesh-vpn-fastd))
|
$(eval $(call BuildPackage,gluon-mesh-vpn-fastd))
|
||||||
|
@ -1,77 +0,0 @@
|
|||||||
my $cfg = $CONFIG->{fastd_mesh_vpn};
|
|
||||||
my $backbone = $cfg->{backbone};
|
|
||||||
|
|
||||||
my $add_methods = '';
|
|
||||||
for (@{$cfg->{methods}}) {
|
|
||||||
$add_methods .= "uci add_list fastd.mesh_vpn.method='$_'\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
my $set_peer_limit;
|
|
||||||
if ($backbone->{limit}) {
|
|
||||||
$set_peer_limit = "uci_set fastd mesh_vpn_backbone peer_limit '$backbone->{limit}'\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$set_peer_limit = "uci_remove fastd mesh_vpn_backbone peer_limit\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print <<END;
|
|
||||||
#/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
. /lib/gluon/functions/sysconfig.sh
|
|
||||||
. /lib/gluon/functions/users.sh
|
|
||||||
|
|
||||||
add_user gluon-fastd 800
|
|
||||||
|
|
||||||
uci_add fastd fastd mesh_vpn
|
|
||||||
|
|
||||||
uci_set fastd mesh_vpn user 'gluon-fastd'
|
|
||||||
uci_set fastd mesh_vpn syslog_level 'verbose'
|
|
||||||
uci_set fastd mesh_vpn interface 'mesh-vpn'
|
|
||||||
uci_set fastd mesh_vpn mode 'tap'
|
|
||||||
uci_set fastd mesh_vpn mtu '$cfg->{mtu}'
|
|
||||||
uci_set fastd mesh_vpn secure_handshakes '1'
|
|
||||||
|
|
||||||
uci_remove fastd mesh_vpn method
|
|
||||||
$add_methods
|
|
||||||
|
|
||||||
uci_remove fastd mesh_vpn_backbone
|
|
||||||
uci_add fastd peer_group mesh_vpn_backbone
|
|
||||||
uci_set fastd mesh_vpn_backbone enabled '1'
|
|
||||||
uci_set fastd mesh_vpn_backbone net 'mesh_vpn'
|
|
||||||
$set_peer_limit
|
|
||||||
END
|
|
||||||
|
|
||||||
foreach my $name (sort keys %{$backbone->{peers}}) {
|
|
||||||
my $peer = $backbone->{peers}->{$name};
|
|
||||||
print <<EOF;
|
|
||||||
uci_remove fastd 'mesh_vpn_backbone_peer_$name'
|
|
||||||
uci_add fastd peer 'mesh_vpn_backbone_peer_$name'
|
|
||||||
uci_set fastd 'mesh_vpn_backbone_peer_$name' enabled '1'
|
|
||||||
uci_set fastd 'mesh_vpn_backbone_peer_$name' net 'mesh_vpn'
|
|
||||||
uci_set fastd 'mesh_vpn_backbone_peer_$name' group 'mesh_vpn_backbone'
|
|
||||||
uci_set fastd 'mesh_vpn_backbone_peer_$name' key '$peer->{key}'
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for (@{$peer->{remotes}}) {
|
|
||||||
print "uci add_list fastd.mesh_vpn_backbone_peer_$name.remote='$_'\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print <<'END';
|
|
||||||
|
|
||||||
uci_add network interface mesh_vpn
|
|
||||||
uci_set network mesh_vpn ifname 'mesh-vpn'
|
|
||||||
uci_set network mesh_vpn proto 'batadv'
|
|
||||||
uci_set network mesh_vpn mesh 'bat0'
|
|
||||||
uci_set network mesh_vpn mesh_no_rebroadcast '1'
|
|
||||||
|
|
||||||
mainaddr=$(sysconfig primary_mac)
|
|
||||||
oIFS="$IFS"; IFS=":"; set -- $mainaddr; IFS="$oIFS"
|
|
||||||
b2mask=0x02
|
|
||||||
vpnaddr=$(printf "%02x:%s:%s:%02x:%s:%s" $(( 0x$1 | $b2mask )) $2 $3 $(( (0x$4 + 1) % 0x100 )) $5 $6)
|
|
||||||
uci_set network mesh_vpn macaddr "$vpnaddr"
|
|
||||||
|
|
||||||
uci_commit fastd
|
|
||||||
uci_commit network
|
|
||||||
END
|
|
@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/lua
|
||||||
|
|
||||||
|
local site = require 'gluon.site_config'
|
||||||
|
local sysconfig = require 'gluon.sysconfig'
|
||||||
|
local nixio = require 'nixio'
|
||||||
|
local uci = require 'luci.model.uci'
|
||||||
|
|
||||||
|
local c = uci.cursor()
|
||||||
|
|
||||||
|
|
||||||
|
os.execute('. /lib/gluon/functions/users.sh && add_user gluon-fastd 800')
|
||||||
|
|
||||||
|
|
||||||
|
c:section('fastd', 'fastd', 'mesh_vpn',
|
||||||
|
{
|
||||||
|
user = 'gluon-fastd',
|
||||||
|
syslog_level = 'verbose',
|
||||||
|
interface = 'mesh-vpn',
|
||||||
|
mode = 'tap',
|
||||||
|
mtu = site.fastd_mesh_vpn.mtu,
|
||||||
|
secure_handshakes = '1',
|
||||||
|
method = site.fastd_mesh_vpn.methods,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
c:delete('fastd', 'mesh_vpn_backbone')
|
||||||
|
c:section('fastd', 'peer_group', 'mesh_vpn_backbone',
|
||||||
|
{
|
||||||
|
enabled = 1,
|
||||||
|
net = 'mesh_vpn',
|
||||||
|
peer_limit = site.fastd_mesh_vpn.backbone.limit,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
for name, config in pairs(site.fastd_mesh_vpn.backbone.peers) do
|
||||||
|
c:delete('fastd', 'mesh_vpn_backbone_peer_' .. name)
|
||||||
|
c:section('fastd', 'peer', 'mesh_vpn_backbone_peer_' .. name,
|
||||||
|
{
|
||||||
|
enabled = 1,
|
||||||
|
net = 'mesh_vpn',
|
||||||
|
group = 'mesh_vpn_backbone',
|
||||||
|
key = config.key,
|
||||||
|
remote = config.remotes,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
c:save('fastd')
|
||||||
|
c:commit('fastd')
|
||||||
|
|
||||||
|
|
||||||
|
local m1, m2, m3, m4, m5, m6 = string.match(sysconfig.primary_mac, '(%x%x):(%x%x):(%x%x):(%x%x):(%x%x):(%x%x)')
|
||||||
|
m1 = nixio.bit.bor(tonumber(m1, 16), 0x02)
|
||||||
|
m4 = (tonumber(m4, 16)+1) % 0x100
|
||||||
|
local vpnaddr = string.format('%02x:%s:%s:%02x:%s:%s', m1, m2, m3, m4, m5, m6)
|
||||||
|
|
||||||
|
c:section('network', 'interface', 'mesh_vpn',
|
||||||
|
{
|
||||||
|
ifname = 'mesh-vpn',
|
||||||
|
proto = 'batadv',
|
||||||
|
mesh = 'bat0',
|
||||||
|
mesh_no_rebroadcast = 1,
|
||||||
|
macaddr = vpnaddr,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
c:save('network')
|
||||||
|
c:commit('network')
|
Loading…
Reference in New Issue
Block a user