diff --git a/quick-install.sh b/quick-install.sh index bcc505c..65303cf 100644 --- a/quick-install.sh +++ b/quick-install.sh @@ -5,14 +5,7 @@ set -e INSTALL_DIR="/opt/sing-box-warp" CONFIG_DIR="/etc/sing-box-warp" CACHE_DIR="/var/cache/sing-box-warp" -SING_BOX_VERSION="#!/bin/bash - -set -e - -INSTALL_DIR="/opt/sing-box-warp" -CONFIG_DIR="/etc/sing-box-warp" -CACHE_DIR="/var/cache/sing-box-warp" -SING_BOX_VERSION="1.13.2-extended-1.6.2" +SING_BOX_VERSION="1.12.12-extended-1.5.1" SING_BOX_URL="https://github.com/shtorm-7/sing-box-extended/releases/download/v${SING_BOX_VERSION}/sing-box-${SING_BOX_VERSION}-linux-amd64.tar.gz" echo "=== Sing-Box WARP Quick Installer ===" @@ -225,271 +218,8 @@ Type=simple User=root WorkingDirectory=/opt/sing-box-warp Environment="HOME=/var/cache/sing-box-warp" -ExecStartPre=/opt/sing-box-warp/generate-config.sh -ExecStart=/usr/local/bin/sing-box run -c /opt/sing-box-warp/config.json -Restart=on-failure -RestartSec=5s -StandardOutput=journal -StandardError=journal - -NoNewPrivileges=false -PrivateTmp=true -ProtectSystem=strict -ProtectHome=true -ReadWritePaths=/opt/sing-box-warp /var/cache/sing-box-warp -AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE - -[Install] -WantedBy=multi-user.target -'SERVICE_EOF' - -echo "Configuring sysctl parameters..." -cat > /etc/sysctl.d/99-sing-box-warp.conf < "$CONFIG_DIR/warp.conf" - -echo "" -echo "Configuration saved to $CONFIG_DIR/warp.conf" - -echo "" -echo "Downloading sing-box..." -cd /tmp -wget -q --show-progress "$SING_BOX_URL" -tar -xzf "sing-box-${SING_BOX_VERSION}-linux-amd64.tar.gz" -mv "sing-box-${SING_BOX_VERSION}-linux-amd64/sing-box" /usr/local/bin/sing-box -chmod +x /usr/local/bin/sing-box -rm -rf "sing-box-${SING_BOX_VERSION}-linux-amd64.tar.gz" "sing-box-${SING_BOX_VERSION}-linux-amd64" - -echo "Creating generate-config.sh..." -cat > "$INSTALL_DIR/generate-config.sh" <<"'GENERATE_CONFIG_EOF'" -#!/bin/bash - -WARP_CONF="${WARP_CONF:-/etc/sing-box-warp/warp.conf}" -OUTPUT_CONFIG="${OUTPUT_CONFIG:-/opt/sing-box-warp/config.json}" - -urldecode() { - echo "$1" | sed 's/%3[dD]/=/g; s/%2[bB]/+/g; s/%2[fF]/\//g; s/%2[cC]/,/g' -} - -get_param() { - local url="$1" - local param="$2" - echo "$url" | sed -n "s/.*[?&]${param}=\([^&#]*\).*/\1/p" -} - -parse_warp_conf() { - WG_URL=$(grep "^wg://" "$WARP_CONF" | head -1) - - if [ -z "$WG_URL" ]; then - echo "Error: No wg:// URL found in $WARP_CONF" - exit 1 - fi - - SERVER=$(echo "$WG_URL" | sed 's|wg://\([^:]*\):.*|\1|') - PORT=$(echo "$WG_URL" | sed 's|wg://[^:]*:\([0-9]*\)?.*|\1|') - - PRIVATE_KEY=$(urldecode "$(get_param "$WG_URL" "private_key")") - PUBLIC_KEY=$(urldecode "$(get_param "$WG_URL" "peer_public_key")") - RESERVED=$(urldecode "$(get_param "$WG_URL" "reserved")") - MTU=$(get_param "$WG_URL" "mtu") - LOCAL_ADDRESS=$(urldecode "$(get_param "$WG_URL" "local_address")") - - Jc=$(get_param "$WG_URL" "junk_packet_count") - Jmin=$(get_param "$WG_URL" "junk_packet_min_size") - Jmax=$(get_param "$WG_URL" "junk_packet_max_size") - H1=$(get_param "$WG_URL" "init_packet_magic_header") - H2=$(get_param "$WG_URL" "response_packet_magic_header") - H3=$(get_param "$WG_URL" "underload_packet_magic_header") - H4=$(get_param "$WG_URL" "transport_packet_magic_header") - INIT_JUNK=$(get_param "$WG_URL" "init_packet_junk_size") - RESP_JUNK=$(get_param "$WG_URL" "response_packet_junk_size") - - S1=$(echo "$RESERVED" | tr ',-' '\n' | sed -n '1p') - S2=$(echo "$RESERVED" | tr ',-' '\n' | sed -n '2p') - S3=$(echo "$RESERVED" | tr ',-' '\n' | sed -n '3p') - - IPV4=$(echo "$LOCAL_ADDRESS" | tr ',-' '\n' | sed -n '1p') - IPV6=$(echo "$LOCAL_ADDRESS" | tr ',-' '\n' | sed -n '2p') - - if [ -z "$IPV4" ]; then - echo "Error: local_address (IPv4) is empty" - exit 1 - fi - - if [ -n "$IPV6" ]; then - ADDRESS_JSON=$(printf '["%s", "%s"]' "$IPV4" "$IPV6") - else - ADDRESS_JSON=$(printf '["%s"]' "$IPV4") - fi - - MTU=${MTU:-1280} - Jc=${Jc:-4} - Jmin=${Jmin:-40} - Jmax=${Jmax:-70} - H1=${H1:-1} - H2=${H2:-2} - H3=${H3:-3} - H4=${H4:-4} - INIT_JUNK=${INIT_JUNK:-0} - RESP_JUNK=${RESP_JUNK:-0} - S1=${S1:-0} - S2=${S2:-0} - S3=${S3:-0} - - echo "Parsed values:" - echo "SERVER: $SERVER:$PORT" - echo "PRIVATE_KEY: ${PRIVATE_KEY:0:20}..." - echo "PUBLIC_KEY: ${PUBLIC_KEY:0:20}..." - echo "RESERVED: [$S1, $S2, $S3]" - echo "LOCAL_ADDRESS: $IPV4, $IPV6" - echo "MTU: $MTU" - echo "Amnezia: jc=$Jc, jmin=$Jmin, jmax=$Jmax, h1=$H1, h2=$H2, h3=$H3, h4=$H4" - - cat > "$OUTPUT_CONFIG" < /etc/systemd/system/sing-box-warp.service <<"'SERVICE_EOF'" -[Unit] -Description=Sing-Box WARP SOCKS5 Proxy -After=network-online.target -Wants=network-online.target - -[Service] -Type=simple -User=root -WorkingDirectory=/opt/sing-box-warp -Environment="HOME=/var/cache/sing-box-warp" +Environment="WARP_CONF=/opt/sing-box-warp/warp.conf" +Environment="OUTPUT_CONFIG=/opt/sing-box-warp/config.json" ExecStartPre=/opt/sing-box-warp/generate-config.sh ExecStart=/usr/local/bin/sing-box run -c /opt/sing-box-warp/config.json Restart=on-failure