diff --git a/README.md b/README.md index e844be2..54472c9 100644 --- a/README.md +++ b/README.md @@ -238,6 +238,8 @@ Run this on your VPS (requires root): curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash ``` +> The installer automatically downloads the latest paqet release from GitHub. + Then open the interactive menu: ```bash @@ -568,12 +570,12 @@ macOS requires manual setup since there's no automated script yet. mkdir -p ~/paqet && cd ~/paqet # Download latest release (Intel Mac) -curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.16/paqet-darwin-amd64-v1.0.0-alpha.16.tar.gz -tar -xzf paqet-darwin-amd64-v1.0.0-alpha.16.tar.gz +curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.17/paqet-darwin-amd64-v1.0.0-alpha.17.tar.gz +tar -xzf paqet-darwin-amd64-v1.0.0-alpha.17.tar.gz # For Apple Silicon (M1/M2/M3): -# curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.16/paqet-darwin-arm64-v1.0.0-alpha.16.tar.gz -# tar -xzf paqet-darwin-arm64-v1.0.0-alpha.16.tar.gz +# curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.17/paqet-darwin-arm64-v1.0.0-alpha.17.tar.gz +# tar -xzf paqet-darwin-arm64-v1.0.0-alpha.17.tar.gz # Make executable chmod +x paqet_darwin_amd64 @@ -766,8 +768,8 @@ Then run GFK from within the venv. ```bash # Download paqet mkdir -p ~/paqet && cd ~/paqet -curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.16/paqet-linux-amd64-v1.0.0-alpha.16.tar.gz -tar -xzf paqet-linux-amd64-v1.0.0-alpha.16.tar.gz +curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.17/paqet-linux-amd64-v1.0.0-alpha.17.tar.gz +tar -xzf paqet-linux-amd64-v1.0.0-alpha.17.tar.gz chmod +x paqet_linux_amd64 # Create config @@ -867,18 +869,18 @@ Do this on a machine that CAN access GitHub (your VPS, a friend's computer, VPN, **Go to:** https://github.com/hanselime/paqet/releases -> **Note:** Check for the latest version. Examples below use v1.0.0-alpha.16 - use newer if available. +> **Note:** Check for the latest version. Examples below use v1.0.0-alpha.17 - use newer if available. **Click to download the right file for your CLIENT machine:** | Your Client OS | Download this file | |----------------|-------------------| -| Windows | `paqet-windows-amd64-v1.0.0-alpha.16.zip` | -| Linux (most computers) | `paqet-linux-amd64-v1.0.0-alpha.16.tar.gz` | -| Linux (Raspberry Pi 3/4/5, ARM 64-bit) | `paqet-linux-arm64-v1.0.0-alpha.16.tar.gz` | -| Linux (Raspberry Pi 2, ARM 32-bit) | `paqet-linux-arm32-v1.0.0-alpha.16.tar.gz` | -| macOS (Intel) | `paqet-darwin-amd64-v1.0.0-alpha.16.tar.gz` | -| macOS (M1/M2/M3) | `paqet-darwin-arm64-v1.0.0-alpha.16.tar.gz` | +| Windows | `paqet-windows-amd64-v1.0.0-alpha.17.zip` | +| Linux (most computers) | `paqet-linux-amd64-v1.0.0-alpha.17.tar.gz` | +| Linux (Raspberry Pi 3/4/5, ARM 64-bit) | `paqet-linux-arm64-v1.0.0-alpha.17.tar.gz` | +| Linux (Raspberry Pi 2, ARM 32-bit) | `paqet-linux-arm32-v1.0.0-alpha.17.tar.gz` | +| macOS (Intel) | `paqet-darwin-amd64-v1.0.0-alpha.17.tar.gz` | +| macOS (M1/M2/M3) | `paqet-darwin-arm64-v1.0.0-alpha.17.tar.gz` | --- @@ -886,7 +888,7 @@ Do this on a machine that CAN access GitHub (your VPS, a friend's computer, VPN, **On Linux/macOS:** ```bash -tar -xzf paqet-linux-amd64-v1.0.0-alpha.16.tar.gz +tar -xzf paqet-linux-amd64-v1.0.0-alpha.17.tar.gz mv paqet_linux_amd64 paqet chmod +x paqet ``` @@ -1667,12 +1669,12 @@ macOS نیاز به راه‌اندازی دستی دارد. mkdir -p ~/paqet && cd ~/paqet # برای Intel Mac: -curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.16/paqet-darwin-amd64-v1.0.0-alpha.16.tar.gz -tar -xzf paqet-darwin-amd64-v1.0.0-alpha.16.tar.gz +curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.17/paqet-darwin-amd64-v1.0.0-alpha.17.tar.gz +tar -xzf paqet-darwin-amd64-v1.0.0-alpha.17.tar.gz # برای Apple Silicon (M1/M2/M3): -# curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.16/paqet-darwin-arm64-v1.0.0-alpha.16.tar.gz -# tar -xzf paqet-darwin-arm64-v1.0.0-alpha.16.tar.gz +# curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.17/paqet-darwin-arm64-v1.0.0-alpha.17.tar.gz +# tar -xzf paqet-darwin-arm64-v1.0.0-alpha.17.tar.gz chmod +x paqet_darwin_amd64 ``` @@ -1784,8 +1786,8 @@ sudo python3 mainclient.py ```bash # دانلود paqet mkdir -p ~/paqet && cd ~/paqet -curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.16/paqet-linux-amd64-v1.0.0-alpha.16.tar.gz -tar -xzf paqet-linux-amd64-v1.0.0-alpha.16.tar.gz +curl -LO https://github.com/hanselime/paqet/releases/download/v1.0.0-alpha.17/paqet-linux-amd64-v1.0.0-alpha.17.tar.gz +tar -xzf paqet-linux-amd64-v1.0.0-alpha.17.tar.gz chmod +x paqet_linux_amd64 # ایجاد config @@ -1877,18 +1879,18 @@ sudo paqctl info **بروید به:** https://github.com/hanselime/paqet/releases -> **نکته:** آخرین نسخه را چک کنید. مثال‌های زیر از v1.0.0-alpha.16 استفاده می‌کنند - اگر جدیدتر موجود است آن را بگیرید. +> **نکته:** آخرین نسخه را چک کنید. مثال‌های زیر از v1.0.0-alpha.17 استفاده می‌کنند - اگر جدیدتر موجود است آن را بگیرید. **فایل مناسب سیستم کلاینت خود را دانلود کنید:** | سیستم کلاینت شما | این فایل را دانلود کنید | |-----------------|----------------------| -| ویندوز | `paqet-windows-amd64-v1.0.0-alpha.16.zip` | -| لینوکس (اکثر کامپیوترها) | `paqet-linux-amd64-v1.0.0-alpha.16.tar.gz` | -| لینوکس (Raspberry Pi 3/4/5, ARM 64-bit) | `paqet-linux-arm64-v1.0.0-alpha.16.tar.gz` | -| لینوکس (Raspberry Pi 2, ARM 32-bit) | `paqet-linux-arm32-v1.0.0-alpha.16.tar.gz` | -| مک (Intel) | `paqet-darwin-amd64-v1.0.0-alpha.16.tar.gz` | -| مک (M1/M2/M3) | `paqet-darwin-arm64-v1.0.0-alpha.16.tar.gz` | +| ویندوز | `paqet-windows-amd64-v1.0.0-alpha.17.zip` | +| لینوکس (اکثر کامپیوترها) | `paqet-linux-amd64-v1.0.0-alpha.17.tar.gz` | +| لینوکس (Raspberry Pi 3/4/5, ARM 64-bit) | `paqet-linux-arm64-v1.0.0-alpha.17.tar.gz` | +| لینوکس (Raspberry Pi 2, ARM 32-bit) | `paqet-linux-arm32-v1.0.0-alpha.17.tar.gz` | +| مک (Intel) | `paqet-darwin-amd64-v1.0.0-alpha.17.tar.gz` | +| مک (M1/M2/M3) | `paqet-darwin-arm64-v1.0.0-alpha.17.tar.gz` | --- @@ -1896,7 +1898,7 @@ sudo paqctl info **در لینوکس/مک:** ```bash -tar -xzf paqet-linux-amd64-v1.0.0-alpha.16.tar.gz +tar -xzf paqet-linux-amd64-v1.0.0-alpha.17.tar.gz mv paqet_linux_amd64 paqet chmod +x paqet ``` diff --git a/paqctl.sh b/paqctl.sh index 6351afe..90d6f9f 100644 --- a/paqctl.sh +++ b/paqctl.sh @@ -32,7 +32,7 @@ fi VERSION="1.0.0" # Pinned versions for stability (update these after testing new releases) -PAQET_VERSION_PINNED="v1.0.0-alpha.16" +PAQET_VERSION_PINNED="v1.0.0-alpha.17" XRAY_VERSION_PINNED="v26.2.4" GFK_VERSION_PINNED="v1.0.0" @@ -2229,7 +2229,7 @@ create_management_script() { VERSION="1.0.0" # Pinned versions for stability (update these after testing new releases) -PAQET_VERSION_PINNED="v1.0.0-alpha.16" +PAQET_VERSION_PINNED="v1.0.0-alpha.17" XRAY_VERSION_PINNED="v26.2.4" GFK_VERSION_PINNED="v1.0.0" @@ -5905,7 +5905,13 @@ install_additional_backend() { _install_paqet_components() { log_info "Downloading paqet binary..." - if ! download_paqet "$PAQET_VERSION_PINNED"; then + local _paqet_ver + _paqet_ver=$(curl -s --max-time 10 "$PAQET_API_URL" 2>/dev/null | grep -o '"tag_name"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | grep -o '"[^"]*"$' | tr -d '"') + if [ -z "$_paqet_ver" ] || ! _validate_version_tag "$_paqet_ver"; then + _paqet_ver="$PAQET_VERSION_PINNED" + fi + log_info "Using paqet ${_paqet_ver}" + if ! download_paqet "$_paqet_ver"; then log_error "Failed to download paqet" return 1 fi @@ -7362,9 +7368,12 @@ main() { PAQET_VERSION="$GFK_VERSION_PINNED" log_info "Using GFK ${PAQET_VERSION} (pinned for stability)" else - # Use pinned version for stability (update command can get latest) - PAQET_VERSION="$PAQET_VERSION_PINNED" - log_info "Installing paqet ${PAQET_VERSION} (pinned for stability)" + # Fetch latest version from GitHub, fall back to pinned if API unreachable + PAQET_VERSION=$(curl -s --max-time 10 "$PAQET_API_URL" 2>/dev/null | grep -o '"tag_name"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | grep -o '"[^"]*"$' | tr -d '"') + if [ -z "$PAQET_VERSION" ] || ! _validate_version_tag "$PAQET_VERSION"; then + PAQET_VERSION="$PAQET_VERSION_PINNED" + fi + log_info "Installing paqet ${PAQET_VERSION}" download_paqet "$PAQET_VERSION" fi echo "" diff --git a/windows/paqet-client.ps1 b/windows/paqet-client.ps1 index 1fb74e5..cbd3d67 100644 --- a/windows/paqet-client.ps1 +++ b/windows/paqet-client.ps1 @@ -49,7 +49,7 @@ $ErrorActionPreference = "Stop" # Directories and pinned versions (for stability - update after testing new releases) $InstallDir = "C:\paqet" $PaqetExe = "$InstallDir\paqet_windows_amd64.exe" -$PaqetVersion = "v1.0.0-alpha.16" # Pinned paqet version +$PaqetVersionPinned = "v1.0.0-alpha.17" # Fallback if GitHub API unreachable $GfkDir = "$InstallDir\gfk" $ConfigFile = "$InstallDir\config.yaml" $SettingsFile = "$InstallDir\settings.conf" @@ -71,6 +71,18 @@ function Write-Success { Write-Host "[OK] $args" -ForegroundColor Green } function Write-Warn { Write-Host "[WARN] $args" -ForegroundColor Yellow } function Write-Err { Write-Host "[ERROR] $args" -ForegroundColor Red } +# Fetch latest paqet version from GitHub, fall back to pinned +function Get-LatestPaqetVersion { + try { + $response = Invoke-RestMethod -Uri "https://api.github.com/repos/hanselime/paqet/releases/latest" -TimeoutSec 10 + if ($response.tag_name -match '^v?\d+\.\d+\.\d+') { + return $response.tag_name + } + } catch {} + return $PaqetVersionPinned +} +$PaqetVersion = Get-LatestPaqetVersion + # Input validation (security: prevent config injection) function Test-ValidIP { param([string]$IP)