# Slipstream Plus 🚀

**فارسی | English**: [README-fa.md](README-fa.md) | [README.md](README.md)

یک برنامه دسکتاپ ویندوز که DNSهای تمیز را اسکن و تست می‌کند، به Slipstream وصل می‌شود و کانفیگ‌های Slipstream را مدیریت می‌کند، و ترافیک را با `sing-box` مسیریابی می‌کند.

![Screenshot](screen.jpg)

**نسخه CLI**: [Slipstreamplus-CLI](https://github.com/payeh/Slipstreamplus-CLI)

## ✨ امکانات اصلی
- 🧩 مدیریت پروکسی‌ها (Import، افزودن دستی، کپی، حذف)
- ⚡ اسکن سریع DNS با پشتیبانی از CIDR و تست Real Ping
- 🌍 مودهای مسیریابی Global و IR‑Direct
- 🧭 فعال/غیرفعال‌سازی پروکسی سیستم با یک کلیک
- 📶 LAN Mode برای اشتراک پروکسی با گوشی روی همان شبکه
- 🔄 اتصال خودکار مجدد
- 📊 نمایش ترافیک (اختیاری با `websocket-client`)
- 🧬 پروتکل‌های تونل: `SLIPSTREAM` و `DNSTT`

## 🆕 تغییرات نسخه جدید
**v1.1.5 (2026-03-03)**
- Auto reconnect بهتر شد: به جای صرفاً چک کردن باز بودن پورت، خود SOCKS5 داخلی (با پشتیبانی از Auth) تست می‌شود و تأخیر ریکانکت ثابت شد.

**v1.1.4 (2026-03-03)**
- رفع مشکل کوتیشن/اسکیپ در اسکریپت PowerShell ویندوز داخل CI (مرحله Stage کردن فولدرها).

**v1.1.3 (2026-03-03)**
- رفع مشکل CI ویندوز برای دانلود/استخراج Wintun.

**v1.1.2 (2026-03-03)**
- در ریلز ویندوز، فایل‌های `dnstt-client` و `wintun.dll` هم به صورت Asset جداگانه (و داخل ZIP) قرار می‌گیرند.
- بیلد ویندوز با `icon.ico` ساخته می‌شود و فایل `icon.ico` هم کنار برنامه قرار می‌گیرد.

**v1.1.1 (2026-03-03)**
- خروجی ریلز: پوشه‌های `bin/`، `asset/`، `geo/` و `cidrs/` کنار فایل برنامه قرار می‌گیرند (داخل exe embed نمی‌شوند).
- استانداردسازی لینک‌های DNSTT به `DNSTT://...` (با ۲ اسلش).

**v1.1.0 (2026-03-03)**
- مشکل «وصل است ولی کار نمی‌کند» رفع شد: یک Health Monitor اضافه شد که اگر SOCKS داخلی تونل روی `127.0.0.1:<port>` از کار بیفتد/Refuse بدهد، برنامه خودش Auto-Reconnect می‌کند و دیگر نیاز به Disconnect دستی نیست.

## ✅ پیش‌نیازها
- ویندوز 10/11
- فایل‌های باینری در `bin/`
  - `sing-box.exe`
  - `slipstream-client-windows-amd64.exe`
  - `dnstt-client-windows-amd64.exe` (برای DNSTT)
  - `libcrypto-3-x64.dll` و `libssl-3-x64.dll`
- Python 3.10+ (اگر از سورس اجرا می‌کنید)
- پکیج‌ها: `PySide6` (اجباری)، `websocket-client` (اختیاری)

## 🚀 اجرای سریع (نسخه باینری)
1. پوشه `bin/` باید کامل باشد.
2. فایل `Slipstreamplus.exe` را اجرا کنید.
3. یک پروکسی اضافه کنید و روی **CONNECT** بزنید.

## 🧑‍💻 اجرا از سورس
```bash
python -m pip install -U PySide6 websocket-client
python Slipstreamplus.py
```

## 🧭 راهنمای استفاده

### 1) تب Proxy
- **Import Links**: لینک‌ها را پیست کنید
- **Add Config**: افزودن دستی یک کانفیگ
- **Copy Link**: کپی لینک پروکسی انتخاب شده
- **Remove Selected**: حذف موارد انتخاب‌شده

**فرمت لینک Slipstream**
```
SLIPSTREAM://<DOMAIN>:53?dns=<DNS_IP>[,<DNS_IP>...]#<REMARKS>
```
نمونه:
```
SLIPSTREAM://s.example.com:53?dns=1.2.3.4#My%20Server
```
نمونه با یوزرنیم/پسورد و چند DNS:
```
SLIPSTREAM://user:pass@s.example.com:53?dns=8.8.8.8,1.1.1.1,9.9.9.9#My%20Server
```

**فرمت لینک DNSTT**
```
DNSTT://<PUBLIC_KEY_HEX>@<DOMAIN>:53?dns=<DNS_IP>#<REMARKS>
```

**مودها**
- **Global**: تمام ترافیک از پروکسی عبور می‌کند
- **IR‑Direct**: ترافیک ایران مستقیم (نیازمند فایل‌های geo در `geo/srss/`)

**پروکسی سیستم**
با **Set System Proxy** و **Clear System Proxy** تنظیمات پروکسی ویندوز را کنترل کنید.

### 2) تب Scanner
- لیست IP/CIDR را از فایل وارد کنید یا پیست کنید
- تایم‌اوت، تعداد ترد، و دامین را تنظیم کنید
- اسکن را شروع کنید تا DNSهای سالم پیدا شوند
- نتیجه‌ها را مستقیم به لیست پروکسی اضافه کنید
- با انتخاب چند ردیف، یک کانفیگ Multi DNS بسازید و به پروکسی اضافه کنید

**Real Ping Test**
یک تست عمیق‌تر برای برآورد تأخیر واقعی روی نتایج اسکن.

### 3) LAN Mode
برای اشتراک پروکسی با گوشی روی همان وای‌فای، **LAN Mode (Hotspot)** را فعال کنید.

## ⚙️ پیکربندی و داده‌ها
- برنامه در اولین اجرا فایل‌های تنظیمات را در `config/` می‌سازد.
- **مهم:** پوشه `config/` در گیت نادیده گرفته می‌شود چون ممکن است اطلاعات محرمانه داشته باشد.
- برای ریست کامل برنامه، آن را ببندید و پوشه `config/` را حذف کنید.

## 🧩 به‌روزرسانی‌ها
- Update core to Slipstream Rust Plus Deploy
- دیالوگ پروکسی از چند DNS پشتیبانی می‌کند (افزودن/حذف فیلد)
- لینک‌های Slipstream چند DNS را می‌پذیرند (query dns)
- منوی راست‌کلیک اسکنر امکان افزودن Multi DNS را دارد
- پشتیبانی از یوزرنیم/پسورد برای SOCKS5
- لاگ‌های پروکسی از لاگ عمومی جدا شدند
- ریمارک برای کانفیگ پروکسی اجباری است

## 📂 ساختار پروژه
- `Slipstreamplus.py` — هسته برنامه
- `bin/` — باینری‌ها و DLLها
- `geo/` — قوانین جغرافیایی
- `cidrs/` — لیست‌های CIDR
- `asset/` — منابع رابط کاربری
- `icon.ico` — آیکن برنامه

## 🧱 ساخت خروجی (PyInstaller)
```bash
pyinstaller --noconsole --onedir --icon="icon.ico" Slipstreamplus.py
```

## 🛠️ رفع مشکل‌های رایج
- **sing-box.exe پیدا نمی‌شود**: آن را داخل `bin/` قرار دهید یا به PATH اضافه کنید.
- **عدم نمایش ترافیک**: `websocket-client` را نصب کنید.
- **برنامه در حال اجراست**: از System Tray آن را کامل ببندید و دوباره اجرا کنید.

## 🔐 نکات امنیتی
- هرگز پوشه `config/` را داخل گیت کامیت نکنید.
- اگر اطلاعات حساس لو رفت، کلیدها/توکن‌ها را فوراً تغییر دهید.

## 📄 لایسنس
هنوز لایسنسی مشخص نشده است.
