feat: auto-detect latest paqet version from GitHub on install
Fresh installs now fetch the latest paqet release from GitHub API. Falls back to pinned v1.0.0-alpha.17 if the API is unreachable.
This commit is contained in:
58
README.md
58
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
|
||||
```
|
||||
|
||||
21
paqctl.sh
21
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 ""
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user