1
This commit is contained in:
@@ -20,8 +20,3 @@ curl -sS -O https://gitea.tohub.top/Share/script/raw/branch/main/ss2022-manager.
|
|||||||
```sh
|
```sh
|
||||||
curl -sS -O https://gitea.tohub.top/Share/script/raw/branch/main/xray-manager.sh && chmod +x xray-manager.sh && ./xray-manager.sh
|
curl -sS -O https://gitea.tohub.top/Share/script/raw/branch/main/xray-manager.sh && chmod +x xray-manager.sh && ./xray-manager.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
- xray-manager-v25.8.31.sh
|
|
||||||
```sh
|
|
||||||
curl -sS -O https://gitea.tohub.top/Share/script/raw/branch/main/xray-manager-v25.8.31.sh && chmod +x xray-manager-v25.8.31.sh && ./xray-manager-v25.8.31.sh
|
|
||||||
```
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
198
xray-manager.sh
198
xray-manager.sh
@@ -215,19 +215,18 @@ show_menu() {
|
|||||||
clear
|
clear
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo -e "${CYAN}Xray REALITY管理脚本 v${SCRIPT_VERSION}${NC}"
|
echo -e "${CYAN}Xray REALITY管理脚本 v${SCRIPT_VERSION}${NC}"
|
||||||
echo -e "${CYAN}(VLESS+REALITY 协议)${NC}"
|
echo -e "${CYAN}(VLESS+REALITY 协议 - 稳定版本)${NC}"
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo -e "1) ${GREEN}安装 Xray${NC}"
|
echo -e "1) ${GREEN}安装 Xray (自动配置所有稳定功能)${NC}"
|
||||||
echo -e "2) ${RED}卸载 Xray${NC}"
|
echo -e "2) ${RED}卸载 Xray${NC}"
|
||||||
echo -e "3) ${YELLOW}更新 Xray${NC}"
|
echo -e "3) ${YELLOW}更新 Xray${NC}"
|
||||||
echo -e "4) ${BLUE}查看 Xray 状态${NC}"
|
echo -e "4) ${BLUE}查看 Xray 状态${NC}"
|
||||||
echo -e "5) ${CYAN}查看 Xray 配置信息${NC}"
|
echo -e "5) ${CYAN}查看配置信息${NC}"
|
||||||
echo -e "6) ${GREEN}重启 Xray 服务${NC}"
|
echo -e "6) ${GREEN}重启服务${NC}"
|
||||||
echo -e "7) ${YELLOW}手动设置 Xray 版本号${NC}"
|
|
||||||
echo -e "0) ${RED}退出${NC}"
|
echo -e "0) ${RED}退出${NC}"
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo ""
|
echo ""
|
||||||
read -rp "请输入选项 [0-7]: " choice
|
read -rp "请输入选项 [0-6]: " choice
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1) install_xray ;;
|
1) install_xray ;;
|
||||||
@@ -236,69 +235,14 @@ show_menu() {
|
|||||||
4) check_status ;;
|
4) check_status ;;
|
||||||
5) show_config ;;
|
5) show_config ;;
|
||||||
6) restart_service ;;
|
6) restart_service ;;
|
||||||
7) set_xray_version ;;
|
|
||||||
0) exit 0 ;;
|
0) exit 0 ;;
|
||||||
*) log_error "无效选项" && sleep 2 && show_menu ;;
|
*) log_error "无效选项" && sleep 2 && show_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# 设置Xray版本号
|
|
||||||
set_xray_version() {
|
|
||||||
clear
|
|
||||||
echo "=================================================="
|
|
||||||
echo -e "${YELLOW}手动设置 Xray 版本号${NC}"
|
|
||||||
echo "=================================================="
|
|
||||||
|
|
||||||
echo "当前Xray版本号: $XRAY_VERSION"
|
|
||||||
echo ""
|
|
||||||
echo "1) 自动获取最新版本"
|
|
||||||
echo "2) 手动输入版本号"
|
|
||||||
echo "0) 返回主菜单"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
read -rp "请选择操作 [0-2]: " version_choice
|
|
||||||
|
|
||||||
case $version_choice in
|
|
||||||
1)
|
|
||||||
echo -n "正在获取最新版本... "
|
|
||||||
local latest_version=$(get_latest_version)
|
|
||||||
|
|
||||||
if [[ "$latest_version" == "$XRAY_VERSION" && ! -z "$latest_version" ]]; then
|
|
||||||
echo -e "${GREEN}成功${NC}"
|
|
||||||
log_info "当前已是最新版本: $XRAY_VERSION"
|
|
||||||
elif [[ -z "$latest_version" || "$latest_version" == "v1.8.4" ]]; then
|
|
||||||
echo -e "${RED}失败${NC}"
|
|
||||||
log_error "无法自动获取最新版本"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}成功${NC}"
|
|
||||||
XRAY_VERSION="$latest_version"
|
|
||||||
log_info "Xray版本已自动更新为: $XRAY_VERSION"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
echo "请访问 https://github.com/XTLS/Xray-core/releases 查看可用版本"
|
|
||||||
read -rp "请输入新的版本号(例如 v25.3.6): " new_version
|
|
||||||
|
|
||||||
if [[ -z "$new_version" ]]; then
|
|
||||||
log_error "版本号不能为空"
|
|
||||||
elif [[ ! "$new_version" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
||||||
log_error "版本号格式不正确,请使用类似 v25.3.6 的格式"
|
|
||||||
else
|
|
||||||
XRAY_VERSION="$new_version"
|
|
||||||
log_info "Xray版本已更新为: $XRAY_VERSION"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
0)
|
|
||||||
# 直接返回
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
log_error "无效选项"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
read -rp "按回车键返回主菜单..." temp
|
|
||||||
show_menu
|
|
||||||
}
|
|
||||||
|
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
install_dependencies() {
|
install_dependencies() {
|
||||||
@@ -310,7 +254,7 @@ install_dependencies() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# 安装必要工具
|
# 安装必要工具(包含 jq 以支持后量子密码学配置)
|
||||||
local deps=(curl wget jq unzip)
|
local deps=(curl wget jq unzip)
|
||||||
for dep in "${deps[@]}"; do
|
for dep in "${deps[@]}"; do
|
||||||
if ! command -v "$dep" &>/dev/null; then
|
if ! command -v "$dep" &>/dev/null; then
|
||||||
@@ -541,11 +485,18 @@ generate_random_values() {
|
|||||||
local key_pair
|
local key_pair
|
||||||
if [[ -f "$XRAY_PATH/xray" && -x "$XRAY_PATH/xray" ]]; then
|
if [[ -f "$XRAY_PATH/xray" && -x "$XRAY_PATH/xray" ]]; then
|
||||||
key_pair=$($XRAY_PATH/xray x25519)
|
key_pair=$($XRAY_PATH/xray x25519)
|
||||||
PRIVATE_KEY=$(echo "$key_pair" | grep "Private" | awk '{print $3}')
|
PRIVATE_KEY=$(echo "$key_pair" | grep -E "(Private|PrivateKey)" | awk '{print $NF}')
|
||||||
PUBLIC_KEY=$(echo "$key_pair" | grep "Public" | awk '{print $3}')
|
PUBLIC_KEY=$(echo "$key_pair" | grep -E "(Public|Password)" | awk '{print $NF}')
|
||||||
|
|
||||||
|
# 验证密钥是否正确生成
|
||||||
|
if [[ -z "$PRIVATE_KEY" || -z "$PUBLIC_KEY" ]]; then
|
||||||
|
log_error "密钥生成失败,请检查 Xray 版本"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
log_warn "无法使用 xray 生成密钥对,将跳过密钥生成"
|
log_warn "无法使用 xray 生成密钥对,将跳过密钥生成"
|
||||||
log_info "安装完成后,将自动生成密钥对"
|
log_info "安装完成后,将自动生成密钥对"
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -554,8 +505,20 @@ generate_random_values() {
|
|||||||
|
|
||||||
log_debug "私钥: $PRIVATE_KEY"
|
log_debug "私钥: $PRIVATE_KEY"
|
||||||
log_debug "公钥: $PUBLIC_KEY"
|
log_debug "公钥: $PUBLIC_KEY"
|
||||||
|
|
||||||
|
# 验证密钥是否成功生成
|
||||||
|
if [[ -z "$PRIVATE_KEY" || -z "$PUBLIC_KEY" ]]; then
|
||||||
|
log_error "REALITY 密钥生成失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 获取服务器IP
|
# 获取服务器IP
|
||||||
get_server_ip() {
|
get_server_ip() {
|
||||||
log_info "获取服务器IP地址"
|
log_info "获取服务器IP地址"
|
||||||
@@ -615,7 +578,20 @@ configure_xray() {
|
|||||||
log_info "配置 Xray"
|
log_info "配置 Xray"
|
||||||
|
|
||||||
# 生成随机值
|
# 生成随机值
|
||||||
generate_random_values
|
generate_random_values || {
|
||||||
|
log_error "生成随机值失败"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 验证必要的变量是否已设置
|
||||||
|
if [[ -z "$PRIVATE_KEY" || -z "$PUBLIC_KEY" || -z "$UUID" || -z "$REALITY_PORT" ]]; then
|
||||||
|
log_error "必要的配置参数缺失:"
|
||||||
|
[[ -z "$PRIVATE_KEY" ]] && log_error "- PRIVATE_KEY 未设置"
|
||||||
|
[[ -z "$PUBLIC_KEY" ]] && log_error "- PUBLIC_KEY 未设置"
|
||||||
|
[[ -z "$UUID" ]] && log_error "- UUID 未设置"
|
||||||
|
[[ -z "$REALITY_PORT" ]] && log_error "- REALITY_PORT 未设置"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
# 创建配置目录
|
# 创建配置目录
|
||||||
mkdir -p "$CONFIG_PATH"
|
mkdir -p "$CONFIG_PATH"
|
||||||
@@ -623,9 +599,12 @@ configure_xray() {
|
|||||||
# 创建示例目录
|
# 创建示例目录
|
||||||
mkdir -p "$CONFIG_PATH/examples"
|
mkdir -p "$CONFIG_PATH/examples"
|
||||||
|
|
||||||
log_info "创建 VLESS+REALITY 配置文件(支持TUN模式)"
|
log_info "创建 VLESS+REALITY 配置文件(最新版本,稳定功能)"
|
||||||
|
|
||||||
# VLESS + REALITY 配置 (添加支持TUN模式的DNS和路由配置)
|
# 注意:后量子密码学功能需要更新版本的 Xray,暂时禁用以确保兼容性
|
||||||
|
log_info "配置 REALITY 协议基础功能(稳定版本)"
|
||||||
|
|
||||||
|
# VLESS + REALITY 配置 (最新版本,包含所有功能)
|
||||||
cat > "$CONFIG_PATH/config.json" << EOF
|
cat > "$CONFIG_PATH/config.json" << EOF
|
||||||
{
|
{
|
||||||
"log": {
|
"log": {
|
||||||
@@ -651,17 +630,30 @@ configure_xray() {
|
|||||||
"security": "reality",
|
"security": "reality",
|
||||||
"realitySettings": {
|
"realitySettings": {
|
||||||
"show": false,
|
"show": false,
|
||||||
"dest": "www.shopify.com:443",
|
"target": "www.shopify.com:443",
|
||||||
"xver": 0,
|
"xver": 0,
|
||||||
"serverNames": [
|
"serverNames": [
|
||||||
"shopify.com",
|
"shopify.com",
|
||||||
"www.shopify.com"
|
"www.shopify.com"
|
||||||
],
|
],
|
||||||
"privateKey": "$PRIVATE_KEY",
|
"privateKey": "$PRIVATE_KEY",
|
||||||
|
"minClientVer": "",
|
||||||
|
"maxClientVer": "",
|
||||||
|
"maxTimeDiff": 0,
|
||||||
"shortIds": [
|
"shortIds": [
|
||||||
"",
|
"",
|
||||||
"6ba85179e30d"
|
"6ba85179e30d"
|
||||||
]
|
],
|
||||||
|
"limitFallbackUpload": {
|
||||||
|
"afterBytes": 1048576,
|
||||||
|
"bytesPerSec": 1048576,
|
||||||
|
"burstBytesPerSec": 2097152
|
||||||
|
},
|
||||||
|
"limitFallbackDownload": {
|
||||||
|
"afterBytes": 1048576,
|
||||||
|
"bytesPerSec": 1048576,
|
||||||
|
"burstBytesPerSec": 2097152
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sniffing": {
|
"sniffing": {
|
||||||
@@ -692,26 +684,33 @@ configure_xray() {
|
|||||||
},
|
},
|
||||||
"servers": [
|
"servers": [
|
||||||
{
|
{
|
||||||
"address": "1.1.1.1",
|
"address": "https://1.1.1.1/dns-query",
|
||||||
"domains": [
|
"domains": [
|
||||||
"geosite:geolocation-!cn"
|
"geosite:geolocation-!cn"
|
||||||
],
|
],
|
||||||
"expectIPs": [
|
"expectedIPs": [
|
||||||
"geoip:!cn"
|
"geoip:!cn"
|
||||||
]
|
],
|
||||||
|
"skipFallback": true,
|
||||||
|
"queryStrategy": "UseIPv4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "223.5.5.5",
|
"address": "https://223.5.5.5/dns-query",
|
||||||
"domains": [
|
"domains": [
|
||||||
"geosite:cn"
|
"geosite:cn"
|
||||||
],
|
],
|
||||||
"expectIPs": [
|
"expectedIPs": [
|
||||||
"geoip:cn"
|
"geoip:cn"
|
||||||
]
|
],
|
||||||
|
"skipFallback": false,
|
||||||
|
"queryStrategy": "UseIP"
|
||||||
},
|
},
|
||||||
"8.8.8.8",
|
"8.8.8.8",
|
||||||
"https://dns.google/dns-query"
|
"https://dns.google/dns-query"
|
||||||
]
|
],
|
||||||
|
"queryStrategy": "UseIP",
|
||||||
|
"disableCache": false,
|
||||||
|
"disableFallback": false
|
||||||
},
|
},
|
||||||
"routing": {
|
"routing": {
|
||||||
"domainStrategy": "AsIs",
|
"domainStrategy": "AsIs",
|
||||||
@@ -944,7 +943,7 @@ generate_client_info() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 生成 VLESS + REALITY 分享链接
|
# 生成 VLESS + REALITY 分享链接
|
||||||
local share_link="vless://${UUID}@${SERVER_IP}:${REALITY_PORT}?security=reality&encryption=none&pbk=${PUBLIC_KEY}&fp=chrome&type=tcp&flow=xtls-rprx-vision&sni=www.shopify.com&sid=6ba85179e30d#Xray-Reality"
|
local share_link="vless://${UUID}@${SERVER_IP}:${REALITY_PORT}?security=reality&encryption=none&pbk=${PUBLIC_KEY}&fp=chrome&type=tcp&flow=xtls-rprx-vision&sni=www.shopify.com&sid=6ba85179e30d&spx=%2Fsearch%3Fq%3Dcdn#Xray-Reality"
|
||||||
|
|
||||||
# 保存客户端信息
|
# 保存客户端信息
|
||||||
cat > /root/xray_info.txt << EOF
|
cat > /root/xray_info.txt << EOF
|
||||||
@@ -962,6 +961,12 @@ UUID: ${UUID}
|
|||||||
SNI: www.shopify.com
|
SNI: www.shopify.com
|
||||||
指纹: chrome
|
指纹: chrome
|
||||||
短 ID: 6ba85179e30d
|
短 ID: 6ba85179e30d
|
||||||
|
爬虫路径: /search?q=cdn
|
||||||
|
目标站点: www.shopify.com:443
|
||||||
|
速率限制: 已启用回退连接限制
|
||||||
|
TUN模式支持: 已启用
|
||||||
|
DNS优化: 已启用(DoH)
|
||||||
|
兼容性: 当前版本完全兼容
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
分享链接:
|
分享链接:
|
||||||
@@ -1092,7 +1097,8 @@ generate_reality_tun_config() {
|
|||||||
"fingerprint": "chrome",
|
"fingerprint": "chrome",
|
||||||
"serverName": "www.shopify.com",
|
"serverName": "www.shopify.com",
|
||||||
"publicKey": "${PUBLIC_KEY}",
|
"publicKey": "${PUBLIC_KEY}",
|
||||||
"shortId": "6ba85179e30d"
|
"shortId": "6ba85179e30d",
|
||||||
|
"spiderX": "/search?q=cdn"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1131,7 +1137,10 @@ generate_reality_tun_config() {
|
|||||||
},
|
},
|
||||||
"8.8.8.8",
|
"8.8.8.8",
|
||||||
"https://dns.google/dns-query"
|
"https://dns.google/dns-query"
|
||||||
]
|
],
|
||||||
|
"queryStrategy": "UseIP",
|
||||||
|
"disableCache": false,
|
||||||
|
"disableFallback": false
|
||||||
},
|
},
|
||||||
"routing": {
|
"routing": {
|
||||||
"domainStrategy": "IPIfNonMatch",
|
"domainStrategy": "IPIfNonMatch",
|
||||||
@@ -1225,7 +1234,16 @@ EOF
|
|||||||
install_xray() {
|
install_xray() {
|
||||||
clear
|
clear
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo -e "${GREEN}开始安装 Xray REALITY 协议${NC}"
|
echo -e "${GREEN}开始安装 Xray REALITY 协议(稳定版本)${NC}"
|
||||||
|
echo "=================================================="
|
||||||
|
echo -e "${CYAN}自动配置功能列表:${NC}"
|
||||||
|
echo -e "✓ VLESS+REALITY 协议"
|
||||||
|
echo -e "✓ 速率限制保护"
|
||||||
|
echo -e "✓ TUN模式支持"
|
||||||
|
echo -e "✓ DNS优化 (DoH)"
|
||||||
|
echo -e "✓ 智能路由规则"
|
||||||
|
echo -e "✓ 自动防火墙配置"
|
||||||
|
echo -e "✓ 完全兼容当前版本"
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
|
|
||||||
# 检查是否为 root
|
# 检查是否为 root
|
||||||
@@ -1267,7 +1285,19 @@ install_xray() {
|
|||||||
generate_client_info
|
generate_client_info
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
log_info "Xray REALITY 协议安装成功!"
|
echo "=================================================="
|
||||||
|
echo -e "${GREEN}🎉 安装完成!${NC}"
|
||||||
|
echo "=================================================="
|
||||||
|
echo -e "${CYAN}已自动启用的功能:${NC}"
|
||||||
|
echo -e "✅ VLESS+REALITY 协议"
|
||||||
|
echo -e "✅ 速率限制保护"
|
||||||
|
echo -e "✅ TUN模式支持"
|
||||||
|
echo -e "✅ DNS优化 (DoH)"
|
||||||
|
echo -e "✅ 智能路由规则"
|
||||||
|
echo -e "✅ 自动防火墙配置"
|
||||||
|
echo -e "✅ 完全兼容当前版本"
|
||||||
|
echo "=================================================="
|
||||||
|
log_info "Xray REALITY 协议(稳定版本)安装成功!"
|
||||||
|
|
||||||
read -rp "按回车键返回主菜单..." temp
|
read -rp "按回车键返回主菜单..." temp
|
||||||
show_menu
|
show_menu
|
||||||
|
|||||||
Reference in New Issue
Block a user