1
This commit is contained in:
109
v2raya/v2raya.sh
109
v2raya/v2raya.sh
@@ -78,6 +78,11 @@ download_file() {
|
||||
|
||||
print_info "正在下载: $url"
|
||||
|
||||
# 如果存在旧的不完整文件,先删除
|
||||
if [[ -f "$output" ]]; then
|
||||
rm -f "$output"
|
||||
fi
|
||||
|
||||
if command -v wget &> /dev/null; then
|
||||
wget -q --show-progress "$url" -O "$output"
|
||||
elif command -v curl &> /dev/null; then
|
||||
@@ -87,11 +92,13 @@ download_file() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
# 检查下载是否成功
|
||||
if [[ $? -eq 0 ]] && [[ -f "$output" ]] && [[ -s "$output" ]]; then
|
||||
print_success "下载完成: $output"
|
||||
return 0
|
||||
else
|
||||
print_error "下载失败: $url"
|
||||
rm -f "$output"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@@ -105,20 +112,63 @@ download_packages() {
|
||||
|
||||
local xray_file="xray_${XRAY_VERSION}_${arch}.deb"
|
||||
local v2raya_file="v2raya_${V2RAYA_VERSION}_${arch}.deb"
|
||||
local download_failed=0
|
||||
|
||||
# 下载 Xray
|
||||
if [[ ! -f "$INSTALL_DIR/$xray_file" ]]; then
|
||||
download_file "$BASE_URL/$xray_file" "$INSTALL_DIR/$xray_file"
|
||||
if ! download_file "$BASE_URL/$xray_file" "$INSTALL_DIR/$xray_file"; then
|
||||
download_failed=1
|
||||
fi
|
||||
else
|
||||
print_warning "文件已存在,跳过下载: $xray_file"
|
||||
fi
|
||||
|
||||
# 下载 V2rayA
|
||||
if [[ ! -f "$INSTALL_DIR/$v2raya_file" ]]; then
|
||||
download_file "$BASE_URL/$v2raya_file" "$INSTALL_DIR/$v2raya_file"
|
||||
if ! download_file "$BASE_URL/$v2raya_file" "$INSTALL_DIR/$v2raya_file"; then
|
||||
download_failed=1
|
||||
fi
|
||||
else
|
||||
print_warning "文件已存在,跳过下载: $v2raya_file"
|
||||
fi
|
||||
|
||||
return $download_failed
|
||||
}
|
||||
|
||||
# 验证文件是否有效
|
||||
verify_deb_file() {
|
||||
local file=$1
|
||||
|
||||
if [[ ! -f "$file" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ ! -s "$file" ]]; then
|
||||
print_warning "文件为空: $file"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 检查 file 命令是否存在
|
||||
if command -v file &> /dev/null; then
|
||||
if ! file "$file" | grep -q "Debian"; then
|
||||
print_warning "文件不是有效的 deb 包: $file"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
# 如果没有 file 命令,简单检查文件扩展名和大小
|
||||
if [[ ! "$file" =~ \.deb$ ]]; then
|
||||
print_warning "文件扩展名不正确: $file"
|
||||
return 1
|
||||
fi
|
||||
# 检查文件大小是否合理(至少 1KB)
|
||||
local size=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file" 2>/dev/null)
|
||||
if [[ $size -lt 1024 ]]; then
|
||||
print_warning "文件大小异常: $file (${size} bytes)"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# 安装 V2rayA
|
||||
@@ -130,30 +180,49 @@ install_v2raya() {
|
||||
# 检查文件是否存在
|
||||
if [[ ! -f "$xray_file" ]] || [[ ! -f "$v2raya_file" ]]; then
|
||||
print_warning "安装包不存在,开始下载..."
|
||||
download_packages
|
||||
if ! download_packages; then
|
||||
print_error "下载失败,无法继续安装"
|
||||
print_info "请检查网络连接或下载地址是否正确"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 验证文件完整性
|
||||
print_info "验证安装包完整性..."
|
||||
if ! verify_deb_file "$xray_file"; then
|
||||
print_error "Xray 安装包验证失败,请重新下载"
|
||||
rm -f "$xray_file"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! verify_deb_file "$v2raya_file"; then
|
||||
print_error "V2rayA 安装包验证失败,请重新下载"
|
||||
rm -f "$v2raya_file"
|
||||
return 1
|
||||
fi
|
||||
print_success "安装包验证通过"
|
||||
|
||||
print_info "开始安装 Xray..."
|
||||
chmod 644 "$xray_file"
|
||||
dpkg -i "$xray_file"
|
||||
apt --fix-broken install -y
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
if dpkg -i "$xray_file" 2>&1 | tee /tmp/xray_install.log; then
|
||||
apt --fix-broken install -y
|
||||
print_success "Xray 安装成功"
|
||||
else
|
||||
print_error "Xray 安装失败"
|
||||
exit 1
|
||||
print_info "错误日志已保存到: /tmp/xray_install.log"
|
||||
return 1
|
||||
fi
|
||||
print_success "Xray 安装成功"
|
||||
|
||||
print_info "开始安装 V2rayA..."
|
||||
chmod 644 "$v2raya_file"
|
||||
dpkg -i "$v2raya_file"
|
||||
apt --fix-broken install -y
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
if dpkg -i "$v2raya_file" 2>&1 | tee /tmp/v2raya_install.log; then
|
||||
apt --fix-broken install -y
|
||||
print_success "V2rayA 安装成功"
|
||||
else
|
||||
print_error "V2rayA 安装失败"
|
||||
exit 1
|
||||
print_info "错误日志已保存到: /tmp/v2raya_install.log"
|
||||
return 1
|
||||
fi
|
||||
print_success "V2rayA 安装成功"
|
||||
|
||||
# 启动服务
|
||||
print_info "启动 V2rayA 服务..."
|
||||
@@ -163,6 +232,8 @@ install_v2raya() {
|
||||
print_success "V2rayA 服务启动成功"
|
||||
else
|
||||
print_error "V2rayA 服务启动失败"
|
||||
print_info "请运行 'systemctl status v2raya.service' 查看详情"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 设置开机自启
|
||||
@@ -301,7 +372,11 @@ main() {
|
||||
read -p "按任意键继续..." -n 1
|
||||
;;
|
||||
3)
|
||||
download_packages
|
||||
if download_packages; then
|
||||
print_success "所有安装包下载完成"
|
||||
else
|
||||
print_error "部分安装包下载失败"
|
||||
fi
|
||||
read -p "按任意键继续..." -n 1
|
||||
;;
|
||||
4)
|
||||
|
||||
Reference in New Issue
Block a user