parent
958956b57e
commit
11c866739c
@ -1,5 +1,5 @@
|
|||||||
# Copyright (C) 2018-2020 L-WRT Team
|
# Copyright (C) 2018-2020 L-WRT Team
|
||||||
# Copyright (C) 2021-2023 xiaorouji
|
# Copyright (C) 2021-2025 xiaorouji
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v3.
|
# This is free software, licensed under the GNU General Public License v3.
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
-- Copyright (C) 2018-2020 L-WRT Team
|
-- Copyright (C) 2018-2020 L-WRT Team
|
||||||
-- Copyright (C) 2021-2023 xiaorouji
|
-- Copyright (C) 2021-2025 xiaorouji
|
||||||
|
|
||||||
module("luci.controller.passwall", package.seeall)
|
module("luci.controller.passwall", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local appname = "passwall" -- not available
|
local appname = "passwall" -- not available
|
||||||
local uci = api.libuci -- in funtion index()
|
local uci = api.uci -- in funtion index()
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
local http = require "luci.http"
|
local http = require "luci.http"
|
||||||
local util = require "luci.util"
|
local util = require "luci.util"
|
||||||
@ -17,8 +17,8 @@ function index()
|
|||||||
else return end
|
else return end
|
||||||
end
|
end
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local appname = "passwall" -- global definitions not available
|
local appname = "passwall" -- global definitions not available
|
||||||
local uci = api.libuci -- in function index()
|
local uci = api.uci -- in function index()
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
entry({"admin", "services", appname}).dependent = true
|
entry({"admin", "services", appname}).dependent = true
|
||||||
entry({"admin", "services", appname, "reset_config"}, call("reset_config")).leaf = true
|
entry({"admin", "services", appname, "reset_config"}, call("reset_config")).leaf = true
|
||||||
@ -110,7 +110,7 @@ end
|
|||||||
|
|
||||||
function show_menu()
|
function show_menu()
|
||||||
uci:delete(appname, "@global[0]", "hide_from_luci")
|
uci:delete(appname, "@global[0]", "hide_from_luci")
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
luci.sys.call("rm -rf /tmp/luci-*")
|
luci.sys.call("rm -rf /tmp/luci-*")
|
||||||
luci.sys.call("/etc/init.d/rpcd restart >/dev/null")
|
luci.sys.call("/etc/init.d/rpcd restart >/dev/null")
|
||||||
luci.http.redirect(api.url())
|
luci.http.redirect(api.url())
|
||||||
@ -118,7 +118,7 @@ end
|
|||||||
|
|
||||||
function hide_menu()
|
function hide_menu()
|
||||||
uci:set(appname, "@global[0]", "hide_from_luci","1")
|
uci:set(appname, "@global[0]", "hide_from_luci","1")
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
luci.sys.call("rm -rf /tmp/luci-*")
|
luci.sys.call("rm -rf /tmp/luci-*")
|
||||||
luci.sys.call("/etc/init.d/rpcd restart >/dev/null")
|
luci.sys.call("/etc/init.d/rpcd restart >/dev/null")
|
||||||
luci.http.redirect(luci.dispatcher.build_url("admin", "status", "overview"))
|
luci.http.redirect(luci.dispatcher.build_url("admin", "status", "overview"))
|
||||||
@ -135,6 +135,7 @@ function socks_autoswitch_add_node()
|
|||||||
local id = luci.http.formvalue("id")
|
local id = luci.http.formvalue("id")
|
||||||
local key = luci.http.formvalue("key")
|
local key = luci.http.formvalue("key")
|
||||||
if id and id ~= "" and key and key ~= "" then
|
if id and id ~= "" and key and key ~= "" then
|
||||||
|
uci:set(appname, id, "enable_autoswitch", "1")
|
||||||
local new_list = uci:get(appname, id, "autoswitch_backup_node") or {}
|
local new_list = uci:get(appname, id, "autoswitch_backup_node") or {}
|
||||||
for i = #new_list, 1, -1 do
|
for i = #new_list, 1, -1 do
|
||||||
if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then
|
if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then
|
||||||
@ -146,8 +147,8 @@ function socks_autoswitch_add_node()
|
|||||||
table.insert(new_list, e.id)
|
table.insert(new_list, e.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
api.uci_set_list(uci, appname, id, "autoswitch_backup_node", new_list)
|
uci:set_list(appname, id, "autoswitch_backup_node", new_list)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname)
|
||||||
end
|
end
|
||||||
luci.http.redirect(api.url("socks_config", id))
|
luci.http.redirect(api.url("socks_config", id))
|
||||||
end
|
end
|
||||||
@ -156,14 +157,15 @@ function socks_autoswitch_remove_node()
|
|||||||
local id = luci.http.formvalue("id")
|
local id = luci.http.formvalue("id")
|
||||||
local key = luci.http.formvalue("key")
|
local key = luci.http.formvalue("key")
|
||||||
if id and id ~= "" and key and key ~= "" then
|
if id and id ~= "" and key and key ~= "" then
|
||||||
|
uci:set(appname, id, "enable_autoswitch", "1")
|
||||||
local new_list = uci:get(appname, id, "autoswitch_backup_node") or {}
|
local new_list = uci:get(appname, id, "autoswitch_backup_node") or {}
|
||||||
for i = #new_list, 1, -1 do
|
for i = #new_list, 1, -1 do
|
||||||
if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then
|
if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then
|
||||||
table.remove(new_list, i)
|
table.remove(new_list, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
api.uci_set_list(uci, appname, id, "autoswitch_backup_node", new_list)
|
uci:set_list(appname, id, "autoswitch_backup_node", new_list)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname)
|
||||||
end
|
end
|
||||||
luci.http.redirect(api.url("socks_config", id))
|
luci.http.redirect(api.url("socks_config", id))
|
||||||
end
|
end
|
||||||
@ -353,7 +355,7 @@ function set_node()
|
|||||||
local protocol = luci.http.formvalue("protocol")
|
local protocol = luci.http.formvalue("protocol")
|
||||||
local section = luci.http.formvalue("section")
|
local section = luci.http.formvalue("section")
|
||||||
uci:set(appname, "@global[0]", protocol .. "_node", section)
|
uci:set(appname, "@global[0]", protocol .. "_node", section)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
luci.sys.call("/etc/init.d/passwall restart > /dev/null 2>&1 &")
|
luci.sys.call("/etc/init.d/passwall restart > /dev/null 2>&1 &")
|
||||||
luci.http.redirect(api.url("log"))
|
luci.http.redirect(api.url("log"))
|
||||||
end
|
end
|
||||||
@ -361,7 +363,7 @@ end
|
|||||||
function copy_node()
|
function copy_node()
|
||||||
local section = luci.http.formvalue("section")
|
local section = luci.http.formvalue("section")
|
||||||
local uuid = api.gen_short_uuid()
|
local uuid = api.gen_short_uuid()
|
||||||
api.uci_section(uci, appname, "nodes", uuid)
|
uci:section(appname, "nodes", uuid)
|
||||||
for k, v in pairs(uci:get_all(appname, section)) do
|
for k, v in pairs(uci:get_all(appname, section)) do
|
||||||
local filter = k:find("%.")
|
local filter = k:find("%.")
|
||||||
if filter and filter == 1 then
|
if filter and filter == 1 then
|
||||||
@ -375,7 +377,7 @@ function copy_node()
|
|||||||
end
|
end
|
||||||
uci:delete(appname, uuid, "add_from")
|
uci:delete(appname, uuid, "add_from")
|
||||||
uci:set(appname, uuid, "add_mode", 1)
|
uci:set(appname, uuid, "add_mode", 1)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname)
|
||||||
luci.http.redirect(api.url("node_config", uuid))
|
luci.http.redirect(api.url("node_config", uuid))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -385,7 +387,7 @@ function clear_all_nodes()
|
|||||||
uci:delete(appname, '@global[0]', "udp_node")
|
uci:delete(appname, '@global[0]', "udp_node")
|
||||||
uci:foreach(appname, "socks", function(t)
|
uci:foreach(appname, "socks", function(t)
|
||||||
uci:delete(appname, t[".name"])
|
uci:delete(appname, t[".name"])
|
||||||
api.uci_set_list(uci, appname, t[".name"], "autoswitch_backup_node", {})
|
uci:set_list(appname, t[".name"], "autoswitch_backup_node", {})
|
||||||
end)
|
end)
|
||||||
uci:foreach(appname, "haproxy_config", function(t)
|
uci:foreach(appname, "haproxy_config", function(t)
|
||||||
uci:delete(appname, t[".name"])
|
uci:delete(appname, t[".name"])
|
||||||
@ -398,7 +400,7 @@ function clear_all_nodes()
|
|||||||
uci:delete(appname, node['.name'])
|
uci:delete(appname, node['.name'])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
luci.sys.call("/etc/init.d/" .. appname .. " stop")
|
luci.sys.call("/etc/init.d/" .. appname .. " stop")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -421,7 +423,7 @@ function delete_select_nodes()
|
|||||||
table.remove(auto_switch_node_list, i)
|
table.remove(auto_switch_node_list, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
api.uci_set_list(uci, appname, t[".name"], "autoswitch_backup_node", auto_switch_node_list)
|
uci:set_list(appname, t[".name"], "autoswitch_backup_node", auto_switch_node_list)
|
||||||
end)
|
end)
|
||||||
uci:foreach(appname, "haproxy_config", function(t)
|
uci:foreach(appname, "haproxy_config", function(t)
|
||||||
if t["lbss"] == w then
|
if t["lbss"] == w then
|
||||||
@ -448,7 +450,7 @@ function delete_select_nodes()
|
|||||||
end)
|
end)
|
||||||
uci:delete(appname, w)
|
uci:delete(appname, w)
|
||||||
end)
|
end)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
luci.sys.call("/etc/init.d/" .. appname .. " restart > /dev/null 2>&1 &")
|
luci.sys.call("/etc/init.d/" .. appname .. " restart > /dev/null 2>&1 &")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -123,6 +123,8 @@ for k, v in pairs(nodes_table) do
|
|||||||
socks_node:value(v.id, v["remark"])
|
socks_node:value(v.id, v["remark"])
|
||||||
end
|
end
|
||||||
|
|
||||||
m:append(Template(appname .. "/socks_auto_switch/footer"))
|
o = s:option(DummyValue, "btn", " ")
|
||||||
|
o.template = appname .. "/socks_auto_switch/btn"
|
||||||
|
o:depends("enable_autoswitch", true)
|
||||||
|
|
||||||
return m
|
return m
|
||||||
|
@ -3,6 +3,7 @@ local com = require "luci.passwall.com"
|
|||||||
bin = require "nixio".bin
|
bin = require "nixio".bin
|
||||||
fs = require "nixio.fs"
|
fs = require "nixio.fs"
|
||||||
sys = require "luci.sys"
|
sys = require "luci.sys"
|
||||||
|
uci = require "luci.model.uci".cursor()
|
||||||
libuci = require "uci".cursor()
|
libuci = require "uci".cursor()
|
||||||
util = require "luci.util"
|
util = require "luci.util"
|
||||||
datatypes = require "luci.cbi.datatypes"
|
datatypes = require "luci.cbi.datatypes"
|
||||||
@ -30,6 +31,10 @@ function log(...)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function is_js_luci()
|
||||||
|
return sys.call('[ -f "/www/luci-static/resources/uci.js" ]') == 0
|
||||||
|
end
|
||||||
|
|
||||||
function uci_set_list(cursor, config, section, option, value)
|
function uci_set_list(cursor, config, section, option, value)
|
||||||
if config and section and option then
|
if config and section and option then
|
||||||
if not value or #value == 0 then
|
if not value or #value == 0 then
|
||||||
@ -55,24 +60,48 @@ function uci_section(cursor, config, type, name, values)
|
|||||||
return stat and name
|
return stat and name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function uci_save(cursor, config, commit, apply)
|
||||||
|
if is_js_luci() then
|
||||||
|
commit = true
|
||||||
|
if commit then
|
||||||
|
if apply then
|
||||||
|
cursor:commit(config)
|
||||||
|
else
|
||||||
|
sh_uci_commit(config)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
cursor:save(config)
|
||||||
|
if commit then
|
||||||
|
cursor:commit(config)
|
||||||
|
if apply then
|
||||||
|
sys.call("/etc/init.d/" .. config .. " reload > /dev/null 2>&1 &")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function sh_uci_get(config, section, option)
|
function sh_uci_get(config, section, option)
|
||||||
exec_call(string.format("uci -q get %s.%s.%s", config, section, option))
|
exec_call(string.format("uci -q get %s.%s.%s", config, section, option))
|
||||||
exec_call(string.format("uci -q commit %s", config))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function sh_uci_set(config, section, option, val)
|
function sh_uci_set(config, section, option, val, commit)
|
||||||
exec_call(string.format("uci -q set %s.%s.%s=\"%s\"", config, section, option, val))
|
exec_call(string.format("uci -q set %s.%s.%s=\"%s\"", config, section, option, val))
|
||||||
exec_call(string.format("uci -q commit %s", config))
|
if commit then sh_uci_commit(config) end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sh_uci_del(config, section, option)
|
function sh_uci_del(config, section, option, commit)
|
||||||
exec_call(string.format("uci -q delete %s.%s.%s", config, section, option))
|
exec_call(string.format("uci -q delete %s.%s.%s", config, section, option))
|
||||||
exec_call(string.format("uci -q commit %s", config))
|
if commit then sh_uci_commit(config) end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sh_uci_add_list(config, section, option, val)
|
function sh_uci_add_list(config, section, option, val, commit)
|
||||||
exec_call(string.format("uci -q del_list %s.%s.%s=\"%s\"", config, section, option, val))
|
exec_call(string.format("uci -q del_list %s.%s.%s=\"%s\"", config, section, option, val))
|
||||||
exec_call(string.format("uci -q add_list %s.%s.%s=\"%s\"", config, section, option, val))
|
exec_call(string.format("uci -q add_list %s.%s.%s=\"%s\"", config, section, option, val))
|
||||||
|
if commit then sh_uci_commit(config) end
|
||||||
|
end
|
||||||
|
|
||||||
|
function sh_uci_commit(config)
|
||||||
exec_call(string.format("uci -q commit %s", config))
|
exec_call(string.format("uci -q commit %s", config))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -175,7 +204,7 @@ end
|
|||||||
|
|
||||||
function curl_direct(url, file, args)
|
function curl_direct(url, file, args)
|
||||||
--直连访问
|
--直连访问
|
||||||
local chn_list = libuci:get(appname, "@global[0]", "chn_list") or "direct"
|
local chn_list = uci:get(appname, "@global[0]", "chn_list") or "direct"
|
||||||
local Dns = (chn_list == "proxy") and "1.1.1.1" or "223.5.5.5"
|
local Dns = (chn_list == "proxy") and "1.1.1.1" or "223.5.5.5"
|
||||||
if not args then args = {} end
|
if not args then args = {} end
|
||||||
local tmp_args = clone(args)
|
local tmp_args = clone(args)
|
||||||
@ -419,30 +448,10 @@ function get_domain_from_url(url)
|
|||||||
return url
|
return url
|
||||||
end
|
end
|
||||||
|
|
||||||
function get_node_name(node_id)
|
|
||||||
local e
|
|
||||||
if type(node_id) == "table" then
|
|
||||||
e = node_id
|
|
||||||
else
|
|
||||||
e = libuci:get_all(appname, node_id)
|
|
||||||
end
|
|
||||||
if e then
|
|
||||||
if e.type and e.remarks then
|
|
||||||
if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface") then
|
|
||||||
local type = e.type
|
|
||||||
if type == "sing-box" then type = "Sing-Box" end
|
|
||||||
local remark = "%s:[%s] " % {type .. " " .. i18n.translatef(e.protocol), e.remarks}
|
|
||||||
return remark
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_valid_nodes()
|
function get_valid_nodes()
|
||||||
local show_node_info = uci_get_type("@global_other[0]", "show_node_info", "0")
|
local show_node_info = uci_get_type("@global_other[0]", "show_node_info", "0")
|
||||||
local nodes = {}
|
local nodes = {}
|
||||||
libuci:foreach(appname, "nodes", function(e)
|
uci:foreach(appname, "nodes", function(e)
|
||||||
e.id = e[".name"]
|
e.id = e[".name"]
|
||||||
if e.type and e.remarks then
|
if e.type and e.remarks then
|
||||||
if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface") then
|
if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface") then
|
||||||
@ -539,7 +548,7 @@ function gen_short_uuid()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function uci_get_type(type, config, default)
|
function uci_get_type(type, config, default)
|
||||||
local value = libuci:get(appname, type, config) or default
|
local value = uci:get(appname, type, config) or default
|
||||||
if (value == nil or value == "") and (default and default ~= "") then
|
if (value == nil or value == "") and (default and default ~= "") then
|
||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
local action = arg[1]
|
local action = arg[1]
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
|
|
||||||
local CONFIG = "passwall_server"
|
local CONFIG = "passwall_server"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_hysteria2", package.seeall)
|
module("luci.passwall.util_hysteria2", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
|
|
||||||
function gen_config_server(node)
|
function gen_config_server(node)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_naiveproxy", package.seeall)
|
module("luci.passwall.util_naiveproxy", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
|
|
||||||
function gen_config(var)
|
function gen_config(var)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_shadowsocks", package.seeall)
|
module("luci.passwall.util_shadowsocks", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
|
|
||||||
function gen_config_server(node)
|
function gen_config_server(node)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_sing-box", package.seeall)
|
module("luci.passwall.util_sing-box", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
local appname = "passwall"
|
local appname = "passwall"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_trojan", package.seeall)
|
module("luci.passwall.util_trojan", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local json = api.jsonc
|
local json = api.jsonc
|
||||||
|
|
||||||
function gen_config_server(node)
|
function gen_config_server(node)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_tuic", package.seeall)
|
module("luci.passwall.util_tuic", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local json = api.jsonc
|
local json = api.jsonc
|
||||||
|
|
||||||
function gen_config(var)
|
function gen_config(var)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module("luci.passwall.util_xray", package.seeall)
|
module("luci.passwall.util_xray", package.seeall)
|
||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
local appname = "passwall"
|
local appname = "passwall"
|
||||||
|
@ -19,5 +19,7 @@ local api = require "luci.passwall.api"
|
|||||||
}
|
}
|
||||||
//]]>
|
//]]>
|
||||||
</script>
|
</script>
|
||||||
<input class="btn cbi-button cbi-button-add" type="button" onclick="add_node_by_key()" value="<%:Add nodes to the standby node list by keywords%>" />
|
<div id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>">
|
||||||
<input class="btn cbi-button cbi-button-remove" type="button" onclick="remove_node_by_key()" value="<%:Delete nodes in the standby node list by keywords%>" />
|
<input class="btn cbi-button cbi-button-add" type="button" onclick="add_node_by_key()" value="<%:Add nodes to the standby node list by keywords%>" />
|
||||||
|
<input class="btn cbi-button cbi-button-remove" type="button" onclick="remove_node_by_key()" value="<%:Delete nodes in the standby node list by keywords%>" />
|
||||||
|
</div>
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Copyright (C) 2018-2020 L-WRT Team
|
# Copyright (C) 2018-2020 L-WRT Team
|
||||||
# Copyright (C) 2021-2023 xiaorouji
|
# Copyright (C) 2021-2025 xiaorouji
|
||||||
|
|
||||||
. $IPKG_INSTROOT/lib/functions.sh
|
. $IPKG_INSTROOT/lib/functions.sh
|
||||||
. $IPKG_INSTROOT/lib/functions/service.sh
|
. $IPKG_INSTROOT/lib/functions/service.sh
|
||||||
|
@ -4,7 +4,7 @@ local api = require ("luci.passwall.api")
|
|||||||
local appname = "passwall"
|
local appname = "passwall"
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
|
|
||||||
local log = function(...)
|
local log = function(...)
|
||||||
|
@ -21,7 +21,7 @@ local NFTFLAG = var["-NFTFLAG"]
|
|||||||
local REMOTE_FAKEDNS = var["-REMOTE_FAKEDNS"]
|
local REMOTE_FAKEDNS = var["-REMOTE_FAKEDNS"]
|
||||||
local LOG_FILE = var["-LOG_FILE"]
|
local LOG_FILE = var["-LOG_FILE"]
|
||||||
|
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
local datatypes = api.datatypes
|
local datatypes = api.datatypes
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
local api = require "luci.passwall.api"
|
local api = require "luci.passwall.api"
|
||||||
local appname = "passwall"
|
local appname = "passwall"
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
local datatypes = api.datatypes
|
local datatypes = api.datatypes
|
||||||
@ -25,7 +25,7 @@ local function backup_servers()
|
|||||||
local DNSMASQ_DNS = uci:get("dhcp", "@dnsmasq[0]", "server")
|
local DNSMASQ_DNS = uci:get("dhcp", "@dnsmasq[0]", "server")
|
||||||
if DNSMASQ_DNS and #DNSMASQ_DNS > 0 then
|
if DNSMASQ_DNS and #DNSMASQ_DNS > 0 then
|
||||||
uci:set(appname, "@global[0]", "dnsmasq_servers", DNSMASQ_DNS)
|
uci:set(appname, "@global[0]", "dnsmasq_servers", DNSMASQ_DNS)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -43,11 +43,11 @@ local function restore_servers()
|
|||||||
tinsert(dns_table, v)
|
tinsert(dns_table, v)
|
||||||
end
|
end
|
||||||
uci:delete(appname, "@global[0]", "dnsmasq_servers")
|
uci:delete(appname, "@global[0]", "dnsmasq_servers")
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
end
|
end
|
||||||
if dns_table and #dns_table > 0 then
|
if dns_table and #dns_table > 0 then
|
||||||
api.uci_set_list(uci, "dhcp", "@dnsmasq[0]", "server", dns_table)
|
uci:set_list("dhcp", "@dnsmasq[0]", "server", dns_table)
|
||||||
uci:commit("dhcp")
|
api.uci_save(uci, "dhcp", true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ function stretch()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
uci:set("dhcp", "@dnsmasq[0]", "resolvfile", RESOLVFILE)
|
uci:set("dhcp", "@dnsmasq[0]", "resolvfile", RESOLVFILE)
|
||||||
uci:commit("dhcp")
|
api.uci_save(uci, "dhcp", true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -102,8 +102,8 @@ function logic_restart(var)
|
|||||||
tinsert(dns_table, v)
|
tinsert(dns_table, v)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
api.uci_set_list(uci, "dhcp", "@dnsmasq[0]", "server", dns_table)
|
uci:set_list("dhcp", "@dnsmasq[0]", "server", dns_table)
|
||||||
uci:commit("dhcp")
|
api.uci_save(uci, "dhcp", true)
|
||||||
end
|
end
|
||||||
sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1")
|
sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1")
|
||||||
restore_servers()
|
restore_servers()
|
||||||
|
@ -28,7 +28,7 @@ local CACHE_FLAG = "smartdns_" .. FLAG
|
|||||||
local CACHE_DNS_PATH = CACHE_PATH .. "/" .. CACHE_FLAG
|
local CACHE_DNS_PATH = CACHE_PATH .. "/" .. CACHE_FLAG
|
||||||
local CACHE_DNS_FILE = CACHE_DNS_PATH .. ".conf"
|
local CACHE_DNS_FILE = CACHE_DNS_PATH .. ".conf"
|
||||||
|
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
local datatypes = api.datatypes
|
local datatypes = api.datatypes
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
local api = require ("luci.passwall.api")
|
local api = require ("luci.passwall.api")
|
||||||
local name = api.appname
|
local name = api.appname
|
||||||
local uci = api.libuci
|
local uci = api.uci
|
||||||
local sys = api.sys
|
local sys = api.sys
|
||||||
local jsonc = api.jsonc
|
local jsonc = api.jsonc
|
||||||
local fs = api.fs
|
local fs = api.fs
|
||||||
@ -469,7 +469,7 @@ uci:set(name, "@global_rules[0]", "chnroute6_update", chnroute6_update)
|
|||||||
uci:set(name, "@global_rules[0]", "chnlist_update", chnlist_update)
|
uci:set(name, "@global_rules[0]", "chnlist_update", chnlist_update)
|
||||||
uci:set(name, "@global_rules[0]", "geoip_update", geoip_update)
|
uci:set(name, "@global_rules[0]", "geoip_update", geoip_update)
|
||||||
uci:set(name, "@global_rules[0]", "geosite_update", geosite_update)
|
uci:set(name, "@global_rules[0]", "geosite_update", geosite_update)
|
||||||
uci:commit(name)
|
api.uci_save(uci, name, true)
|
||||||
|
|
||||||
if reboot == 1 then
|
if reboot == 1 then
|
||||||
if arg3 == "cron" then
|
if arg3 == "cron" then
|
||||||
|
@ -1312,7 +1312,7 @@ local function truncate_nodes(add_from)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function select_node(nodes, config)
|
local function select_node(nodes, config)
|
||||||
@ -1464,7 +1464,7 @@ local function update_node(manual)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
|
|
||||||
if next(CONFIG) then
|
if next(CONFIG) then
|
||||||
local nodes = {}
|
local nodes = {}
|
||||||
@ -1499,7 +1499,7 @@ local function update_node(manual)
|
|||||||
end
|
end
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
uci:commit(appname)
|
api.uci_save(uci, appname, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
if arg[3] == "cron" then
|
if arg[3] == "cron" then
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile
|
diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile
|
||||||
index 7b625ea..3997cd8 100644
|
index 6653f5f..b83e4c1 100644
|
||||||
--- a/luci-app-passwall/Makefile
|
--- a/luci-app-passwall/Makefile
|
||||||
+++ b/luci-app-passwall/Makefile
|
+++ b/luci-app-passwall/Makefile
|
||||||
@@ -144,7 +144,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Geodata
|
@@ -144,7 +144,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Geodata
|
||||||
@ -20,10 +20,10 @@ index 7b625ea..3997cd8 100644
|
|||||||
|
|
||||||
define Package/$(PKG_NAME)/postrm
|
define Package/$(PKG_NAME)/postrm
|
||||||
diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
|
diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
|
||||||
index 2ed0db4..620d8b0 100644
|
index c01e5ef..8df6d62 100644
|
||||||
--- a/luci-app-passwall/luasrc/controller/passwall.lua
|
--- a/luci-app-passwall/luasrc/controller/passwall.lua
|
||||||
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
|
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
|
||||||
@@ -296,7 +296,7 @@ function connect_status()
|
@@ -298,7 +298,7 @@ function connect_status()
|
||||||
url = "-x socks5h://" .. socks_server .. " " .. url
|
url = "-x socks5h://" .. socks_server .. " " .. url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user