feat(脚本): 增加xray-core mldsa65

master
mack-a 2025-08-02 16:43:58 +08:00
parent 321a886bea
commit 6a196e418b
1 changed files with 53 additions and 9 deletions

View File

@ -433,6 +433,9 @@ readInstallProtocolType() {
currentRealityPrivateKey=
currentRealityPublicKey=
currentRealityMldsa65Seed=
currentRealityMldsa65Verify=
singBoxVLESSVisionPort=
singBoxHysteria2Port=
singBoxTrojanPort=
@ -515,6 +518,10 @@ readInstallProtocolType() {
currentRealityPublicKey=$(jq -r .inbounds[0].streamSettings.realitySettings.publicKey "${row}.json")
currentRealityPrivateKey=$(jq -r .inbounds[0].streamSettings.realitySettings.privateKey "${row}.json")
currentRealityMldsa65Seed=$(jq -r .inbounds[0].streamSettings.realitySettings.mldsa65Seed "${row}.json")
currentRealityMldsa65Verify=$(jq -r .inbounds[0].streamSettings.realitySettings.mldsa65Verify "${row}.json")
frontingTypeReality=07_VLESS_vision_reality_inbounds
elif [[ "${coreInstallType}" == "2" ]]; then
@ -4332,6 +4339,7 @@ EOF
initXrayXHTTPort
initRealityClientServersName
initRealityKey
initRealityMldsa65
cat <<EOF >/etc/v2ray-agent/xray/conf/12_VLESS_XHTTP_inbounds.json
{
"inbounds":[
@ -4515,6 +4523,7 @@ EOF
initXrayRealityPort
initRealityClientServersName
initRealityKey
initRealityMldsa65
cat <<EOF >/etc/v2ray-agent/xray/conf/07_VLESS_vision_reality_inbounds.json
{
@ -5307,17 +5316,19 @@ EOF
elif [[ "${type}" == "vlessReality" ]]; then
local realityServerName=${xrayVLESSRealityServerName}
local publicKey=${currentRealityPublicKey}
local realityMldsa65Verify=${currentRealityMldsa65Verify}
if [[ "${coreInstallType}" == "2" ]]; then
realityServerName=${singBoxVLESSRealityVisionServerName}
publicKey=${singBoxVLESSRealityPublicKey}
fi
echoContent yellow " ---> 通用格式(VLESS+reality+uTLS+Vision)"
echoContent green " vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&type=tcp&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&flow=xtls-rprx-vision#${email}\n"
echoContent green " vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&pqv=${realityMldsa65Verify}&type=tcp&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&flow=xtls-rprx-vision#${email}\n"
echoContent yellow " ---> 格式化明文(VLESS+reality+uTLS+Vision)"
echoContent green "协议类型:VLESS reality地址:$(getPublicIP)publicKey:${publicKey}shortId: 6ba85179e30d4fc2,serverNames${realityServerName},端口:${port}用户ID:${id},传输方式:tcp账户名:${email}\n"
echoContent green "协议类型:VLESS reality地址:$(getPublicIP)publicKey:${publicKey}shortId: 6ba85179e30d4fc2pqv=${realityMldsa65Verify}serverNames${realityServerName},端口:${port}用户ID:${id},传输方式:tcp账户名:${email}\n"
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/default/${user}"
vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&type=tcp&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&flow=xtls-rprx-vision#${email}
vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&pqv=${realityMldsa65Verify}&type=tcp&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&flow=xtls-rprx-vision#${email}
EOF
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/clashMeta/${user}"
- name: "${email}"
@ -5340,23 +5351,25 @@ EOF
echo "${singBoxSubscribeLocalConfig}" | jq . >"/etc/v2ray-agent/subscribe_local/sing-box/${user}"
echoContent yellow " ---> 二维码 VLESS(VLESS+reality+uTLS+Vision)"
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40$(getPublicIP)%3A${port}%3Fencryption%3Dnone%26security%3Dreality%26type%3Dtcp%26sni%3D${realityServerName}%26fp%3Dchrome%26pbk%3D${publicKey}%26sid%3D6ba85179e30d4fc2%26flow%3Dxtls-rprx-vision%23${email}\n"
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40$(getPublicIP)%3A${port}%3Fencryption%3Dnone%26security%3Dreality%26pqv%3D${realityMldsa65Verify}%26type%3Dtcp%26sni%3D${realityServerName}%26fp%3Dchrome%26pbk%3D${publicKey}%26sid%3D6ba85179e30d4fc2%26flow%3Dxtls-rprx-vision%23${email}\n"
elif [[ "${type}" == "vlessRealityGRPC" ]]; then
local realityServerName=${xrayVLESSRealityServerName}
local publicKey=${currentRealityPublicKey}
local realityMldsa65Verify=${currentRealityMldsa65Verify}
if [[ "${coreInstallType}" == "2" ]]; then
realityServerName=${singBoxVLESSRealityGRPCServerName}
publicKey=${singBoxVLESSRealityPublicKey}
fi
echoContent yellow " ---> 通用格式(VLESS+reality+uTLS+gRPC)"
echoContent green " vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&type=grpc&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&path=grpc&serviceName=grpc#${email}\n"
echoContent green " vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&pqv=${realityMldsa65Verify}&type=grpc&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&path=grpc&serviceName=grpc#${email}\n"
echoContent yellow " ---> 格式化明文(VLESS+reality+uTLS+gRPC)"
echoContent green "协议类型:VLESS realityserviceName:grpc地址:$(getPublicIP)publicKey:${publicKey}shortId: 6ba85179e30d4fc2serverNames${realityServerName},端口:${port}用户ID:${id},传输方式:gRPCclient-fingerprintchrome账户名:${email}\n"
echoContent green "协议类型:VLESS realityserviceName:grpc地址:$(getPublicIP)publicKey:${publicKey}shortId: 6ba85179e30d4fc2pqv=${realityMldsa65Verify}serverNames${realityServerName},端口:${port}用户ID:${id},传输方式:gRPCclient-fingerprintchrome账户名:${email}\n"
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/default/${user}"
vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&type=grpc&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&path=grpc&serviceName=grpc#${email}
vless://${id}@$(getPublicIP):${port}?encryption=none&security=reality&pqv=${realityMldsa65Verify}&type=grpc&sni=${realityServerName}&fp=chrome&pbk=${publicKey}&sid=6ba85179e30d4fc2&path=grpc&serviceName=grpc#${email}
EOF
cat <<EOF >>"/etc/v2ray-agent/subscribe_local/clashMeta/${user}"
- name: "${email}"
@ -5380,7 +5393,7 @@ EOF
echo "${singBoxSubscribeLocalConfig}" | jq . >"/etc/v2ray-agent/subscribe_local/sing-box/${user}"
echoContent yellow " ---> 二维码 VLESS(VLESS+reality+uTLS+gRPC)"
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40$(getPublicIP)%3A${port}%3Fencryption%3Dnone%26security%3Dreality%26type%3Dgrpc%26sni%3D${realityServerName}%26fp%3Dchrome%26pbk%3D${publicKey}%26sid%3D6ba85179e30d4fc2%26path%3Dgrpc%26serviceName%3Dgrpc%23${email}\n"
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40$(getPublicIP)%3A${port}%3Fencryption%3Dnone%26security%3Dreality%26pqv%3D${realityMldsa65Verify}%26type%3Dgrpc%26sni%3D${realityServerName}%26fp%3Dchrome%26pbk%3D${publicKey}%26sid%3D6ba85179e30d4fc2%26path%3Dgrpc%26serviceName%3Dgrpc%23${email}\n"
elif [[ "${type}" == "tuic" ]]; then
local tuicUUID=
tuicUUID=$(echo "${id}" | awk -F "[_]" '{print $1}')
@ -9371,6 +9384,34 @@ initRealityKey() {
echoContent green "\n privateKey:${realityPrivateKey}"
echoContent green "\n publicKey:${realityPublicKey}"
}
# 初始化 mldsa65Seed
initRealityMldsa65() {
echoContent skyBlue "\n生成Reality mldsa65\n"
if [[ -n "${currentRealityMldsa65}" && -z "${lastInstallationConfig}" ]]; then
read -r -p "读取到上次安装记录是否使用上次安装时的Seed/Verify [y/n]:" historyMldsa65Status
if [[ "${historyMldsa65Status}" == "y" ]]; then
realityMldsa65Seed=${currentRealityMldsa65Seed}
realityMldsa65Verify=${currentRealityMldsa65Verify}
fi
elif [[ -n "${currentRealityMldsa65Seed}" && -n "${lastInstallationConfig}" ]]; then
realityMldsa65Seed=${currentRealityMldsa65Seed}
realityMldsa65Verify=${currentRealityMldsa65Verify}
fi
if [[ -z "${realityMldsa65Seed}" ]]; then
# if [[ "${selectCoreType}" == "2" || "${coreInstallType}" == "2" ]]; then
# realityX25519Key=$(/etc/v2ray-agent/sing-box/sing-box generate reality-keypair)
# realityPrivateKey=$(echo "${realityX25519Key}" | head -1 | awk '{print $2}')
# realityPublicKey=$(echo "${realityX25519Key}" | tail -n 1 | awk '{print $2}')
# echo "publicKey:${realityPublicKey}" >/etc/v2ray-agent/sing-box/conf/config/reality_key
# else
realityMldsa65=$(/etc/v2ray-agent/xray/xray mldsa65)
realityMldsa65Seed=$(echo "${realityMldsa65}" | head -1 | awk '{print $2}')
realityMldsa65Verify=$(echo "${realityMldsa65}" | tail -n 1 | awk '{print $2}')
# fi
fi
echoContent green "\n Seed:${realityMldsa65Seed}"
echoContent green "\n Verify:${realityMldsa65Verify}"
}
# 检查reality域名是否符合
checkRealityDest() {
local traceResult=
@ -9529,6 +9570,7 @@ initXrayRealityConfig() {
echoContent skyBlue "\n进度 $1/${totalProgress} : 初始化 Xray-core reality配置"
initXrayRealityPort
initRealityKey
initRealityMldsa65
initRealityClientServersName
}
# 修改reality域名端口等信息
@ -9796,7 +9838,7 @@ menu() {
cd "$HOME" || exit
echoContent red "\n=============================================================="
echoContent green "作者mack-a"
echoContent green "当前版本v3.4.16"
echoContent green "当前版本v3.4.17"
echoContent green "Githubhttps://github.com/mack-a/v2ray-agent"
echoContent green "描述:八合一共存脚本\c"
showInstallStatus
@ -9805,6 +9847,8 @@ menu() {
echoContent red " "
echoContent green "VPS选购攻略https://www.v2ray-agent.com/archives/1679975663984"
echoContent green "年付10美金低价VPS AS4837https://www.v2ray-agent.com/archives/racknerdtao-can-zheng-li-nian-fu-10mei-yuan"
echoContent green "优质常驻套餐DMIT CN2-GIAhttps://www.v2ray-agent.com/archives/186cee7b-9459-4e57-b9b2-b07a4f36931c"
echoContent green "VPS探针https://ping.v2ray-agent.com/"
echoContent red "=============================================================="
if [[ -n "${coreInstallType}" ]]; then
echoContent yellow "1.重新安装"