mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-26 20:21:35 +08:00
Update On Thu Aug 21 20:41:19 CEST 2025
This commit is contained in:
@@ -861,8 +861,8 @@ return view.extend({
|
||||
|
||||
so = ss.taboption('direct_list', hm.TextValue, 'direct_list.yaml', null);
|
||||
so.rows = 20;
|
||||
so.default = 'FQDN:\nIPCIDR:\nIPCIDR6:\n';
|
||||
so.placeholder = "FQDN:\n- mask.icloud.com\n- mask-h2.icloud.com\n- mask.apple-dns.net\nIPCIDR:\n- '223.0.0.0/12'\nIPCIDR6:\n- '2400:3200::/32'\n";
|
||||
so.default = 'DOMAIN:\nIPCIDR:\nIPCIDR6:\n';
|
||||
so.placeholder = "DOMAIN:\n- mask.icloud.com\n- mask-h2.icloud.com\n- mask.apple-dns.net\nIPCIDR:\n- '223.0.0.0/12'\nIPCIDR6:\n- '2400:3200::/32'\n";
|
||||
so.load = function(section_id) {
|
||||
return L.resolveDefault(hm.readFile('resources', this.option), '');
|
||||
}
|
||||
@@ -879,8 +879,8 @@ return view.extend({
|
||||
|
||||
so = ss.taboption('proxy_list', hm.TextValue, 'proxy_list.yaml', null);
|
||||
so.rows = 20;
|
||||
so.default = 'FQDN:\nIPCIDR:\nIPCIDR6:\n';
|
||||
so.placeholder = "FQDN:\n- www.google.com\nIPCIDR:\n- '91.105.192.0/23'\nIPCIDR6:\n- '2001:67c:4e8::/48'\n";
|
||||
so.default = 'DOMAIN:\nIPCIDR:\nIPCIDR6:\n';
|
||||
so.placeholder = "DOMAIN:\n- www.google.com\n- '.googlevideo.com'\n- google.com\nIPCIDR:\n- '91.105.192.0/23'\nIPCIDR6:\n- '2001:67c:4e8::/48'\n";
|
||||
so.load = function(section_id) {
|
||||
return L.resolveDefault(hm.readFile('resources', this.option), '');
|
||||
}
|
||||
|
@@ -186,7 +186,7 @@ start_service() {
|
||||
local yaml="$5"
|
||||
|
||||
if [ -n "$yaml" ]; then
|
||||
yq '.[] |= with(select(. == null); . = []) | .FQDN[]' "$src" | \
|
||||
yq '.[] |= with(select(. == null); . = []) | .DOMAIN[]' "$src" | \
|
||||
sed "s|^|nftset=/|;s|$|/${family}#inet#fchomo#${set_name}|" > "$dst"
|
||||
else
|
||||
sed "s|^|nftset=/|;s|$|/${family}#inet#fchomo#${set_name}|" "$src" > "$dst"
|
||||
|
@@ -14,7 +14,7 @@ fi
|
||||
# Initialize the default direct list
|
||||
if [ ! -s "/etc/fchomo/resources/direct_list.yaml" ]; then
|
||||
cat <<- EOF > "/etc/fchomo/resources/direct_list.yaml"
|
||||
FQDN:
|
||||
DOMAIN:
|
||||
IPCIDR:
|
||||
- '223.0.0.0/12'
|
||||
IPCIDR6:
|
||||
@@ -25,8 +25,10 @@ fi
|
||||
# Initialize the default proxy list
|
||||
if [ ! -s "/etc/fchomo/resources/proxy_list.yaml" ]; then
|
||||
cat <<- EOF > "/etc/fchomo/resources/proxy_list.yaml"
|
||||
FQDN:
|
||||
DOMAIN:
|
||||
- www.google.com
|
||||
- '.googlevideo.com'
|
||||
- google.com
|
||||
IPCIDR:
|
||||
- '91.105.192.0/23'
|
||||
- '91.108.4.0/22'
|
||||
|
@@ -1,5 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
sed -i 's|^FQDN:$|DOMAIN:|' "/etc/fchomo/resources/direct_list.yaml"
|
||||
sed -i 's|^FQDN:$|DOMAIN:|' "/etc/fchomo/resources/proxy_list.yaml"
|
||||
|
||||
default_proxy=$(uci -q get fchomo.routing.default_proxy)
|
||||
if [ -n "$default_proxy" ]; then
|
||||
uci -q batch <<-EOF >"/dev/null"
|
||||
|
@@ -107,6 +107,9 @@ return baseclass.extend({
|
||||
const profile = await callNikkiProfile({ 'external-controller': null, 'secret': null });
|
||||
const apiListen = profile['external-controller'];
|
||||
const apiSecret = profile['secret'] ?? '';
|
||||
if (!apiListen) {
|
||||
return Promise.reject('API has not been configured');
|
||||
}
|
||||
const apiPort = apiListen.substring(apiListen.lastIndexOf(':') + 1);
|
||||
const url = `http://${window.location.hostname}:${apiPort}${path}`;
|
||||
return request.request(url, {
|
||||
@@ -114,7 +117,7 @@ return baseclass.extend({
|
||||
headers: { 'Authorization': `Bearer ${apiSecret}` },
|
||||
query: query,
|
||||
content: body
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
openDashboard: async function () {
|
||||
@@ -122,6 +125,9 @@ return baseclass.extend({
|
||||
const uiName = profile['external-ui-name'];
|
||||
const apiListen = profile['external-controller'];
|
||||
const apiSecret = profile['secret'] ?? '';
|
||||
if (!apiListen) {
|
||||
return Promise.reject('API has not been configured');
|
||||
}
|
||||
const apiPort = apiListen.substring(apiListen.lastIndexOf(':') + 1);
|
||||
const params = {
|
||||
host: window.location.hostname,
|
||||
@@ -137,6 +143,7 @@ return baseclass.extend({
|
||||
url = `http://${window.location.hostname}:${apiPort}/ui/?${query}`;
|
||||
}
|
||||
setTimeout(function () { window.open(url, '_blank') }, 0);
|
||||
return Promise.resolve();
|
||||
},
|
||||
|
||||
updateDashboard: function () {
|
||||
|
@@ -58,7 +58,8 @@ for k, e in ipairs(api.get_valid_nodes()) do
|
||||
nodes_table[#nodes_table + 1] = {
|
||||
id = e[".name"],
|
||||
remark = e["remark"],
|
||||
type = e["type"]
|
||||
type = e["type"],
|
||||
chain_proxy = e["chain_proxy"]
|
||||
}
|
||||
end
|
||||
if e.protocol == "_balancing" then
|
||||
@@ -696,7 +697,7 @@ o = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Onl
|
||||
o:depends({ [_n("chain_proxy")] = "2" })
|
||||
|
||||
for k, v in pairs(nodes_table) do
|
||||
if v.type == "Xray" and v.id ~= arg[1] then
|
||||
if v.type == "Xray" and v.id ~= arg[1] and (not v.chain_proxy or v.chain_proxy == "") then
|
||||
s.fields[_n("preproxy_node")]:value(v.id, v.remark)
|
||||
s.fields[_n("to_node")]:value(v.id, v.remark)
|
||||
end
|
||||
|
@@ -75,7 +75,8 @@ for k, e in ipairs(api.get_valid_nodes()) do
|
||||
nodes_table[#nodes_table + 1] = {
|
||||
id = e[".name"],
|
||||
remark = e["remark"],
|
||||
type = e["type"]
|
||||
type = e["type"],
|
||||
chain_proxy = e["chain_proxy"]
|
||||
}
|
||||
end
|
||||
if e.protocol == "_iface" then
|
||||
@@ -753,7 +754,7 @@ o = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Onl
|
||||
o:depends({ [_n("chain_proxy")] = "2" })
|
||||
|
||||
for k, v in pairs(nodes_table) do
|
||||
if v.type == "sing-box" and v.id ~= arg[1] then
|
||||
if v.type == "sing-box" and v.id ~= arg[1] and (not v.chain_proxy or v.chain_proxy == "") then
|
||||
s.fields[_n("preproxy_node")]:value(v.id, v.remark)
|
||||
s.fields[_n("to_node")]:value(v.id, v.remark)
|
||||
end
|
||||
|
@@ -38,11 +38,13 @@ config mixin 'mixin'
|
||||
option 'redir_port' '7891'
|
||||
option 'tproxy_port' '7892'
|
||||
option 'authentication' '1'
|
||||
option 'tun_enabled' '1'
|
||||
option 'tun_device' 'nikki'
|
||||
option 'tun_stack' 'mixed'
|
||||
option 'tun_dns_hijack' '0'
|
||||
list 'tun_dns_hijacks' 'tcp://any:53'
|
||||
list 'tun_dns_hijacks' 'udp://any:53'
|
||||
option 'dns_enabled' '1'
|
||||
option 'dns_listen' '[::]:1053'
|
||||
option 'dns_ipv6' '1'
|
||||
option 'dns_mode' 'fake-ip'
|
||||
|
@@ -6,12 +6,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=sing-box
|
||||
PKG_VERSION:=1.12.2
|
||||
PKG_VERSION:=1.12.3
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=95d902c008ed0b414ab29408dc565310fffe435a15753e02d10ca5c8e6837ce5
|
||||
PKG_HASH:=3dce8ee383655908451f7f193714f0c8f90b8fd4baecb8e7e3948d263d766359
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
@@ -21,13 +21,13 @@ define Download/geoip
|
||||
HASH:=54761d8691a5756fdb08d2cd4d0a9c889dbaab786e1cf758592e09fb00377f53
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20250820044243
|
||||
GEOSITE_VER:=20250821075639
|
||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||
define Download/geosite
|
||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||
URL_FILE:=dlc.dat
|
||||
FILE:=$(GEOSITE_FILE)
|
||||
HASH:=08eaf7b6e93ff4422eac2919673ec53f5840643ab318e891981e0f3bd51100f9
|
||||
HASH:=b35fcc137b86b4db2ef23919a05c7f90267dc4783186b4e416ff10213cc62ff5
|
||||
endef
|
||||
|
||||
GEOSITE_IRAN_VER:=202508180044
|
||||
|
Reference in New Issue
Block a user