mirror of
https://github.com/mack-a/v2ray-agent.git
synced 2026-09-02 13:56:37 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11da068e9a | ||
|
|
7b151c9623 | ||
|
|
89388ca675 | ||
|
|
8cf91bb313 |
@@ -4,6 +4,12 @@
|
|||||||
"level": "info",
|
"level": "info",
|
||||||
"timestamp": true
|
"timestamp": true
|
||||||
},
|
},
|
||||||
|
"http_clients": [
|
||||||
|
{
|
||||||
|
"tag": "rule_set_http",
|
||||||
|
"detour": "本地直连"
|
||||||
|
}
|
||||||
|
],
|
||||||
"experimental": {
|
"experimental": {
|
||||||
"clash_api": {
|
"clash_api": {
|
||||||
"external_controller": "127.0.0.1:9090",
|
"external_controller": "127.0.0.1:9090",
|
||||||
@@ -73,7 +79,6 @@
|
|||||||
"server": "dns_proxy"
|
"server": "dns_proxy"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"independent_cache": true,
|
|
||||||
"strategy": "prefer_ipv4",
|
"strategy": "prefer_ipv4",
|
||||||
"final": "dns_direct"
|
"final": "dns_direct"
|
||||||
},
|
},
|
||||||
@@ -210,6 +215,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"route": {
|
"route": {
|
||||||
|
"default_http_client": "rule_set_http",
|
||||||
"default_domain_resolver": {
|
"default_domain_resolver": {
|
||||||
"server": "dns_resolver",
|
"server": "dns_resolver",
|
||||||
"strategy": "prefer_ipv4"
|
"strategy": "prefer_ipv4"
|
||||||
@@ -458,4 +464,3 @@
|
|||||||
"auto_detect_interface": true
|
"auto_detect_interface": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+56
-48
@@ -476,6 +476,8 @@ readInstallProtocolType() {
|
|||||||
xrayVLESSRealityXHTTPServerName=$(jq -r .inbounds[0].streamSettings.realitySettings.serverNames[0] "${row}.json")
|
xrayVLESSRealityXHTTPServerName=$(jq -r .inbounds[0].streamSettings.realitySettings.serverNames[0] "${row}.json")
|
||||||
|
|
||||||
currentRealityXHTTPPublicKey=$(jq -r .inbounds[0].streamSettings.realitySettings.publicKey "${row}.json")
|
currentRealityXHTTPPublicKey=$(jq -r .inbounds[0].streamSettings.realitySettings.publicKey "${row}.json")
|
||||||
|
currentRealityMldsa65Seed=$(jq -r '.inbounds[0].streamSettings.realitySettings.mldsa65Seed // empty' "${row}.json")
|
||||||
|
currentRealityMldsa65Verify=$(jq -r '.inbounds[0].streamSettings.realitySettings.mldsa65Verify // empty' "${row}.json")
|
||||||
# currentRealityXHTTPPrivateKey=$(jq -r .inbounds[0].streamSettings.realitySettings.privateKey "${row}.json")
|
# currentRealityXHTTPPrivateKey=$(jq -r .inbounds[0].streamSettings.realitySettings.privateKey "${row}.json")
|
||||||
|
|
||||||
# if [[ "${coreInstallType}" == "2" ]]; then
|
# if [[ "${coreInstallType}" == "2" ]]; then
|
||||||
@@ -523,8 +525,8 @@ readInstallProtocolType() {
|
|||||||
currentRealityPublicKey=$(jq -r .inbounds[1].streamSettings.realitySettings.publicKey "${row}.json")
|
currentRealityPublicKey=$(jq -r .inbounds[1].streamSettings.realitySettings.publicKey "${row}.json")
|
||||||
currentRealityPrivateKey=$(jq -r .inbounds[1].streamSettings.realitySettings.privateKey "${row}.json")
|
currentRealityPrivateKey=$(jq -r .inbounds[1].streamSettings.realitySettings.privateKey "${row}.json")
|
||||||
|
|
||||||
currentRealityMldsa65Seed=$(jq -r .inbounds[1].streamSettings.realitySettings.mldsa65Seed "${row}.json")
|
currentRealityMldsa65Seed=$(jq -r '.inbounds[1].streamSettings.realitySettings.mldsa65Seed // empty' "${row}.json")
|
||||||
currentRealityMldsa65Verify=$(jq -r .inbounds[1].streamSettings.realitySettings.mldsa65Verify "${row}.json")
|
currentRealityMldsa65Verify=$(jq -r '.inbounds[1].streamSettings.realitySettings.mldsa65Verify // empty' "${row}.json")
|
||||||
|
|
||||||
frontingTypeReality=07_VLESS_vision_reality_inbounds
|
frontingTypeReality=07_VLESS_vision_reality_inbounds
|
||||||
|
|
||||||
@@ -3290,43 +3292,6 @@ initTuicProtocol() {
|
|||||||
#EOF
|
#EOF
|
||||||
#}
|
#}
|
||||||
|
|
||||||
# 初始化singbox route配置
|
|
||||||
initSingBoxRouteConfig() {
|
|
||||||
downloadSingBoxGeositeDB
|
|
||||||
local outboundTag=$1
|
|
||||||
if [[ ! -f "${singBoxConfigPath}${outboundTag}_route.json" ]]; then
|
|
||||||
cat <<EOF >"${singBoxConfigPath}${outboundTag}_route.json"
|
|
||||||
{
|
|
||||||
"route": {
|
|
||||||
"geosite": {
|
|
||||||
"path": "${singBoxConfigPath}geosite.db"
|
|
||||||
},
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"domain": [
|
|
||||||
],
|
|
||||||
"geosite": [
|
|
||||||
],
|
|
||||||
"outbound": "${outboundTag}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# 下载sing-box geosite db
|
|
||||||
downloadSingBoxGeositeDB() {
|
|
||||||
if [[ ! -f "${singBoxConfigPath}geosite.db" ]]; then
|
|
||||||
if [[ "${release}" == "alpine" ]]; then
|
|
||||||
wget -q -P "${singBoxConfigPath}" https://github.com/Johnshall/sing-geosite/releases/latest/download/geosite.db
|
|
||||||
else
|
|
||||||
wget -q "${wgetShowProgressStatus}" -P "${singBoxConfigPath}" https://github.com/Johnshall/sing-geosite/releases/latest/download/geosite.db
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 添加sing-box路由规则
|
# 添加sing-box路由规则
|
||||||
addSingBoxRouteRule() {
|
addSingBoxRouteRule() {
|
||||||
local outboundTag=$1
|
local outboundTag=$1
|
||||||
@@ -4043,6 +4008,9 @@ EOF
|
|||||||
],
|
],
|
||||||
"privateKey": "${realityPrivateKey}",
|
"privateKey": "${realityPrivateKey}",
|
||||||
"publicKey": "${realityPublicKey}",
|
"publicKey": "${realityPublicKey}",
|
||||||
|
"mldsa65Seed": "${realityMldsa65Seed}",
|
||||||
|
"mldsa65Verify": "${realityMldsa65Verify}",
|
||||||
|
"minClientVer": "1.8.2",
|
||||||
"maxTimeDiff": 70000,
|
"maxTimeDiff": 70000,
|
||||||
"shortIds": [
|
"shortIds": [
|
||||||
"",
|
"",
|
||||||
@@ -4211,6 +4179,7 @@ EOF
|
|||||||
"publicKey": "${realityPublicKey}",
|
"publicKey": "${realityPublicKey}",
|
||||||
"mldsa65Seed": "${realityMldsa65Seed}",
|
"mldsa65Seed": "${realityMldsa65Seed}",
|
||||||
"mldsa65Verify": "${realityMldsa65Verify}",
|
"mldsa65Verify": "${realityMldsa65Verify}",
|
||||||
|
"minClientVer": "1.8.2",
|
||||||
"maxTimeDiff": 70000,
|
"maxTimeDiff": 70000,
|
||||||
"shortIds": [
|
"shortIds": [
|
||||||
"",
|
"",
|
||||||
@@ -4897,13 +4866,20 @@ EOF
|
|||||||
|
|
||||||
elif [[ "${type}" == "vlessXHTTP" ]]; then
|
elif [[ "${type}" == "vlessXHTTP" ]]; then
|
||||||
|
|
||||||
|
local xhttpMldsa65Param=
|
||||||
|
local xhttpMldsa65ParamEncoded=
|
||||||
|
if [[ -n "${currentRealityMldsa65Verify}" && "${currentRealityMldsa65Verify}" != "null" ]]; then
|
||||||
|
xhttpMldsa65Param="&pqv=${currentRealityMldsa65Verify}"
|
||||||
|
xhttpMldsa65ParamEncoded="%26pqv%3D${currentRealityMldsa65Verify}"
|
||||||
|
fi
|
||||||
|
|
||||||
echoContent yellow " ---> 通用格式(VLESS+reality+XHTTP)"
|
echoContent yellow " ---> 通用格式(VLESS+reality+XHTTP)"
|
||||||
echoContent green " vless://${id}@${add}:${port}?encryption=none&security=reality&type=xhttp&sni=${xrayVLESSRealityXHTTPServerName}&host=${xrayVLESSRealityXHTTPServerName}&fp=chrome&path=${path}&pbk=${currentRealityXHTTPPublicKey}&sid=6ba85179e30d4fc2#${email}\n"
|
echoContent green " vless://${id}@${add}:${port}?encryption=none&security=reality${xhttpMldsa65Param}&type=xhttp&sni=${xrayVLESSRealityXHTTPServerName}&host=${xrayVLESSRealityXHTTPServerName}&fp=chrome&path=${path}&pbk=${currentRealityXHTTPPublicKey}&sid=6ba85179e30d4fc2#${email}\n"
|
||||||
|
|
||||||
echoContent yellow " ---> 格式化明文(VLESS+reality+XHTTP)"
|
echoContent yellow " ---> 格式化明文(VLESS+reality+XHTTP)"
|
||||||
echoContent green "协议类型:VLESS reality,地址:${add},publicKey:${currentRealityXHTTPPublicKey},shortId: 6ba85179e30d4fc2,serverNames:${xrayVLESSRealityXHTTPServerName},端口:${port},路径:${path},SNI:${xrayVLESSRealityXHTTPServerName},伪装域名:${xrayVLESSRealityXHTTPServerName},用户ID:${id},传输方式:xhttp,账户名:${email}\n"
|
echoContent green "协议类型:VLESS reality,地址:${add},publicKey:${currentRealityXHTTPPublicKey},shortId: 6ba85179e30d4fc2,serverNames:${xrayVLESSRealityXHTTPServerName},端口:${port},路径:${path},SNI:${xrayVLESSRealityXHTTPServerName},伪装域名:${xrayVLESSRealityXHTTPServerName},用户ID:${id},传输方式:xhttp,账户名:${email}\n"
|
||||||
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/default/${user}"
|
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/default/${user}"
|
||||||
vless://${id}@${add}:${port}?encryption=none&security=reality&type=xhttp&sni=${xrayVLESSRealityXHTTPServerName}&fp=chrome&path=${path}&pbk=${currentRealityXHTTPPublicKey}&sid=6ba85179e30d4fc2#${email}
|
vless://${id}@${add}:${port}?encryption=none&security=reality${xhttpMldsa65Param}&type=xhttp&sni=${xrayVLESSRealityXHTTPServerName}&fp=chrome&path=${path}&pbk=${currentRealityXHTTPPublicKey}&sid=6ba85179e30d4fc2#${email}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/clashMeta/${user}"
|
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/clashMeta/${user}"
|
||||||
@@ -4928,7 +4904,7 @@ EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
echoContent yellow " ---> 二维码 VLESS(VLESS+reality+XHTTP)"
|
echoContent yellow " ---> 二维码 VLESS(VLESS+reality+XHTTP)"
|
||||||
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40${add}%3A${port}%3Fencryption%3Dnone%26security%3Dreality%26type%3Dxhttp%26sni%3D${xrayVLESSRealityXHTTPServerName}%26fp%3Dchrome%26path%3D${path}%26host%3D${xrayVLESSRealityXHTTPServerName}%26pbk%3D${currentRealityXHTTPPublicKey}%26sid%3D6ba85179e30d4fc2%23${email}\n"
|
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40${add}%3A${port}%3Fencryption%3Dnone%26security%3Dreality${xhttpMldsa65ParamEncoded}%26type%3Dxhttp%26sni%3D${xrayVLESSRealityXHTTPServerName}%26fp%3Dchrome%26path%3D${path}%26host%3D${xrayVLESSRealityXHTTPServerName}%26pbk%3D${currentRealityXHTTPPublicKey}%26sid%3D6ba85179e30d4fc2%23${email}\n"
|
||||||
|
|
||||||
elif
|
elif
|
||||||
[[ "${type}" == "vlessgrpc" ]]
|
[[ "${type}" == "vlessgrpc" ]]
|
||||||
@@ -6901,7 +6877,7 @@ getDLCGeositeName() {
|
|||||||
escapedInput=$(escapeDLCRegexPattern "${normalizedInput}")
|
escapedInput=$(escapeDLCRegexPattern "${normalizedInput}")
|
||||||
|
|
||||||
local matchedLine=
|
local matchedLine=
|
||||||
matchedLine=$(grep -n -m1 -E "^[[:space:]]*-[[:space:]]*name:[[:space:]]*${escapedInput}[[:space:]]*$" "${dlcFilePath}")
|
matchedLine=$(grep -n -m1 -E "^[[:space:]]*-[[:space:]]*name:[[:space:]]*\"?${escapedInput}\"?[[:space:]]*$" "${dlcFilePath}")
|
||||||
if [[ -n "${matchedLine}" ]]; then
|
if [[ -n "${matchedLine}" ]]; then
|
||||||
echo "${normalizedInput}"
|
echo "${normalizedInput}"
|
||||||
fi
|
fi
|
||||||
@@ -7105,7 +7081,7 @@ addSingBoxGeoIPRouteRule() {
|
|||||||
"type": "remote",
|
"type": "remote",
|
||||||
"format": "binary",
|
"format": "binary",
|
||||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-${geoipCode}.srs",
|
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-${geoipCode}.srs",
|
||||||
"download_detour": "01_direct_outbound"
|
"http_client": "rule_set_http"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -7798,7 +7774,7 @@ initSingBoxRules() {
|
|||||||
matchedRuleName=$(getDLCGeositeName "${normalizedLine}" "/etc/v2ray-agent/sing-box")
|
matchedRuleName=$(getDLCGeositeName "${normalizedLine}" "/etc/v2ray-agent/sing-box")
|
||||||
|
|
||||||
if [[ -n "${matchedRuleName}" ]]; then
|
if [[ -n "${matchedRuleName}" ]]; then
|
||||||
ruleSet=$(echo "${ruleSet}" | jq -r ". += [{\"tag\":\"${matchedRuleName}_$2\",\"type\":\"remote\",\"format\":\"binary\",\"url\":\"https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-${matchedRuleName}.srs\",\"download_detour\":\"01_direct_outbound\"}]")
|
ruleSet=$(echo "${ruleSet}" | jq -r ". += [{\"tag\":\"${matchedRuleName}_$2\",\"type\":\"remote\",\"format\":\"binary\",\"url\":\"https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-${matchedRuleName}.srs\",\"http_client\":\"rule_set_http\"}]")
|
||||||
else
|
else
|
||||||
domainRules=$(echo "${domainRules}" | jq -r --arg reg "^([a-zA-Z0-9_-]+\\.)*${normalizedLine//./\\.}" '. += [$reg]')
|
domainRules=$(echo "${domainRules}" | jq -r --arg reg "^([a-zA-Z0-9_-]+\\.)*${normalizedLine//./\\.}" '. += [$reg]')
|
||||||
fi
|
fi
|
||||||
@@ -7870,13 +7846,44 @@ setSocks5InboundRouting() {
|
|||||||
|
|
||||||
# 设置sniff routing规则
|
# 设置sniff routing规则
|
||||||
setSniffRouting() {
|
setSniffRouting() {
|
||||||
|
local singBoxDNSConfigPath="/etc/v2ray-agent/sing-box/conf/config/dns.json"
|
||||||
|
if [[ -f "${singBoxDNSConfigPath}" ]]; then
|
||||||
|
jq '
|
||||||
|
.dns.servers = (.dns.servers // [])
|
||||||
|
| if any(.dns.servers[]?; .tag == "local") then .
|
||||||
|
elif any(.dns.servers[]?; .type == "local" and ((.tag // "") == "")) then
|
||||||
|
.dns.servers |= map(if .type == "local" and ((.tag // "") == "") then .tag = "local" else . end)
|
||||||
|
else
|
||||||
|
.dns.servers += [{"tag": "local", "type": "local"}]
|
||||||
|
end
|
||||||
|
' "${singBoxDNSConfigPath}" >"${singBoxDNSConfigPath}.tmp" && mv "${singBoxDNSConfigPath}.tmp" "${singBoxDNSConfigPath}"
|
||||||
|
else
|
||||||
|
cat <<EOF >"${singBoxDNSConfigPath}"
|
||||||
|
{
|
||||||
|
"dns": {
|
||||||
|
"servers": [
|
||||||
|
{
|
||||||
|
"tag": "local",
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
cat <<EOF >"/etc/v2ray-agent/sing-box/conf/config/sniff.json"
|
cat <<EOF >"/etc/v2ray-agent/sing-box/conf/config/sniff.json"
|
||||||
{
|
{
|
||||||
"route":{
|
"route":{
|
||||||
|
"default_domain_resolver": "local",
|
||||||
"rules":[
|
"rules":[
|
||||||
{
|
{
|
||||||
"action": "sniff",
|
"action": "sniff",
|
||||||
"timeout": "1s"
|
"timeout": "1s"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"protocol": "dns",
|
||||||
|
"action": "hijack-dns"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -8326,6 +8333,7 @@ EOF
|
|||||||
"dns": {
|
"dns": {
|
||||||
"servers":[
|
"servers":[
|
||||||
{
|
{
|
||||||
|
"tag":"local",
|
||||||
"type":"local"
|
"type":"local"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -9594,7 +9602,7 @@ initRealityMldsa65() {
|
|||||||
length=$(/etc/v2ray-agent/xray/xray tls ping "${realityServerName}:${realityDomainPort}" | grep "Certificate chain's total length:" | awk '{print $5}' | head -1)
|
length=$(/etc/v2ray-agent/xray/xray tls ping "${realityServerName}:${realityDomainPort}" | grep "Certificate chain's total length:" | awk '{print $5}' | head -1)
|
||||||
|
|
||||||
if [ "$length" -gt 3500 ]; then
|
if [ "$length" -gt 3500 ]; then
|
||||||
if [[ -n "${currentRealityMldsa65}" && -z "${lastInstallationConfig}" ]]; then
|
if [[ -n "${currentRealityMldsa65Seed}" && -z "${lastInstallationConfig}" ]]; then
|
||||||
read -r -p "读取到上次安装记录,是否使用上次安装时的Seed/Verify ?[y/n]:" historyMldsa65Status
|
read -r -p "读取到上次安装记录,是否使用上次安装时的Seed/Verify ?[y/n]:" historyMldsa65Status
|
||||||
if [[ "${historyMldsa65Status}" == "y" ]]; then
|
if [[ "${historyMldsa65Status}" == "y" ]]; then
|
||||||
realityMldsa65Seed=${currentRealityMldsa65Seed}
|
realityMldsa65Seed=${currentRealityMldsa65Seed}
|
||||||
@@ -9645,7 +9653,7 @@ initRealityClientServersName() {
|
|||||||
if [[ "${coreInstallType}" == "1" || "${selectCoreType}" == "1" ]]; then
|
if [[ "${coreInstallType}" == "1" || "${selectCoreType}" == "1" ]]; then
|
||||||
realityDestDomainList="download-installer.cdn.mozilla.net,addons.mozilla.org,s0.awsstatic.com,d1.awsstatic.com,images-na.ssl-images-amazon.com,m.media-amazon.com,player.live-video.net,one-piece.com,lol.secure.dyn.riotcdn.net,www.lovelive-anime.jp,academy.nvidia.com,dl.google.com,www.google-analytics.com,www.caltech.edu,www.calstatela.edu,www.suny.edu,www.suffolk.edu,www.python.org,vuejs-jp.org,vuejs.org,zh-hk.vuejs.org,react.dev,www.java.com,www.oracle.com,www.mysql.com,www.mongodb.com,redis.io,cname.vercel-dns.com,vercel-dns.com,www.swift.com,academy.nvidia.com,www.swift.com,www.cisco.com,www.asus.com,www.samsung.com,www.amd.com,www.umcg.nl,www.fom-international.com,www.u-can.co.jp,github.io"
|
realityDestDomainList="download-installer.cdn.mozilla.net,addons.mozilla.org,s0.awsstatic.com,d1.awsstatic.com,images-na.ssl-images-amazon.com,m.media-amazon.com,player.live-video.net,one-piece.com,lol.secure.dyn.riotcdn.net,www.lovelive-anime.jp,academy.nvidia.com,dl.google.com,www.google-analytics.com,www.caltech.edu,www.calstatela.edu,www.suny.edu,www.suffolk.edu,www.python.org,vuejs-jp.org,vuejs.org,zh-hk.vuejs.org,react.dev,www.java.com,www.oracle.com,www.mysql.com,www.mongodb.com,redis.io,cname.vercel-dns.com,vercel-dns.com,www.swift.com,academy.nvidia.com,www.swift.com,www.cisco.com,www.asus.com,www.samsung.com,www.amd.com,www.umcg.nl,www.fom-international.com,www.u-can.co.jp,github.io"
|
||||||
elif [[ "${coreInstallType}" == "2" || "${selectCoreType}" == "2" ]]; then
|
elif [[ "${coreInstallType}" == "2" || "${selectCoreType}" == "2" ]]; then
|
||||||
realityDestDomainList="download-installer.cdn.mozilla.net,addons.mozilla.org,s0.awsstatic.com,d1.awsstatic.com,images-na.ssl-images-amazon.com,m.media-amazon.com,player.live-video.net,one-piece.com,lol.secure.dyn.riotcdn.net,www.lovelive-anime.jp,academy.nvidia.com,dl.google.com,www.google-analytics.com,www.python.org,vuejs-jp.org,vuejs.org,zh-hk.vuejs.org,react.dev,www.java.com,www.oracle.com,www.mysql.com,www.mongodb.com,cname.vercel-dns.com,vercel-dns.com,www.swift.com,academy.nvidia.com,www.swift.com,www.cisco.com,www.asus.com,www.samsung.com,www.amd.com,www.fom-international.com,github.io"
|
realityDestDomainList="download-installer.cdn.mozilla.net,addons.mozilla.org,s0.awsstatic.com,d1.awsstatic.com,images-na.ssl-images-amazon.com,m.media-amazon.com,player.live-video.net,one-piece.com,www.lovelive-anime.jp,academy.nvidia.com,dl.google.com,www.google-analytics.com,www.python.org,vuejs-jp.org,vuejs.org,zh-hk.vuejs.org,react.dev,www.oracle.com,www.mysql.com,www.mongodb.com,cname.vercel-dns.com,vercel-dns.com,www.swift.com,academy.nvidia.com,www.swift.com,www.cisco.com,www.asus.com,www.samsung.com,www.amd.com,www.fom-international.com,github.io"
|
||||||
fi
|
fi
|
||||||
if [[ -n "${realityServerName}" && -z "${lastInstallationConfig}" ]]; then
|
if [[ -n "${realityServerName}" && -z "${lastInstallationConfig}" ]]; then
|
||||||
if echo ${realityDestDomainList} | grep -q "${realityServerName}"; then
|
if echo ${realityDestDomainList} | grep -q "${realityServerName}"; then
|
||||||
@@ -9988,7 +9996,7 @@ menu() {
|
|||||||
cd "$HOME" || exit
|
cd "$HOME" || exit
|
||||||
echoContent red "\n=============================================================="
|
echoContent red "\n=============================================================="
|
||||||
echoContent green "作者:mack-a"
|
echoContent green "作者:mack-a"
|
||||||
echoContent green "当前版本:v3.5.20"
|
echoContent green "当前版本:v3.5.21"
|
||||||
echoContent green "Github:https://github.com/mack-a/v2ray-agent"
|
echoContent green "Github:https://github.com/mack-a/v2ray-agent"
|
||||||
echoContent green "描述:八合一共存脚本\c"
|
echoContent green "描述:八合一共存脚本\c"
|
||||||
showInstallStatus
|
showInstallStatus
|
||||||
|
|||||||
@@ -2049,6 +2049,7 @@ _buildVisionInbounds() {
|
|||||||
"serverNames": ["$(jsonEscape "${sName}")"],
|
"serverNames": ["$(jsonEscape "${sName}")"],
|
||||||
"privateKey": "$(jsonEscape "${privKey}")",
|
"privateKey": "$(jsonEscape "${privKey}")",
|
||||||
"publicKey": "$(jsonEscape "${pubKey}")",
|
"publicKey": "$(jsonEscape "${pubKey}")",
|
||||||
|
"minClientVer": "1.8.2",
|
||||||
"maxTimeDiff": 70000,
|
"maxTimeDiff": 70000,
|
||||||
"shortIds": ["", "6ba85179e30d4fc2"]
|
"shortIds": ["", "6ba85179e30d4fc2"]
|
||||||
}
|
}
|
||||||
@@ -2095,6 +2096,7 @@ _buildXHTTPInbound() {
|
|||||||
"serverNames": ["$(jsonEscape "${sName}")"],
|
"serverNames": ["$(jsonEscape "${sName}")"],
|
||||||
"privateKey": "$(jsonEscape "${privKey}")",
|
"privateKey": "$(jsonEscape "${privKey}")",
|
||||||
"publicKey": "$(jsonEscape "${pubKey}")",
|
"publicKey": "$(jsonEscape "${pubKey}")",
|
||||||
|
"minClientVer": "1.8.2",
|
||||||
"maxTimeDiff": 70000,
|
"maxTimeDiff": 70000,
|
||||||
"shortIds": ["", "6ba85179e30d4fc2"]
|
"shortIds": ["", "6ba85179e30d4fc2"]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2031,6 +2031,7 @@ _buildVisionInbounds() {
|
|||||||
"serverNames": ["$(jsonEscape "${sName}")"],
|
"serverNames": ["$(jsonEscape "${sName}")"],
|
||||||
"privateKey": "$(jsonEscape "${privKey}")",
|
"privateKey": "$(jsonEscape "${privKey}")",
|
||||||
"publicKey": "$(jsonEscape "${pubKey}")",
|
"publicKey": "$(jsonEscape "${pubKey}")",
|
||||||
|
"minClientVer": "1.8.2",
|
||||||
"maxTimeDiff": 70000,
|
"maxTimeDiff": 70000,
|
||||||
"shortIds": ["", "6ba85179e30d4fc2"]
|
"shortIds": ["", "6ba85179e30d4fc2"]
|
||||||
}
|
}
|
||||||
@@ -2077,6 +2078,7 @@ _buildXHTTPInbound() {
|
|||||||
"serverNames": ["$(jsonEscape "${sName}")"],
|
"serverNames": ["$(jsonEscape "${sName}")"],
|
||||||
"privateKey": "$(jsonEscape "${privKey}")",
|
"privateKey": "$(jsonEscape "${privKey}")",
|
||||||
"publicKey": "$(jsonEscape "${pubKey}")",
|
"publicKey": "$(jsonEscape "${pubKey}")",
|
||||||
|
"minClientVer": "1.8.2",
|
||||||
"maxTimeDiff": 70000,
|
"maxTimeDiff": 70000,
|
||||||
"shortIds": ["", "6ba85179e30d4fc2"]
|
"shortIds": ["", "6ba85179e30d4fc2"]
|
||||||
},
|
},
|
||||||
|
|||||||
Regular → Executable
+5744
-3919
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user