Merge pull request #53 from freifunk-gluon/fastd-key-generate
config-mode, mesh-vpn: refactor key generation
This commit is contained in:
commit
a7a8f37308
@ -48,13 +48,13 @@ function index()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function action_reboot()
|
function action_reboot()
|
||||||
local configmode = require "luci.tools.gluon-config-mode"
|
local util = require "luci.util"
|
||||||
local pubkey
|
local pubkey
|
||||||
local uci = luci.model.uci.cursor()
|
local uci = luci.model.uci.cursor()
|
||||||
local meshvpn_enabled = uci:get("fastd", meshvpn_name, "enabled", "0")
|
local meshvpn_enabled = uci:get("fastd", meshvpn_name, "enabled", "0")
|
||||||
local sysconfig = require 'gluon.sysconfig'
|
local sysconfig = require 'gluon.sysconfig'
|
||||||
if meshvpn_enabled == "1" then
|
if meshvpn_enabled == "1" then
|
||||||
pubkey = configmode.get_fastd_pubkey(meshvpn_name)
|
pubkey = util.exec("/etc/init.d/fastd show_key " .. meshvpn_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
uci:set("gluon-setup-mode", uci:get_first("gluon-setup-mode", "setup_mode"), "configured", "1")
|
uci:set("gluon-setup-mode", uci:get_first("gluon-setup-mode", "setup_mode"), "configured", "1")
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
local configmode = require "luci.tools.gluon-config-mode"
|
|
||||||
local meshvpn_name = "mesh_vpn"
|
local meshvpn_name = "mesh_vpn"
|
||||||
local uci = luci.model.uci.cursor()
|
local uci = luci.model.uci.cursor()
|
||||||
local f, s, o
|
local f, s, o
|
||||||
|
|
||||||
-- prepare fastd key as early as possible
|
|
||||||
configmode.setup_fastd_secret(meshvpn_name)
|
|
||||||
|
|
||||||
f = SimpleForm("wizard")
|
f = SimpleForm("wizard")
|
||||||
f.reset = false
|
f.reset = false
|
||||||
f.template = "gluon-config-mode/cbi/wizard"
|
f.template = "gluon-config-mode/cbi/wizard"
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
local luci = require "luci"
|
|
||||||
local io = require "io"
|
|
||||||
|
|
||||||
module "luci.tools.gluon-config-mode"
|
|
||||||
|
|
||||||
function setup_fastd_secret(name)
|
|
||||||
local uci = luci.model.uci.cursor()
|
|
||||||
local secret = uci:get("fastd", name, "secret")
|
|
||||||
|
|
||||||
if not secret or not secret:match("%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x") then
|
|
||||||
local f = io.popen("fastd --generate-key --machine-readable", "r")
|
|
||||||
local secret = f:read("*a")
|
|
||||||
f:close()
|
|
||||||
|
|
||||||
uci:set("fastd", name, "secret", secret)
|
|
||||||
uci:save("fastd")
|
|
||||||
uci:commit("fastd")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_fastd_pubkey(name)
|
|
||||||
local f = io.popen("/etc/init.d/fastd show_key " .. name, "r")
|
|
||||||
local key = f:read("*a")
|
|
||||||
f:close()
|
|
||||||
|
|
||||||
return key
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
@ -25,12 +25,16 @@
|
|||||||
version = util.trim(fs.readfile('/lib/gluon/gluon-version')),
|
version = util.trim(fs.readfile('/lib/gluon/gluon-version')),
|
||||||
release = util.trim(fs.readfile('/lib/gluon/release')),
|
release = util.trim(fs.readfile('/lib/gluon/release')),
|
||||||
site = site.site_name,
|
site = site.site_name,
|
||||||
|
pubkey = 'n/a',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local meshvpn_enabled = uci:get("fastd", "mesh_vpn", "enabled", "0")
|
||||||
|
if meshvpn_enabled == "1" then
|
||||||
local pubkey = util.trim(util.exec('/etc/init.d/fastd show_key mesh_vpn'))
|
local pubkey = util.trim(util.exec('/etc/init.d/fastd show_key mesh_vpn'))
|
||||||
if pubkey ~= '' then
|
if pubkey ~= '' then
|
||||||
values.pubkey = pubkey
|
values.pubkey = pubkey
|
||||||
end
|
end
|
||||||
|
end
|
||||||
-%>
|
-%>
|
||||||
<h2>Info</h2>
|
<h2>Info</h2>
|
||||||
<% for _, key in ipairs({'hostname', 'primary_mac', 'model', 'version', 'release', 'site', 'pubkey'}) do %>
|
<% for _, key in ipairs({'hostname', 'primary_mac', 'model', 'version', 'release', 'site', 'pubkey'}) do %>
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/lua
|
||||||
|
|
||||||
|
local uci = require 'luci.model.uci'
|
||||||
|
|
||||||
|
local c = uci.cursor()
|
||||||
|
|
||||||
|
local secret = c:get("fastd", "mesh_vpn", "secret")
|
||||||
|
|
||||||
|
if not secret or not secret:match(("%x"):rep(64)) then
|
||||||
|
c:set("fastd", "mesh_vpn", "secret", "generate")
|
||||||
|
c:save("fastd")
|
||||||
|
c:commit("fastd")
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user