Add API key support for server authentication in configuration
This commit is contained in:
@@ -33,6 +33,7 @@ local function loadConfig()
|
|||||||
if cfg.serverUrl then SERVER_URL = cfg.serverUrl end
|
if cfg.serverUrl then SERVER_URL = cfg.serverUrl end
|
||||||
if cfg.pollInterval then POLL_INTERVAL = cfg.pollInterval end
|
if cfg.pollInterval then POLL_INTERVAL = cfg.pollInterval end
|
||||||
if cfg.stateInterval then STATE_INTERVAL = cfg.stateInterval end
|
if cfg.stateInterval then STATE_INTERVAL = cfg.stateInterval end
|
||||||
|
if cfg.apiKey then API_KEY = cfg.apiKey end
|
||||||
print("[CONFIG] Loaded from " .. CONFIG_FILE)
|
print("[CONFIG] Loaded from " .. CONFIG_FILE)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -46,6 +47,7 @@ local latestState = nil -- last broadcast from master
|
|||||||
local modem = nil
|
local modem = nil
|
||||||
local modemName = nil
|
local modemName = nil
|
||||||
local running = true
|
local running = true
|
||||||
|
local API_KEY = nil -- optional API key for server auth
|
||||||
|
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- Find modem
|
-- Find modem
|
||||||
@@ -71,6 +73,7 @@ local function httpPost(path, body)
|
|||||||
local url = SERVER_URL .. path
|
local url = SERVER_URL .. path
|
||||||
local data = textutils.serialiseJSON(body)
|
local data = textutils.serialiseJSON(body)
|
||||||
local headers = { ["Content-Type"] = "application/json" }
|
local headers = { ["Content-Type"] = "application/json" }
|
||||||
|
if API_KEY then headers["Authorization"] = "Bearer " .. API_KEY end
|
||||||
|
|
||||||
local ok, err = pcall(function()
|
local ok, err = pcall(function()
|
||||||
local response = http.post(url, data, headers)
|
local response = http.post(url, data, headers)
|
||||||
@@ -89,8 +92,10 @@ end
|
|||||||
|
|
||||||
local function httpGet(path)
|
local function httpGet(path)
|
||||||
local url = SERVER_URL .. path
|
local url = SERVER_URL .. path
|
||||||
|
local headers = nil
|
||||||
|
if API_KEY then headers = { ["Authorization"] = "Bearer " .. API_KEY } end
|
||||||
local ok, result = pcall(function()
|
local ok, result = pcall(function()
|
||||||
local response = http.get(url)
|
local response = http.get(url, headers)
|
||||||
if response then
|
if response then
|
||||||
local data = response.readAll()
|
local data = response.readAll()
|
||||||
response.close()
|
response.close()
|
||||||
@@ -274,6 +279,11 @@ local function main()
|
|||||||
print("[OK] Server URL: " .. SERVER_URL)
|
print("[OK] Server URL: " .. SERVER_URL)
|
||||||
print("[OK] Poll interval: " .. POLL_INTERVAL .. "s")
|
print("[OK] Poll interval: " .. POLL_INTERVAL .. "s")
|
||||||
print("[OK] State interval: " .. STATE_INTERVAL .. "s")
|
print("[OK] State interval: " .. STATE_INTERVAL .. "s")
|
||||||
|
if API_KEY then
|
||||||
|
print("[OK] API key configured")
|
||||||
|
else
|
||||||
|
print("[WARN] No API key set (open access)")
|
||||||
|
end
|
||||||
print("")
|
print("")
|
||||||
print("Bridge is running. Press Ctrl+T to stop.")
|
print("Bridge is running. Press Ctrl+T to stop.")
|
||||||
print("Listening for master broadcasts on ch " .. BROADCAST_CHANNEL)
|
print("Listening for master broadcasts on ch " .. BROADCAST_CHANNEL)
|
||||||
|
|||||||
Reference in New Issue
Block a user