Update xu

This commit is contained in:
2025-11-29 15:29:42 +08:00
committed by GitHub
parent 87c738725d
commit ae6c6e61ed

204
xu
View File

@@ -3,7 +3,7 @@
# x-ui 多架构自动安装脚本 # x-ui 多架构自动安装脚本
# 支持: amd64, 386, arm64, armv5, armv6, armv7, s390x # 支持: amd64, 386, arm64, armv5, armv6, armv7, s390x
# 默认配置: 端口 8443, 账号 3344, 密码 3344 # 默认配置: 端口 8443, 账号 3344, 密码 3344
# 咸v咆哮制作 - 一键搞定所有架构! # 咸咆哮制作 - 一键搞定所有架构!
set -e # 遇到错误立即退出 set -e # 遇到错误立即退出
@@ -63,22 +63,22 @@ show_banner() {
echo -e "║ ║" echo -e "║ ║"
echo -e "║ ${GREEN}📦 支持所有主流CPU架构 ${RED} ║" echo -e "║ ${GREEN}📦 支持所有主流CPU架构 ${RED} ║"
echo -e "║ ${BLUE}⚡ 自动检测 + 自动配置 ${RED} ║" echo -e "║ ${BLUE}⚡ 自动检测 + 自动配置 ${RED} ║"
echo -e "║ ${PURPLE}🎯 咸v咆哮制作 - 专治各种不服! ${RED} ║" echo -e "║ ${PURPLE}🎯 咸咆哮制作 ${RED} ║"
echo -e "║ ║" echo -e "║ ║"
echo -e "${RED}╚════════════════════════════════════════╝" echo -e "${RED}╚════════════════════════════════════════╝"
echo -e "${NC}" echo -e "${NC}"
} }
# 显示咆哮信息 # 显示制作信息
show_roar() { show_creator() {
echo echo
echo -e "${RED}╔══════════════════════════════════════════════════╗" echo -e "${RED}╔══════════════════════════════════════════════════╗"
echo -e "║ ║" echo -e "║ ║"
echo -e "║ ${YELLOW}🔥 咸v咆哮宣言:${RED} ║" echo -e "║ ${YELLOW}🔥 咸咆哮宣言:${RED} ║"
echo -e "║ ║" echo -e "║ ║"
echo -e "║ ${GREEN}「管你什么架构,老子一键搞定!」${RED} ║" echo -e "║ ${GREEN}「多架构支持,智能适配!」${RED} ║"
echo -e "║ ${CYAN}「AMD、Intel、ARM、IBM... 通通拿下!」${RED} ║" echo -e "║ ${CYAN}「一键配置,省心省力!」${RED} ║"
echo -e "║ ${PURPLE}「拒绝复杂操作,只要简单粗暴!」${RED} ║" echo -e "║ ${PURPLE}「有问题就反馈,持续改进!」${RED} ║"
echo -e "║ ║" echo -e "║ ║"
echo -e "${RED}╚══════════════════════════════════════════════════╝" echo -e "${RED}╚══════════════════════════════════════════════════╝"
echo -e "${NC}" echo -e "${NC}"
@@ -289,48 +289,115 @@ EOF
info "✅ 系统服务配置完成" info "✅ 系统服务配置完成"
} }
# 自定义配置面板 # 使用x-ui命令修改配置修复版
customize_panel() { modify_panel_config() {
step "🎛️ 开始自定义配置面板..." step "🎛️ 开始修改面板配置..."
# 停止服务以进行配置 # 等待服务启动
info "🛑 停止 x-ui 服务进行配置..." info "⏳ 等待服务启动..."
systemctl stop x-ui 2>/dev/null || true systemctl start x-ui 2>/dev/null || true
sleep 8
# 等待服务停止 # 检查服务状态
sleep 3 if ! systemctl is-active --quiet x-ui; then
warn "⚠ 服务未运行,尝试启动..."
# 创建数据库目录 systemctl start x-ui
mkdir -p /etc/x-ui/
# 初始化数据库(如果不存在)
if [ ! -f "/etc/x-ui/x-ui.db" ]; then
info "🗃️ 初始化数据库..."
# 启动服务以创建初始数据库
if systemctl start x-ui; then
sleep 5 sleep 5
systemctl stop x-ui fi
# 修改端口
info "🔧 修改面板端口为: $PANEL_PORT"
if command -v x-ui >/dev/null 2>&1; then
# 使用expect自动交互修改端口
if command -v expect >/dev/null 2>&1; then
expect << EOF
spawn x-ui
expect "Please enter your selection"
send "9\r"
expect "Enter port number"
send "$PANEL_PORT\r"
expect "Restart the panel"
send "y\r"
expect "Press enter to return"
send "\r"
expect eof
EOF
info "✅ 端口修改完成"
else
warn "⚠ 未安装expect无法自动修改端口"
info "💡 请手动运行 'x-ui' 选择 9 修改端口为 $PANEL_PORT"
fi
sleep 3 sleep 3
else
warn "⚠ 服务启动失败,尝试直接创建数据库结构"
fi
fi
# 修改配置(如果数据库存在且可写) # 修改用户名和密码
info "👤 修改用户名和密码为: $PANEL_USERNAME/$PANEL_PASSWORD"
if command -v expect >/dev/null 2>&1; then
expect << EOF
spawn x-ui
expect "Please enter your selection"
send "6\r"
expect "Are you sure to reset"
send "y\r"
expect "Please set the login username"
send "$PANEL_USERNAME\r"
expect "Please set the login password"
send "$PANEL_PASSWORD\r"
expect "Do you want to disable currently configured two-factor authentication"
send "y\r"
expect "Restart the panel"
send "y\r"
expect "Press enter to return"
send "\r"
expect eof
EOF
info "✅ 账号密码修改完成"
else
warn "⚠ 未安装expect无法自动修改账号密码"
info "💡 请手动运行 'x-ui' 选择 6 修改账号密码"
fi
else
error "❌ x-ui 命令未找到,无法自动配置"
info "💡 请手动运行配置命令"
fi
}
# 直接修改数据库配置(备用方案)
direct_db_config() {
step "🗃️ 尝试直接修改数据库配置..."
# 停止服务
systemctl stop x-ui 2>/dev/null || true
sleep 3
# 检查数据库文件
if [ -f "/etc/x-ui/x-ui.db" ] && command -v sqlite3 >/dev/null 2>&1; then if [ -f "/etc/x-ui/x-ui.db" ] && command -v sqlite3 >/dev/null 2>&1; then
cyan "🔧 设置面板端口: $PANEL_PORT" info "🔧 直接修改数据库配置..."
sqlite3 /etc/x-ui/x-ui.db "UPDATE setting SET value = '$PANEL_PORT' WHERE key = 'port';" 2>/dev/null || true
cyan "👤 设置面板账号: $PANEL_USERNAME" # 修改端口
cyan "🔑 设置面板密码: $PANEL_PASSWORD" if sqlite3 /etc/x-ui/x-ui.db "UPDATE setting SET value = '$PANEL_PORT' WHERE key = 'port';"; then
sqlite3 /etc/x-ui/x-ui.db "UPDATE users SET username = '$PANEL_USERNAME', password = '$PANEL_PASSWORD' WHERE id = 1;" 2>/dev/null || true info "✅ 端口修改为: $PANEL_PORT"
sqlite3 /etc/x-ui/x-ui.db "UPDATE setting SET value = 'false' WHERE key = 'hasDefaultCredential';" 2>/dev/null || true
info "✅ 自定义配置完成"
else else
warn "⚠ 无法自动配置数据库,请在安装后手动修改配置" warn "⚠ 端口修改失败"
fi fi
# 修改用户名密码
if sqlite3 /etc/x-ui/x-ui.db "UPDATE users SET username = '$PANEL_USERNAME', password = '$PANEL_PASSWORD' WHERE id = 1;"; then
info "✅ 账号修改为: $PANEL_USERNAME"
info "✅ 密码修改为: $PANEL_PASSWORD"
else
warn "⚠ 账号密码修改失败"
fi
# 禁用默认凭据警告
sqlite3 /etc/x-ui/x-ui.db "UPDATE setting SET value = 'false' WHERE key = 'hasDefaultCredential';" 2>/dev/null || true
else
warn "⚠ 无法直接修改数据库,将使用交互式配置"
fi
# 重启服务
systemctl start x-ui
sleep 5
} }
# 配置防火墙 # 配置防火墙
@@ -371,28 +438,23 @@ start_service() {
systemctl daemon-reload systemctl daemon-reload
systemctl enable x-ui systemctl enable x-ui
# 启动服务 # 重启服务确保配置生效
if systemctl start x-ui; then if systemctl restart x-ui; then
info "✅ x-ui 服务启动命令执行成功" info "✅ x-ui 服务启成功"
else else
error "❌ x-ui 服务启失败" error "❌ x-ui 服务启失败"
return 1 return 1
fi fi
# 等待服务启动 # 等待服务启动
sleep 5 sleep 8
# 检查服务状态 # 检查服务状态
if systemctl is-active --quiet x-ui; then if systemctl is-active --quiet x-ui; then
info "✅ x-ui 服务运行正常" info "✅ x-ui 服务运行正常"
# 显示服务状态
echo
systemctl status x-ui --no-pager -l
else else
warn "⚠ x-ui 服务未运行,检查日志中..." warn "⚠ x-ui 服务未运行,检查日志中..."
systemctl status x-ui --no-pager -l systemctl status x-ui --no-pager -l
warn "💡 尝试手动启动: systemctl start x-ui"
fi fi
} }
@@ -404,7 +466,7 @@ verify_installation() {
if systemctl is-active --quiet x-ui; then if systemctl is-active --quiet x-ui; then
info "✅ 服务运行正常" info "✅ 服务运行正常"
else else
warn "⚠ 服务未运行,但安装已完成" warn "⚠ 服务未运行"
return 0 return 0
fi fi
@@ -423,6 +485,12 @@ verify_installation() {
fi fi
fi fi
# 显示最终配置
info "📋 最终配置验证:"
if command -v x-ui >/dev/null 2>&1; then
echo "n" | x-ui | grep -A 10 "View Current Settings" || true
fi
info "✅ 验证完成" info "✅ 验证完成"
} }
@@ -434,7 +502,7 @@ show_info() {
echo echo
echo -e "${GREEN}╔══════════════════════════════════════════════════╗" echo -e "${GREEN}╔══════════════════════════════════════════════════╗"
echo -e "║ ║" echo -e "║ ║"
echo -e "║ 🎉 X-UI 多架构安装完成咸v咆哮牛逼! ║" echo -e "║ 🎉 X-UI 多架构安装完成咸v咆哮制作! ║"
echo -e "║ ║" echo -e "║ ║"
echo -e "╚══════════════════════════════════════════════════╝${NC}" echo -e "╚══════════════════════════════════════════════════╝${NC}"
echo echo
@@ -443,9 +511,9 @@ show_info() {
info "👤 用户名: $PANEL_USERNAME" info "👤 用户名: $PANEL_USERNAME"
info "🔑 密码: $PANEL_PASSWORD" info "🔑 密码: $PANEL_PASSWORD"
echo echo
cyan "💡 面板状态: 已自动配置为指定端口和账号" cyan "💡 配置状态: 已自动设置端口和账号密码"
echo echo
warn "⚠️ 重要安全提醒:" warn "⚠️ 重要提醒:"
warn "1. 请立即访问面板验证登录" warn "1. 请立即访问面板验证登录"
warn "2. 建议定期修改密码" warn "2. 建议定期修改密码"
warn "3. 确保防火墙已正确配置" warn "3. 确保防火墙已正确配置"
@@ -487,10 +555,28 @@ show_arch_info() {
echo echo
} }
# 安装expect工具
install_expect() {
if ! command -v expect >/dev/null 2>&1; then
info "📦 安装 expect 工具用于自动配置..."
if command -v apt-get >/dev/null 2>&1; then
apt-get install -y expect
elif command -v yum >/dev/null 2>&1; then
yum install -y expect
elif command -v dnf >/dev/null 2>&1; then
dnf install -y expect
elif command -v apk >/dev/null 2>&1; then
apk add expect
else
warn "⚠ 无法安装expect将使用备用配置方案"
fi
fi
}
# 主函数 # 主函数
main() { main() {
show_banner show_banner
show_roar show_creator
info "🚀 开始 x-ui 多架构自动安装..." info "🚀 开始 x-ui 多架构自动安装..."
show_arch_info show_arch_info
@@ -500,10 +586,12 @@ main() {
detect_architecture detect_architecture
build_download_url build_download_url
install_dependencies install_dependencies
install_expect
download_xui download_xui
extract_and_install extract_and_install
setup_service setup_service
customize_panel direct_db_config # 先尝试直接修改数据库
modify_panel_config # 再使用交互式配置确保生效
setup_firewall setup_firewall
start_service start_service
verify_installation verify_installation
@@ -513,7 +601,7 @@ main() {
echo -e "${RED}╔════════════════════════════════════════╗" echo -e "${RED}╔════════════════════════════════════════╗"
echo -e "║ ║" echo -e "║ ║"
echo -e "║ ${YELLOW}🎊 安装完成咸v咆哮感谢使用${RED} ║" echo -e "║ ${YELLOW}🎊 安装完成咸v咆哮感谢使用${RED} ║"
echo -e "║ ${GREEN}💪 有問題就咆哮,老子帮你搞定${RED} ║" echo -e "║ ${GREEN}🐟 不想上班不想上班${RED} ║"
echo -e "║ ║" echo -e "║ ║"
echo -e "${RED}╚════════════════════════════════════════╝${NC}" echo -e "${RED}╚════════════════════════════════════════╝${NC}"
echo echo