40 lines
968 B
Lua
Executable File
40 lines
968 B
Lua
Executable File
#!/usr/bin/lua
|
|
|
|
local uci = require('simple-uci').cursor()
|
|
local site = require 'gluon.site'
|
|
|
|
local private_key = uci:get("network_gluon-old", 'wg_mesh', "private_key")
|
|
|
|
if not private_key or not private_key:match("^" .. ("[%a%d+/]"):rep(42) .. "[AEIMQUYcgkosw480]=$") then
|
|
private_key = "generate"
|
|
end
|
|
|
|
uci:section('network', 'interface', 'wg_mesh', {
|
|
proto = 'wireguard',
|
|
fwmark = 1,
|
|
private_key = private_key,
|
|
})
|
|
|
|
uci:section('network', 'interface', 'mesh_wg_mesh', {
|
|
ifname = 'wg_mesh',
|
|
proto = 'gluon_wireguard'
|
|
})
|
|
|
|
-- Clean up previous configuration
|
|
uci:delete_all('wgpeerselector', 'peer', function(peer)
|
|
return peer.preserve ~= '1'
|
|
end)
|
|
|
|
for name, peer in pairs(site.mesh_vpn.wireguard.peers()) do
|
|
uci:section("wgpeerselector", "peer", name, {
|
|
enabled = true,
|
|
endpoint = peer.endpoint,
|
|
public_key = peer.public_key,
|
|
allowed_ips = { "fe80::1/128" },
|
|
ifname = 'wg_mesh',
|
|
})
|
|
end
|
|
|
|
uci:save("wgpeerselector")
|
|
uci:save("network")
|