diff --git a/install.sh b/install.sh index 9ecf404..eca9f79 100644 --- a/install.sh +++ b/install.sh @@ -987,6 +987,16 @@ installWarp() { fi } +# 通过dns检查域名的IP +checkDNSIP() { + local domain=$1 + local dnsIP= + dnsIP=$(dig @1.1.1.1 +short "${domain}") + if [[ -z "${dnsIP}" ]]; then + echoContent red " ---> 无法通过DNS获取IP,请检查解析记录" + exit 0 + fi +} # 检查端口实际开放状态 checkPortOpen() { @@ -1431,6 +1441,7 @@ customPortFunction() { allowPort "${port}" echoContent yellow "\n ---> 端口: ${port}" if [[ -z "${btDomain}" ]]; then + checkDNSIP "${domain}" checkPortOpen "${port}" "${domain}" fi else @@ -5431,9 +5442,10 @@ readConfigWarpReg() { reservedWarpReg=$(grep <"/etc/v2ray-agent/warp/config" reserved | awk -F "[:]" '{print $2}') } -# warp分流-第三方 +# warp分流-第三方IPv4 warpRoutingReg() { - echoContent skyBlue "\n进度 $1/${totalProgress} : WARP分流[第三方-IPv6]" + local type=$2 + echoContent skyBlue "\n进度 $1/${totalProgress} : WARP分流[第三方]" echoContent red "==============================================================" if [[ ! -f "/etc/v2ray-agent/warp/warp-reg" ]]; then echo @@ -5460,8 +5472,19 @@ warpRoutingReg() { echoContent yellow "4.卸载WARP分流" echoContent red "==============================================================" read -r -p "请选择:" warpStatus + + readConfigWarpReg + local address= + if [[ ${type} == "IPv4" ]]; then + address="172.16.0.2/32" + elif [[ ${type} == "IPv6" ]]; then + address="${addressWarpReg}/128" + else + echoContent red " ---> IP获取失败,退出安装" + fi + if [[ "${warpStatus}" == "1" ]]; then - jq -r -c '.routing.rules[]|select (.outboundTag=="wireguard-out")|.domain' ${configPath}09_routing.json | jq -r + jq -r -c '.routing.rules[]|select (.outboundTag=="wireguard-out-"'"${type}"'""")|.domain' ${configPath}09_routing.json | jq -r exit 0 elif [[ "${warpStatus}" == "2" ]]; then echoContent yellow "# 注意事项" @@ -5469,14 +5492,12 @@ warpRoutingReg() { read -r -p "请按照上面示例录入域名:" domainList - addInstallRouting wireguard-out outboundTag "${domainList}" + addInstallRouting wireguard-out-"${type}" outboundTag "${domainList}" - unInstallOutbounds wireguard-out - - readConfigWarpReg + unInstallOutbounds wireguard-out-"${type}" local outbounds - outbounds=$(jq -r '.outbounds += [{"protocol":"wireguard","settings":{"secretKey":"'"${secretKeyWarpReg}"'","address":["'"${addressWarpReg}"'/128"],"peers":[{"publicKey":"'"${publicKeyWarpReg}"'","allowedIPs":["0.0.0.0/0","::/0"],"endpoint":"162.159.192.1:2408"}],"reserved":'"${reservedWarpReg}"',"mtu":1280},"tag":"wireguard-out"}]' ${configPath}10_ipv4_outbounds.json) + outbounds=$(jq -r '.outbounds += [{"protocol":"wireguard","settings":{"secretKey":"'"${secretKeyWarpReg}"'","address":["'"${address}"'"],"peers":[{"publicKey":"'"${publicKeyWarpReg}"'","allowedIPs":["0.0.0.0/0","::/0"],"endpoint":"162.159.192.1:2408"}],"reserved":'"${reservedWarpReg}"',"mtu":1280},"tag":"wireguard-out-'"${type}"'"}]' ${configPath}10_ipv4_outbounds.json) echo "${outbounds}" | jq . >${configPath}10_ipv4_outbounds.json @@ -5501,14 +5522,14 @@ warpRoutingReg() { "settings": { "secretKey": "${secretKeyWarpReg}", "address": [ - "${addressWarpReg}/128" + ${address} ], "peers": [ { "publicKey": "${publicKeyWarpReg}", "allowedIPs": [ "0.0.0.0/0", - "::/0" + "::/0" ], "endpoint": "162.159.192.1:2408" } @@ -5516,7 +5537,7 @@ warpRoutingReg() { "reserved": ${reservedWarpReg}, "mtu": 1280 }, - "tag": "wireguard-out" + "tag": "wireguard-out-${type}" } ] } @@ -5530,10 +5551,19 @@ EOF elif [[ "${warpStatus}" == "4" ]]; then - unInstallRouting wireguard-out outboundTag + unInstallRouting wireguard-out-"${type}" outboundTag + + unInstallOutbounds wireguard-out-"${type}" + if [[ "${type}" == "IPv4" ]]; then + if ! grep -q "wireguard-out-IPv6" <${configPath}10_ipv4_outbounds.json; then + rm -rf /etc/v2ray-agent/warp/config >/dev/null 2>&1 + fi + elif [[ "${type}" == "IPv6" ]]; then + if ! grep -q "wireguard-out-IPv4" <${configPath}10_ipv4_outbounds.json; then + rm -rf /etc/v2ray-agent/warp/config >/dev/null 2>&1 + fi + fi - unInstallOutbounds wireguard-out - rm -rf /etc/v2ray-agent/warp/config >/dev/null 2>&1 if ! grep -q "IPv4-out" <"${configPath}10_ipv4_outbounds.json"; then cat <${configPath}10_ipv4_outbounds.json @@ -5574,38 +5604,40 @@ EOF routingToolsMenu() { echoContent skyBlue "\n功能 1/${totalProgress} : 分流工具" echoContent red "\n==============================================================" - echoContent yellow "1.WARP分流【官方】" - echoContent yellow "2.IPv6分流" - echoContent yellow "3.任意门分流" - echoContent yellow "4.DNS分流" - echoContent yellow "5.VMess+WS+TLS分流" - echoContent yellow "6.SNI反向代理分流" - echoContent yellow "7.WARP分流【第三方】" + echoContent yellow "1.WARP分流【第三方 IPv4】" + echoContent yellow "2.WARP分流【第三方 IPv6】" + echoContent yellow "3.IPv6分流" + echoContent yellow "4.任意门分流" + echoContent yellow "5.DNS分流" + echoContent yellow "6.VMess+WS+TLS分流" + echoContent yellow "7.SNI反向代理分流" + read -r -p "请选择:" selectType case ${selectType} in 1) - warpRouting 1 + warpRoutingReg 1 IPv4 ;; 2) - ipv6Routing 1 + warpRoutingReg 1 IPv6 ;; 3) - dokodemoDoorRouting 1 + ipv6Routing 1 ;; 4) - dnsRouting 1 + dokodemoDoorRouting 1 ;; 5) - vmessWSRouting 1 + dnsRouting 1 ;; 6) - sniRouting 1 + vmessWSRouting 1 ;; 7) - warpRoutingReg 1 + sniRouting 1 ;; esac + } # 流媒体工具箱 streamingToolbox() { @@ -6626,7 +6658,7 @@ socks-port: 7891 allow-lan: true mode: Rule log-level: debug -external-controller: 127.0.0.1:9090 +external-controller: 127.0.0.1:7908 dns: enable: true ipv6: false @@ -7340,7 +7372,7 @@ menu() { cd "$HOME" || exit echoContent red "\n==============================================================" echoContent green "作者:mack-a" - echoContent green "当前版本:v2.9.7" + echoContent green "当前版本:v2.9.8" echoContent green "Github:https://github.com/mack-a/v2ray-agent" echoContent green "描述:八合一共存脚本\c" showInstallStatus