1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 🛡️ دروازه پنل (panel-gateway)
لایهی کنترل برای پنلهای VLESS — **بدون دست زدن به خود پنل**. جلوی پنل میشینه، ترافیک رو حساب میکنه، سهمیه و انقضا رو اعمال میکنه.
## هر ۶ فیچر کجاست
| فیچر | پیادهسازی |
|---|---|
| ۱. یوزر جدا با حجم و انقضا | گیتوی: هر نفر UUID جدا + لینک ساب جدا؛ سهمیه GB و انقضای روزانه؛ قطع خودکار وسط کانکشن |
| ۲. ربات تلگرام | `src/bot.js` — ورکر جدا: ساخت یوزر، لیست، مصرف، حذف، ریست، سلامت، بکاپ |
| ۳. پریست MCI / ایرانسل | تب «پریست ISP» در پنل ادمین — بر اساس دانش کانال: ایرانسل → `fp=unsafe` + راهنمای فرگمنت دستی؛ همراه اول → `fp=chrome` + راهنمای ECH |
| ۴. سلامت پروکسی IP داخل پنل | تب «پروکسی IP» — تست TCP 443 از لبهی کلادفلر (۳ تلاش)؛ بارگذاری خودکار از proxyip-board |
| ۵. داشبورد مصرف | تب «داشبورد» — مصرف هر یوزر با نوار پیشرفت + جمع کل |
| ۶. بکاپ/ریستور تککلیکی | تب «بکاپ» — دانلود/بازگردانی JSON همهی یوزرها |
## معماری
```
کلاینت (v2rayNG) ──wss──▶ گیتوی ──wss──▶ پنل اصلی (دستنخورده)
│
▼
Durable Object (SQLite)
یوزرها + شمارندهی بایت
```
- هدر VLESS پارس میشه، UUID کاربر استخراج میشه، با DO چک میشه
- هدر با UUID واقعی پنل بازنویسی و به بکاند فوروارد میشه
- بایتها هر ۵ ثانیه فلاش میشن؛ با رد شدن سهمیه کانکشن با کد 4403 بسته میشه
## نصب گیتوی
```bash
cd panel-gateway
wrangler deploy # با wrangler.toml
wrangler secret put BACKEND_WS_URL # wss://<panel-host>/<ws-path>
wrangler secret put BACKEND_UUID # UUID خود پنل
wrangler secret put ADMIN_SECRET # کلید ادمین
```
بعد برو به `https://<gateway>/admin/` — کلید ادمین رو بده، یوزر بساز، لینک رو بده به هر نفر.
## نصب ربات تلگرام
1. به `@BotFather` بگو `/newbot` — توکن بگیر
2. `wrangler deploy -c wrangler.bot.toml`
3. سکرتها: `TELEGRAM_BOT_TOKEN` `WEBHOOK_SECRET` `ADMIN_CHAT_ID` `GATEWAY_URL` `GATEWAY_ADMIN_SECRET`
4. وبهوک: `curl https://api.telegram.org/bot<token>/setWebhook -d url=https://<bot>/webhook/<secret>`
5. به ربات `/start` بده — شناسهی چتت رو میده — بذار توی `ADMIN_CHAT_ID`
## تستها (همه سبز ✅)
```
node --test test/vless.test.js test/accounting.test.js test/bot.test.js # 26/26
node test/e2e.mjs # 10/10 — کلاینت VLESS واقعی → گیتوی واقعی → سرور echo واقعی
```
تست e2e با شبیهساز کامل WebSocket انجام شده: بایتشماری دقیق up/down، قطع سهمیه وسط کانکشن (4403)، رد UUID ناشناس (4403)، هدر خراب (4400).
## محدودیتهای صادقانه
- فعلاً فقط **VLESS روی WebSocket** (پروتکل اصلی). Trojan/XHTTP/Shadowsocks فاز بعد.
- تست TCP پروکسی IP فقط روی رانتایم واقعی کلادفلر کار میکنه (تو Node با fallback تمیز رد میشه).
- شمارندهها هر ۵ ثانیه فلاش میشن — مصرف لحظهایِ چند ثانیهی آخر ممکنه عقب باشه.