mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-09-10 18:34:09 +08:00
update 2026-08-09 12:59:02
This commit is contained in:
@@ -23,8 +23,10 @@ s.anonymous = true
|
||||
s.addremove = true
|
||||
s.extedit = api.url("acl_config", "%s")
|
||||
function s.create(e, t)
|
||||
t = TypedSection.create(e, t)
|
||||
luci.http.redirect(e.extedit:format(t))
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "acl_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
luci.http.redirect(e.extedit:format(uuid))
|
||||
end
|
||||
function s.remove(e, t)
|
||||
sys.call("rm -rf /tmp/etc/passwall_tmp/dns_" .. t .. "*")
|
||||
|
||||
@@ -138,11 +138,12 @@ s.template = "cbi/tblsection"
|
||||
s.extedit = api.url("node_subscribe_config", "%s")
|
||||
function s.create(e, t)
|
||||
m.no_commit = true
|
||||
local id = TypedSection.create(e, t)
|
||||
uci:set(appname, id, "hysteria_up_mbps", "100")
|
||||
uci:set(appname, id, "hysteria_down_mbps", "100")
|
||||
api.uci_save(uci, appname)
|
||||
luci.http.redirect(e.extedit:format(id))
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "sub_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
m:set(uuid, "hysteria_up_mbps", "100")
|
||||
m:set(uuid, "hysteria_down_mbps", "100")
|
||||
luci.http.redirect(e.extedit:format(uuid))
|
||||
end
|
||||
|
||||
o = s:option(Value, "remark", translate("Remarks"))
|
||||
|
||||
@@ -55,6 +55,16 @@ for sid in $(uci show passwall | grep "=socks" | awk -F '.' '{print $2}' | awk -
|
||||
unset sid new_id
|
||||
fi
|
||||
done
|
||||
for sid in $(uci show passwall | grep "@acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do
|
||||
new_id="acl_$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 5)"
|
||||
uci -q rename passwall.${sid}="${new_id}"
|
||||
unset sid new_id
|
||||
done
|
||||
for sid in $(uci show passwall | grep "@subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do
|
||||
new_id="sub_$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 5)"
|
||||
uci -q rename passwall.${sid}="${new_id}"
|
||||
unset sid new_id
|
||||
done
|
||||
|
||||
uci -q commit passwall
|
||||
|
||||
|
||||
@@ -1050,9 +1050,6 @@ socks_node_switch() {
|
||||
LOG_FILE="/dev/null"
|
||||
run_socks flag=$flag node=$new_node bind=$bind socks_port=$port config_file=$config_file http_port=$http_port http_config_file=$http_config_file log_file=$log_file
|
||||
set_cache_var "${flag}" "$new_node"
|
||||
local ENABLED_DEFAULT_ACL=$(get_cache_var "ENABLED_DEFAULT_ACL")
|
||||
local ENABLED_ACLS=$(get_cache_var "ENABLED_ACLS")
|
||||
[ "$ENABLED_DEFAULT_ACL" != "1" ] && [ "$ENABLED_ACLS" != "1" ] && return
|
||||
local USE_TABLES=$(get_cache_var "USE_TABLES")
|
||||
[ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh filter_direct_node_list
|
||||
}
|
||||
@@ -1147,14 +1144,13 @@ start_crontab() {
|
||||
# ===== subscribe =====
|
||||
local TMP_SUB_PATH=$TMP_PATH/sub_crontabs
|
||||
mkdir -p "$TMP_SUB_PATH"
|
||||
local item cfgid remark sub_update_week_mode sub_update_time_mode
|
||||
local item remark sub_update_week_mode sub_update_time_mode
|
||||
for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do
|
||||
sub_update_week_mode=$(config_n_get $item update_week_mode)
|
||||
if [ -n "$sub_update_week_mode" ]; then
|
||||
cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1)
|
||||
remark=$(config_n_get "$item" remark)
|
||||
sub_update_time_mode=$(config_n_get $item update_time_mode)
|
||||
echo "$cfgid" >> "$TMP_SUB_PATH/${sub_update_week_mode}_${sub_update_time_mode}"
|
||||
echo "$item" >> "$TMP_SUB_PATH/${sub_update_week_mode}_${sub_update_time_mode}"
|
||||
echolog "配置定时任务:自动更新【$remark】订阅。"
|
||||
fi
|
||||
done
|
||||
@@ -1511,8 +1507,13 @@ start_haproxy() {
|
||||
|
||||
acl_app() {
|
||||
local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1)
|
||||
[ -n "$items" ] && {
|
||||
local item
|
||||
if [ -z "$items" ]; then
|
||||
ENABLED_ACLS=0
|
||||
set_cache_var ENABLED_ACLS $ENABLED_ACLS
|
||||
return
|
||||
else
|
||||
local has_enabled
|
||||
local sid
|
||||
local socks_port redir_port dns_port dnsmasq_port chinadns_port
|
||||
local msg msg2
|
||||
socks_port=11100
|
||||
@@ -1520,10 +1521,10 @@ acl_app() {
|
||||
dns_port=11300
|
||||
dnsmasq_port=${GLOBAL_DNSMASQ_PORT:-11400}
|
||||
chinadns_port=11500
|
||||
for item in $items; do
|
||||
local sid=$(uci -q show "${CONFIG}.${item}" | grep "=acl_rule" | awk -F '=' '{print $1}' | awk -F '.' '{print $2}')
|
||||
for sid in $items; do
|
||||
[ "$(config_n_get $sid enabled)" = "1" ] || continue
|
||||
eval $(uci -q show "${CONFIG}.${item}" | cut -d'.' -sf 3-)
|
||||
has_enabled=1
|
||||
eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-)
|
||||
|
||||
log=${log:-0}
|
||||
loglevel=${loglevel:-warning}
|
||||
@@ -1846,7 +1847,11 @@ acl_app() {
|
||||
unset _china_ng_listen _chinadns_local_dns _direct_dns_mode chinadns_ng_default_tag dnsmasq_filter_proxy_ipv6 remote_fakedns force_https_soa use_fakedns
|
||||
done
|
||||
unset socks_port redir_port dns_port dnsmasq_port chinadns_port
|
||||
}
|
||||
[ -n "${has_enabled}" ] || {
|
||||
ENABLED_ACLS=0
|
||||
set_cache_var ENABLED_ACLS $ENABLED_ACLS
|
||||
}
|
||||
fi
|
||||
}
|
||||
|
||||
start() {
|
||||
@@ -1903,8 +1908,7 @@ start() {
|
||||
local cfgids item
|
||||
for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do
|
||||
if [ "$(config_n_get "$item" boot_update 0)" = "1" ]; then
|
||||
local cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1)
|
||||
cfgids="${cfgids:+$cfgids,}$cfgid"
|
||||
cfgids="${cfgids:+$cfgids,}$item"
|
||||
fi
|
||||
done
|
||||
[ -n "$cfgids" ] && {
|
||||
@@ -1994,9 +1998,6 @@ get_config() {
|
||||
done
|
||||
}
|
||||
ENABLED_ACLS=$(config_t_get global acl_enable 0)
|
||||
[ "$ENABLED_ACLS" = 1 ] && {
|
||||
[ "$(uci show ${CONFIG} | grep "@acl_rule" | grep "enabled='1'" | wc -l)" = 0 ] && ENABLED_ACLS=0
|
||||
}
|
||||
set_cache_var ENABLED_DEFAULT_ACL $ENABLED_DEFAULT_ACL
|
||||
set_cache_var ENABLED_ACLS $ENABLED_ACLS
|
||||
|
||||
|
||||
@@ -533,7 +533,7 @@ local function fetch_geofile(geo_name, geo_type, url)
|
||||
local tmp_path = "/tmp/" .. geo_name
|
||||
local asset_path = asset_location .. geo_name
|
||||
local down_filename = url:match("^.*/([^/?#]+)")
|
||||
local sha_url = url:gsub(down_filename, down_filename .. ".sha256sum")
|
||||
local sha_url = url:gsub((down_filename:gsub("(%W)", "%%%1")), down_filename .. ".sha256sum")
|
||||
local sha_path = tmp_path .. ".sha256sum"
|
||||
|
||||
local function verify_sha256(sha_file)
|
||||
|
||||
@@ -41,10 +41,9 @@ do
|
||||
for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do
|
||||
sub_update_week_mode=$(config_n_get $item update_week_mode)
|
||||
if [ -n "$sub_update_week_mode" ]; then
|
||||
cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1)
|
||||
remark=$(config_n_get $item remark)
|
||||
sub_update_interval_mode=$(config_n_get $item update_interval_mode)
|
||||
echo "$cfgid" >> $TMP_SUB_PATH/${sub_update_week_mode}_${sub_update_interval_mode}
|
||||
echo "$item" >> $TMP_SUB_PATH/${sub_update_week_mode}_${sub_update_interval_mode}
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
@@ -393,22 +393,22 @@ end
|
||||
function add_node()
|
||||
local redirect = http.formvalue("redirect")
|
||||
|
||||
local uuid = api.gen_short_uuid()
|
||||
uci:section(appname, "nodes", uuid)
|
||||
local uid = api.gen_random_char()
|
||||
uci:section(appname, "nodes", uid)
|
||||
|
||||
local group = http.formvalue("group")
|
||||
if group and group ~= "default" then
|
||||
uci:set(appname, uuid, "group", group)
|
||||
uci:set(appname, uid, "group", group)
|
||||
end
|
||||
|
||||
uci:set(appname, uuid, "type", "Xray")
|
||||
uci:set(appname, uid, "type", "Xray")
|
||||
|
||||
if redirect == "1" then
|
||||
api.uci_save(uci, appname)
|
||||
http.redirect(api.url("node_config", uuid))
|
||||
http.redirect(api.url("node_config", uid))
|
||||
else
|
||||
api.uci_save(uci, appname, true, true)
|
||||
http_write_json({result = uuid})
|
||||
http_write_json({result = uid})
|
||||
end
|
||||
end
|
||||
|
||||
@@ -423,17 +423,17 @@ end
|
||||
|
||||
function copy_node()
|
||||
local section = http.formvalue("section")
|
||||
local uuid = api.gen_short_uuid()
|
||||
uci:section(appname, "nodes", uuid)
|
||||
local uid = api.gen_random_char()
|
||||
uci:section(appname, "nodes", uid)
|
||||
for k, v in pairs(uci:get_all(appname, section)) do
|
||||
if not k:match("^%.") and k ~= "group" then
|
||||
if k == "remarks" then v = (v or "") .. "(1)" end
|
||||
uci:set(appname, uuid, k, v)
|
||||
uci:set(appname, uid, k, v)
|
||||
end
|
||||
end
|
||||
uci:set(appname, uuid, "add_mode", 1)
|
||||
uci:set(appname, uid, "add_mode", 1)
|
||||
api.uci_save(uci, appname)
|
||||
http.redirect(api.url("node_config", uuid))
|
||||
http.redirect(api.url("node_config", uid))
|
||||
end
|
||||
|
||||
function clear_all_nodes()
|
||||
@@ -999,29 +999,29 @@ function add_shunt_rule()
|
||||
local add_name = http.formvalue("add_name")
|
||||
local redirect = http.formvalue("redirect")
|
||||
|
||||
local uuid = add_name
|
||||
local uid = add_name
|
||||
if add_name then
|
||||
local has = uci:get(appname, uuid)
|
||||
local has = uci:get(appname, uid)
|
||||
if has then
|
||||
http_write_json_error({ message = "This ID already exists." })
|
||||
return
|
||||
end
|
||||
else
|
||||
uuid = api.gen_short_uuid()
|
||||
uid = api.gen_random_char()
|
||||
end
|
||||
uci:section(appname, "shunt_rules", uuid)
|
||||
uci:section(appname, "shunt_rules", uid)
|
||||
|
||||
local group = http.formvalue("group")
|
||||
if group and group ~= "default" then
|
||||
uci:set(appname, uuid, "group", group)
|
||||
uci:set(appname, uid, "group", group)
|
||||
end
|
||||
|
||||
if redirect == "1" then
|
||||
api.uci_save(uci, appname)
|
||||
http.redirect(api.url("shunt_rules", uuid))
|
||||
http.redirect(api.url("shunt_rules", uid))
|
||||
else
|
||||
api.uci_save(uci, appname)
|
||||
http_write_json_ok({uuid = uuid, redirect_url = api.url("shunt_rules", uuid)})
|
||||
http_write_json_ok({uid = uid, redirect_url = api.url("shunt_rules", uid)})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ s.anonymous = true
|
||||
s.addremove = true
|
||||
s.extedit = api.url("acl_config", "%s")
|
||||
function s.create(e, t)
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "acl_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
luci.http.redirect(e.extedit:format(uuid))
|
||||
local uid = "acl_" .. api.gen_random_char(5)
|
||||
TypedSection.create(e, uid)
|
||||
luci.http.redirect(e.extedit:format(uid))
|
||||
end
|
||||
|
||||
---- Enable
|
||||
|
||||
@@ -326,10 +326,9 @@ s2.anonymous = true
|
||||
s2.addremove = true
|
||||
s2.extedit = api.url("socks_config", "%s")
|
||||
function s2.create(e, t)
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "socks_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
luci.http.redirect(e.extedit:format(uuid))
|
||||
local uid = "socks_" .. api.gen_random_char(5)
|
||||
TypedSection.create(e, uid)
|
||||
luci.http.redirect(e.extedit:format(uid))
|
||||
end
|
||||
|
||||
o = s2:option(DummyValue, "status", translate("Status"))
|
||||
|
||||
@@ -113,9 +113,8 @@ s.anonymous = true
|
||||
s.addremove = true
|
||||
|
||||
s.create = function(e, t)
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "haproxy_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
local uid = "haproxy_" .. api.gen_random_char(5)
|
||||
TypedSection.create(e, uid)
|
||||
end
|
||||
|
||||
s.remove = function(self, section)
|
||||
|
||||
@@ -134,12 +134,11 @@ s.sortable = true
|
||||
s.template = "cbi/tblsection"
|
||||
s.extedit = api.url("node_subscribe_config", "%s")
|
||||
function s.create(e, t)
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "sub_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
m:set(uuid, "hysteria_up_mbps", "100")
|
||||
m:set(uuid, "hysteria_down_mbps", "100")
|
||||
luci.http.redirect(e.extedit:format(uuid))
|
||||
local uid = "sub_" .. api.gen_random_char(5)
|
||||
TypedSection.create(e, uid)
|
||||
m:set(uid, "hysteria_up_mbps", "100")
|
||||
m:set(uid, "hysteria_down_mbps", "100")
|
||||
luci.http.redirect(e.extedit:format(uid))
|
||||
end
|
||||
|
||||
o = s:option(Value, "remark", translate("Remarks"))
|
||||
|
||||
@@ -263,9 +263,8 @@ if has_xray then
|
||||
s_xray_noise.addremove = true
|
||||
|
||||
s_xray_noise.create = function(e, t)
|
||||
local uuid = api.gen_short_uuid(5)
|
||||
uuid = "xray_noise_" .. uuid
|
||||
TypedSection.create(e, uuid)
|
||||
local uid = "xray_noise_" .. api.gen_random_char(5)
|
||||
TypedSection.create(e, uid)
|
||||
end
|
||||
|
||||
s_xray_noise.remove = function(self, section)
|
||||
|
||||
@@ -21,10 +21,9 @@ t.sortable = true
|
||||
t.template = "cbi/tblsection"
|
||||
t.extedit = api.url("server_user", "%s")
|
||||
function t.create(e, t)
|
||||
local uuid = api.gen_uuid()
|
||||
t = uuid
|
||||
TypedSection.create(e, t)
|
||||
luci.http.redirect(e.extedit:format(t))
|
||||
local uid = api.gen_random_char()
|
||||
TypedSection.create(e, uid)
|
||||
luci.http.redirect(e.extedit:format(uid))
|
||||
end
|
||||
function t.remove(e, t)
|
||||
e.map.proceed = true
|
||||
|
||||
@@ -111,7 +111,7 @@ o:depends({ [_n("protocol")] = "socks" })
|
||||
|
||||
o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password"))
|
||||
for i = 1, 3 do
|
||||
o:value(api.gen_uuid(1))
|
||||
o:value(api.gen_uuid())
|
||||
end
|
||||
o:depends({ [_n("protocol")] = "vmess" })
|
||||
o:depends({ [_n("protocol")] = "vless" })
|
||||
|
||||
@@ -235,7 +235,7 @@ o:depends({ [_n("protocol")] = "shadowsocks" })
|
||||
|
||||
o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password"))
|
||||
for i = 1, 3 do
|
||||
o:value(api.gen_uuid(1))
|
||||
o:value(api.gen_uuid())
|
||||
end
|
||||
o:depends({ [_n("protocol")] = "vmess" })
|
||||
o:depends({ [_n("protocol")] = "vless" })
|
||||
|
||||
@@ -669,15 +669,12 @@ function get_full_node_remarks(n)
|
||||
return remarks
|
||||
end
|
||||
|
||||
function gen_uuid(format)
|
||||
function gen_uuid()
|
||||
local uuid = sys.exec("echo -n $(cat /proc/sys/kernel/random/uuid)")
|
||||
if format == nil then
|
||||
uuid = string.gsub(uuid, "-", "")
|
||||
end
|
||||
return uuid
|
||||
end
|
||||
|
||||
function gen_short_uuid(length)
|
||||
function gen_random_char(length)
|
||||
if not length then length = 8 end
|
||||
return sys.exec("echo -n $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c %s)" % length)
|
||||
end
|
||||
|
||||
@@ -168,9 +168,9 @@ do
|
||||
local flag = i18n.translatef("Socks node list [%s]", i) .. " " .. i18n.translatef("Backup node list")
|
||||
local currentNodes = {}
|
||||
local newNodes = {}
|
||||
for k, asb_node in ipairs(t.autoswitch_backup_node) do
|
||||
if asb_node then
|
||||
local currentNode = uci:get_all(appname, asb_node) or {}
|
||||
for k, asb_node_id in ipairs(t.autoswitch_backup_node) do
|
||||
if asb_node_id then
|
||||
local currentNode = uci:get_all(appname, asb_node_id) or {}
|
||||
if currentNode[".type"] == "nodes" then
|
||||
currentNodes[#currentNodes + 1] = {
|
||||
log = true,
|
||||
@@ -277,7 +277,7 @@ do
|
||||
for k, e in pairs(rules) do
|
||||
local _node_id = node[e[".name"]] or nil
|
||||
if _node_id then
|
||||
local section = uci:get_all(appname, node_id) or {}
|
||||
local section = uci:get_all(appname, _node_id) or {}
|
||||
if section[".type"] == "nodes" then
|
||||
CONFIG[#CONFIG + 1] = {
|
||||
log = false,
|
||||
@@ -2274,7 +2274,7 @@ local function update_node(manual)
|
||||
chain_node_type = (outbound_iface_group ~= "") and "iface" or chain_node_type
|
||||
end
|
||||
for _, vv in ipairs(list) do
|
||||
local cfgid = uci:section(appname, "nodes", api.gen_short_uuid())
|
||||
local cfgid = uci:section(appname, "nodes", api.gen_random_char())
|
||||
for kkk, vvv in pairs(vv) do
|
||||
if type(vvv) == "table" and next(vvv) ~= nil then
|
||||
uci:set_list(appname, cfgid, kkk, vvv)
|
||||
|
||||
Reference in New Issue
Block a user