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")
 |