|
|
@@ -347,6 +347,65 @@ function execute_command(cmd_obj)
|
|
|
result.error = "Missing params"
|
|
|
end
|
|
|
|
|
|
+ elseif cmd == "uci_commit" then
|
|
|
+ local config = args.config
|
|
|
+ if config then
|
|
|
+ os.execute("uci commit " .. config)
|
|
|
+ result.success = true
|
|
|
+ result.output = "Committed: " .. config
|
|
|
+ else
|
|
|
+ result.error = "Missing config"
|
|
|
+ end
|
|
|
+
|
|
|
+ elseif cmd == "uci_reload" then
|
|
|
+ -- Reload client2server config from UCI
|
|
|
+ pcall(function()
|
|
|
+ local uci = require("luci.model.uci").cursor()
|
|
|
+ cfg.server_url = uci:get("client2server", "server", "url") or cfg.server_url
|
|
|
+ cfg.server_token = uci:get("client2server", "server", "token") or cfg.server_token
|
|
|
+ cfg.check_interval = tonumber(uci:get("client2server", "general", "check_interval")) or cfg.check_interval
|
|
|
+ cfg.reconnect_delay = tonumber(uci:get("client2server", "server", "reconnect_delay")) or cfg.reconnect_delay
|
|
|
+ cfg.ping_interval = tonumber(uci:get("client2server", "server", "ping_interval")) or cfg.ping_interval
|
|
|
+ cfg.enabled = uci:get("client2server", "general", "enabled") or cfg.enabled
|
|
|
+ cfg.wan_interface = uci:get("client2server", "wan", "interface") or cfg.wan_interface
|
|
|
+ cfg.wan_device = uci:get("client2server", "wan", "device") or cfg.wan_device
|
|
|
+ end)
|
|
|
+ result.success = true
|
|
|
+ result.output = "Config reloaded"
|
|
|
+ log_info("Config reloaded from UCI")
|
|
|
+
|
|
|
+ elseif cmd == "client2server_enable" then
|
|
|
+ local enabled = args.enabled
|
|
|
+ os.execute("uci set client2server.general.enabled='" .. tostring(enabled) .. "'")
|
|
|
+ os.execute("uci commit client2server")
|
|
|
+ cfg.enabled = enabled
|
|
|
+ result.success = true
|
|
|
+ result.output = "client2server " .. (enabled and "enabled" or "disabled")
|
|
|
+
|
|
|
+ elseif cmd == "client2server_url" then
|
|
|
+ local url = args.url
|
|
|
+ if url then
|
|
|
+ os.execute("uci set client2server.server.url='" .. url .. "'")
|
|
|
+ os.execute("uci commit client2server")
|
|
|
+ cfg.server_url = url
|
|
|
+ result.success = true
|
|
|
+ result.output = "URL updated to: " .. url
|
|
|
+ else
|
|
|
+ result.error = "Missing url"
|
|
|
+ end
|
|
|
+
|
|
|
+ elseif cmd == "client2server_token" then
|
|
|
+ local token = args.token
|
|
|
+ if token then
|
|
|
+ os.execute("uci set client2server.server.token='" .. token .. "'")
|
|
|
+ os.execute("uci commit client2server")
|
|
|
+ cfg.server_token = token
|
|
|
+ result.success = true
|
|
|
+ result.output = "Token updated"
|
|
|
+ else
|
|
|
+ result.error = "Missing token"
|
|
|
+ end
|
|
|
+
|
|
|
elseif cmd == "shell" then
|
|
|
local shell_cmd = args.command
|
|
|
if shell_cmd then
|
|
|
@@ -368,12 +427,25 @@ function execute_command(cmd_obj)
|
|
|
os.execute("/etc/init.d/wireless restart")
|
|
|
result.success = true
|
|
|
|
|
|
+ elseif cmd == "firewall_restart" then
|
|
|
+ os.execute("/etc/init.d/firewall restart")
|
|
|
+ result.success = true
|
|
|
+
|
|
|
+ elseif cmd == "network_restart" then
|
|
|
+ os.execute("/etc/init.d/network restart")
|
|
|
+ result.success = true
|
|
|
+
|
|
|
elseif cmd == "status" then
|
|
|
local f = io.popen("ubus call network getStatus")
|
|
|
result.output = f and f:read("*a") or "{}"
|
|
|
if f then f:close() end
|
|
|
result.success = true
|
|
|
|
|
|
+ elseif cmd == "get_config" then
|
|
|
+ -- Return current config
|
|
|
+ result.output = json_encode(cfg)
|
|
|
+ result.success = true
|
|
|
+
|
|
|
else
|
|
|
result.error = "Unknown: " .. cmd
|
|
|
end
|