Compare commits

..
2 Commits
Author SHA1 Message Date
SamNet-dev 28e5cc7a22 chore: remove unused paqet binary (downloaded at install time) 2026-02-23 23:50:35 -06:00
SamNet-dev 955e819677 feat: migrate paqctl to self-hosted Gitea (git.samnet.dev)
All repository URLs updated from GitHub (SamNet-dev/paqctl) to
Gitea (git.samnet.dev/SamNet-dev/paqctl). Third-party references
(hanselime/paqet, Xray, microsocks) remain on GitHub.
2026-02-23 23:46:21 -06:00
4 changed files with 40 additions and 78 deletions
+3 -27
View File
@@ -1,28 +1,4 @@
# Python
__pycache__/ __pycache__/
*.py[cod] *.pyc
*$py.class *.pyo
*.so .claude/
.Python
venv/
ENV/
.venv/
# Client config (contains credentials)
gfk/parameters.py
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
# Logs
*.log
# Release binaries (uploaded to GitHub releases, not committed)
*.tar.gz
+22 -36
View File
@@ -7,10 +7,10 @@
|_| |_| |_| |_|
``` ```
[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/SamNet-dev/paqctl/releases) [![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://git.samnet.dev/SamNet-dev/paqctl/releases)
[![License](https://img.shields.io/badge/license-AGPL--3.0-green.svg)](LICENSE) [![License](https://img.shields.io/badge/license-AGPL--3.0-green.svg)](LICENSE)
[![Server](https://img.shields.io/badge/server-Linux-lightgrey.svg)](https://github.com/SamNet-dev/paqctl) [![Server](https://img.shields.io/badge/server-Linux-lightgrey.svg)](https://git.samnet.dev/SamNet-dev/paqctl)
[![Client](https://img.shields.io/badge/client-Windows%20%7C%20macOS%20%7C%20Linux-green.svg)](https://github.com/SamNet-dev/paqctl) [![Client](https://img.shields.io/badge/client-Windows%20%7C%20macOS%20%7C%20Linux-green.svg)](https://git.samnet.dev/SamNet-dev/paqctl)
**Bypass firewall restrictions and access the free internet** **Bypass firewall restrictions and access the free internet**
@@ -131,18 +131,16 @@ This is for when you have a panel on **both** servers (Iran + foreign) and want
**1. Install paqctl on the foreign server (server role):** **1. Install paqctl on the foreign server (server role):**
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash curl -fsSL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
``` ```
Alternative (mirror): `curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash`
- Choose **server** role - Choose **server** role
- Set port mapping: `14000:443` (where `443` is your panel's inbound port) - Set port mapping: `14000:443` (where `443` is your panel's inbound port)
- paqctl detects Xray and adds SOCKS5 alongside your panel (e.g. `14001:10443`) - paqctl detects Xray and adds SOCKS5 alongside your panel (e.g. `14001:10443`)
**2. Install paqctl on the Iran server (client role):** **2. Install paqctl on the Iran server (client role):**
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash curl -fsSL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
``` ```
Alternative (mirror): `curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash`
- Choose **client** role - Choose **client** role
- Use the **exact same** port mappings shown in the server output (e.g. `14000:443,14001:10443`) - Use the **exact same** port mappings shown in the server output (e.g. `14000:443,14001:10443`)
- Use the same auth code from the server setup - Use the same auth code from the server setup
@@ -237,12 +235,7 @@ paqctl will add SOCKS5 on the next available port and append it automatically.
Run this on your VPS (requires root): Run this on your VPS (requires root):
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash curl -fsSL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
```
Alternative (mirror, for restricted regions):
```bash
curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
``` ```
> The installer automatically downloads the latest paqet release from GitHub. > The installer automatically downloads the latest paqet release from GitHub.
@@ -284,7 +277,7 @@ The simplest way to get started - just download, double-click, and connect!
### Step 1: Download ### Step 1: Download
1. Go to: https://github.com/SamNet-dev/paqctl 1. Go to: https://git.samnet.dev/SamNet-dev/paqctl
2. Click the green **"Code"** button → **"Download ZIP"** 2. Click the green **"Code"** button → **"Download ZIP"**
3. Extract the ZIP file anywhere (e.g., Desktop) 3. Extract the ZIP file anywhere (e.g., Desktop)
4. Open the `windows` folder inside 4. Open the `windows` folder inside
@@ -333,12 +326,12 @@ For more control, use the interactive PowerShell menu.
**Option A: One-liner (downloads and runs automatically)** **Option A: One-liner (downloads and runs automatically)**
```powershell ```powershell
irm https://raw.githubusercontent.com/SamNet-dev/paqctl/main/windows/paqet-client.ps1 | iex irm https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/windows/paqet-client.ps1 | iex
``` ```
**Option B: Download first, then run** **Option B: Download first, then run**
```powershell ```powershell
git clone https://github.com/SamNet-dev/paqctl.git git clone https://git.samnet.dev/SamNet-dev/paqctl.git
cd paqctl\windows cd paqctl\windows
.\paqet-client.ps1 .\paqet-client.ps1
``` ```
@@ -653,7 +646,7 @@ brew install python@3.11
#### Step 2: Clone the Repository #### Step 2: Clone the Repository
```bash ```bash
git clone https://github.com/SamNet-dev/paqctl.git git clone https://git.samnet.dev/SamNet-dev/paqctl.git
cd paqctl/gfk/client cd paqctl/gfk/client
``` ```
@@ -821,7 +814,7 @@ sudo apt install python3 python3-pip # Debian/Ubuntu
pip3 install scapy aioquic pip3 install scapy aioquic
# Clone and configure # Clone and configure
git clone https://github.com/SamNet-dev/paqctl.git git clone https://git.samnet.dev/SamNet-dev/paqctl.git
cd paqctl/gfk/client cd paqctl/gfk/client
# Create parameters.py (same as macOS section above) # Create parameters.py (same as macOS section above)
@@ -1149,7 +1142,7 @@ This tool is for legitimate privacy and access needs. Laws vary by country. Use
## Contributing ## Contributing
Issues and pull requests are welcome at: Issues and pull requests are welcome at:
https://github.com/SamNet-dev/paqctl https://git.samnet.dev/SamNet-dev/paqctl
--- ---
@@ -1259,18 +1252,16 @@ AGPL-3.0 License - See [LICENSE](LICENSE) file.
**۱. نصب paqctl روی سرور خارج (نقش server):** **۱. نصب paqctl روی سرور خارج (نقش server):**
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash curl -fsSL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
``` ```
جایگزین (میرور): `curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash`
- نقش **server** را انتخاب کنید - نقش **server** را انتخاب کنید
- مپینگ پورت: `14000:443` (که `443` پورت اینباند پنل شماست) - مپینگ پورت: `14000:443` (که `443` پورت اینباند پنل شماست)
- paqctl تشخیص می‌دهد Xray در حال اجراست و SOCKS5 را در کنار پنل اضافه می‌کند (مثلاً `14001:10443`) - paqctl تشخیص می‌دهد Xray در حال اجراست و SOCKS5 را در کنار پنل اضافه می‌کند (مثلاً `14001:10443`)
**۲. نصب paqctl روی سرور ایران (نقش client):** **۲. نصب paqctl روی سرور ایران (نقش client):**
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash curl -fsSL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
``` ```
جایگزین (میرور): `curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash`
- نقش **client** را انتخاب کنید - نقش **client** را انتخاب کنید
- **دقیقاً همان** مپینگ‌هایی که در خروجی سرور نمایش داده شد را استفاده کنید (مثلاً `14000:443,14001:10443`) - **دقیقاً همان** مپینگ‌هایی که در خروجی سرور نمایش داده شد را استفاده کنید (مثلاً `14000:443,14001:10443`)
- همان کد احراز هویت سرور را استفاده کنید - همان کد احراز هویت سرور را استفاده کنید
@@ -1365,12 +1356,7 @@ paqctl به صورت خودکار SOCKS5 را روی پورت آزاد بعدی
این دستور را روی VPS خود اجرا کنید (نیاز به root دارد): این دستور را روی VPS خود اجرا کنید (نیاز به root دارد):
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash curl -fsSL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
```
جایگزین (میرور، برای مناطق محدود):
```bash
curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
``` ```
سپس منوی تعاملی را باز کنید: سپس منوی تعاملی را باز کنید:
@@ -1410,7 +1396,7 @@ sudo paqctl info
### مرحله ۱: دانلود ### مرحله ۱: دانلود
1. بروید به: https://github.com/SamNet-dev/paqctl 1. بروید به: https://git.samnet.dev/SamNet-dev/paqctl
2. روی دکمه سبز **"Code"** کلیک کنید → **"Download ZIP"** 2. روی دکمه سبز **"Code"** کلیک کنید → **"Download ZIP"**
3. فایل ZIP را در هر جایی استخراج کنید (مثلاً دسکتاپ) 3. فایل ZIP را در هر جایی استخراج کنید (مثلاً دسکتاپ)
4. وارد پوشه `windows` شوید 4. وارد پوشه `windows` شوید
@@ -1459,12 +1445,12 @@ sudo paqctl info
**گزینه A: یک خطی (خودکار دانلود و اجرا می‌کند)** **گزینه A: یک خطی (خودکار دانلود و اجرا می‌کند)**
```powershell ```powershell
irm https://raw.githubusercontent.com/SamNet-dev/paqctl/main/windows/paqet-client.ps1 | iex irm https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/windows/paqet-client.ps1 | iex
``` ```
**گزینه B: اول دانلود، بعد اجرا** **گزینه B: اول دانلود، بعد اجرا**
```powershell ```powershell
git clone https://github.com/SamNet-dev/paqctl.git git clone https://git.samnet.dev/SamNet-dev/paqctl.git
cd paqctl\windows cd paqctl\windows
.\paqet-client.ps1 .\paqet-client.ps1
``` ```
@@ -1754,7 +1740,7 @@ brew install python@3.11
#### مرحله ۲: کلون مخزن #### مرحله ۲: کلون مخزن
```bash ```bash
git clone https://github.com/SamNet-dev/paqctl.git git clone https://git.samnet.dev/SamNet-dev/paqctl.git
cd paqctl/gfk/client cd paqctl/gfk/client
``` ```
@@ -1846,7 +1832,7 @@ sudo apt install python3 python3-pip # Debian/Ubuntu
pip3 install scapy aioquic pip3 install scapy aioquic
# کلون و پیکربندی # کلون و پیکربندی
git clone https://github.com/SamNet-dev/paqctl.git git clone https://git.samnet.dev/SamNet-dev/paqctl.git
cd paqctl/gfk/client cd paqctl/gfk/client
# ایجاد parameters.py (مشابه بخش macOS) # ایجاد parameters.py (مشابه بخش macOS)
@@ -2152,8 +2138,8 @@ sudo paqctl logs # مشاهده لاگ‌ها
## مشارکت ## مشارکت
مشکلات و pull request در گیت‌هاب: مشکلات و pull request در گیتی:
https://github.com/SamNet-dev/paqctl https://git.samnet.dev/SamNet-dev/paqctl
--- ---
+11 -11
View File
@@ -12,11 +12,11 @@
# ║ * Auto-start on boot via systemd/OpenRC/SysVinit ║ # ║ * Auto-start on boot via systemd/OpenRC/SysVinit ║
# ║ * Easy management via CLI or interactive menu ║ # ║ * Easy management via CLI or interactive menu ║
# ║ ║ # ║ ║
# ║ Paqet: https://github.com/SamNet-dev/paqctl ║ # ║ Paqet: https://git.samnet.dev/SamNet-dev/paqctl ║
# ╚═══════════════════════════════════════════════════════════════════╝ # ╚═══════════════════════════════════════════════════════════════════╝
# #
# Usage: # Usage:
# curl -sL https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh | sudo bash # curl -sL https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh | sudo bash
# #
# Or: wget paqctl.sh && sudo bash paqctl.sh # Or: wget paqctl.sh && sudo bash paqctl.sh
# #
@@ -42,7 +42,7 @@ INSTALL_DIR="${INSTALL_DIR:-/opt/paqctl}"
BACKUP_DIR="$INSTALL_DIR/backups" BACKUP_DIR="$INSTALL_DIR/backups"
GFK_REPO="SamNet-dev/paqctl" GFK_REPO="SamNet-dev/paqctl"
GFK_BRANCH="main" GFK_BRANCH="main"
GFK_RAW_URL="https://raw.githubusercontent.com/${GFK_REPO}/${GFK_BRANCH}/gfk" GFK_RAW_URL="https://git.samnet.dev/${GFK_REPO}/raw/branch/${GFK_BRANCH}/gfk"
GFK_DIR="$INSTALL_DIR/gfk" GFK_DIR="$INSTALL_DIR/gfk"
MICROSOCKS_REPO="rofl0r/microsocks" MICROSOCKS_REPO="rofl0r/microsocks"
BACKEND="${BACKEND:-paqet}" BACKEND="${BACKEND:-paqet}"
@@ -2223,7 +2223,7 @@ create_management_script() {
#!/bin/bash #!/bin/bash
# #
# paqctl - Paqet Manager # paqctl - Paqet Manager
# https://github.com/SamNet-dev/paqctl # https://git.samnet.dev/SamNet-dev/paqctl
# #
VERSION="1.0.0" VERSION="1.0.0"
@@ -2239,7 +2239,7 @@ PAQET_REPO="hanselime/paqet"
PAQET_API_URL="https://api.github.com/repos/${PAQET_REPO}/releases/latest" PAQET_API_URL="https://api.github.com/repos/${PAQET_REPO}/releases/latest"
GFK_REPO="SamNet-dev/paqctl" GFK_REPO="SamNet-dev/paqctl"
GFK_BRANCH="main" GFK_BRANCH="main"
GFK_RAW_URL="https://raw.githubusercontent.com/${GFK_REPO}/${GFK_BRANCH}/gfk" GFK_RAW_URL="https://git.samnet.dev/${GFK_REPO}/raw/branch/${GFK_BRANCH}/gfk"
GFK_DIR="$INSTALL_DIR/gfk" GFK_DIR="$INSTALL_DIR/gfk"
MICROSOCKS_REPO="rofl0r/microsocks" MICROSOCKS_REPO="rofl0r/microsocks"
@@ -4356,7 +4356,7 @@ rollback_paqet() {
} }
update_management_script() { update_management_script() {
local update_url="https://raw.githubusercontent.com/SamNet-dev/paqctl/main/paqctl.sh" local update_url="https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/paqctl.sh"
local tmp_script local tmp_script
tmp_script=$(mktemp "/tmp/paqctl-update-XXXXXXXX.sh") tmp_script=$(mktemp "/tmp/paqctl-update-XXXXXXXX.sh")
@@ -6515,7 +6515,7 @@ show_help() {
echo " version Show version info" echo " version Show version info"
echo " help Show this help" echo " help Show this help"
echo "" echo ""
echo -e "${BOLD}Paqet:${NC} https://github.com/SamNet-dev/paqctl" echo -e "${BOLD}Paqet:${NC} https://git.samnet.dev/SamNet-dev/paqctl"
echo "" echo ""
} }
@@ -6537,7 +6537,7 @@ show_version() {
fi fi
fi fi
echo "" echo ""
echo -e " ${DIM}paqctl by SamNet-dev: https://github.com/SamNet-dev/paqctl${NC}" echo -e " ${DIM}paqctl by sam: https://git.samnet.dev/SamNet-dev/paqctl${NC}"
echo "" echo ""
} }
@@ -6712,7 +6712,7 @@ show_info_menu() {
echo " destination on the open internet." echo " destination on the open internet."
echo "" echo ""
echo -e " ${DIM}Technical stack: Go, gopacket, libpcap, KCP, smux, AES${NC}" echo -e " ${DIM}Technical stack: Go, gopacket, libpcap, KCP, smux, AES${NC}"
echo -e " ${DIM}Project: https://github.com/SamNet-dev/paqctl${NC}" echo -e " ${DIM}Project: https://git.samnet.dev/SamNet-dev/paqctl${NC}"
echo "" echo ""
read -n 1 -s -r -p " Press any key..." < /dev/tty || true read -n 1 -s -r -p " Press any key..." < /dev/tty || true
redraw=true redraw=true
@@ -6865,7 +6865,7 @@ show_info_menu() {
echo -e " ${CYAN}── Paqet ──${NC}" echo -e " ${CYAN}── Paqet ──${NC}"
echo "" echo ""
echo -e " ${BOLD}Creator:${NC} hanselime" echo -e " ${BOLD}Creator:${NC} hanselime"
echo -e " ${BOLD}Repository:${NC} https://github.com/SamNet-dev/paqctl" echo -e " ${BOLD}Repository:${NC} https://git.samnet.dev/SamNet-dev/paqctl"
echo -e " ${BOLD}License:${NC} AGPL-3.0 - Copyright (C) 2026 SamNet Technologies, LLC" echo -e " ${BOLD}License:${NC} AGPL-3.0 - Copyright (C) 2026 SamNet Technologies, LLC"
echo -e " ${BOLD}Language:${NC} Go" echo -e " ${BOLD}Language:${NC} Go"
echo -e " ${BOLD}Contact:${NC} Signal @hanselime.11" echo -e " ${BOLD}Contact:${NC} Signal @hanselime.11"
@@ -6886,7 +6886,7 @@ show_info_menu() {
echo -e " ${CYAN}── paqctl Management Tool ──${NC}" echo -e " ${CYAN}── paqctl Management Tool ──${NC}"
echo "" echo ""
echo -e " ${BOLD}Built by:${NC} SamNet-dev" echo -e " ${BOLD}Built by:${NC} SamNet-dev"
echo -e " ${BOLD}Repository:${NC} https://github.com/SamNet-dev/paqctl" echo -e " ${BOLD}Repository:${NC} https://git.samnet.dev/SamNet-dev/paqctl"
echo -e " ${BOLD}License:${NC} AGPL-3.0 - Copyright (C) 2026 SamNet Technologies, LLC" echo -e " ${BOLD}License:${NC} AGPL-3.0 - Copyright (C) 2026 SamNet Technologies, LLC"
echo "" echo ""
echo " paqctl provides one-click installation, configuration," echo " paqctl provides one-click installation, configuration,"
+4 -4
View File
@@ -496,9 +496,9 @@ function Install-Gfk {
New-Item -ItemType Directory -Path $GfkDir -Force | Out-Null New-Item -ItemType Directory -Path $GfkDir -Force | Out-Null
} }
# Copy bundled GFK scripts or download from GitHub # Copy bundled GFK scripts or download from Gitea
Write-Info "Setting up GFW-knocker scripts..." Write-Info "Setting up GFW-knocker scripts..."
$GfkGitHubBase = "https://raw.githubusercontent.com/SamNet-dev/paqctl/main/gfk/client" $GfkGitHubBase = "https://git.samnet.dev/SamNet-dev/paqctl/raw/branch/main/gfk/client"
foreach ($file in $GfkFiles) { foreach ($file in $GfkFiles) {
$dest = "$GfkDir\$file" $dest = "$GfkDir\$file"
$src = if ($GfkLocalDir) { "$GfkLocalDir\$file" } else { $null } $src = if ($GfkLocalDir) { "$GfkLocalDir\$file" } else { $null }
@@ -508,13 +508,13 @@ function Install-Gfk {
Copy-Item -Path $src -Destination $dest -Force Copy-Item -Path $src -Destination $dest -Force
Write-Info " Copied $file" Write-Info " Copied $file"
} else { } else {
# Download from GitHub (for one-liner installation) # Download from Gitea (for one-liner installation)
Write-Info " Downloading $file..." Write-Info " Downloading $file..."
try { try {
Invoke-WebRequest -Uri "$GfkGitHubBase/$file" -OutFile $dest -UseBasicParsing Invoke-WebRequest -Uri "$GfkGitHubBase/$file" -OutFile $dest -UseBasicParsing
Write-Info " Downloaded $file" Write-Info " Downloaded $file"
} catch { } catch {
Write-Err "Failed to download $file from GitHub" Write-Err "Failed to download $file from Gitea"
return $false return $false
} }
} }