# پرونده مرجع پروژه BVPN

این فایل برای ادامه کار در گفت‌وگوهای بعدی تهیه شده است. پیش از تغییر کد، این سند و `README_FA.md` را بخوانید و وضعیت واقعی فایل‌ها و تست‌ها را دوباره بررسی کنید.

## هدف
ساخت سامانه اشتراک VPN با اولویت SSH برای کلاینت‌های NetMod و NPVtunnel، روی وب‌سایت `https://gous.ir/bvpn`، با PHP 8.2+ و MySQL. رابط فارسی و راست‌چین، تم سفید و آبی.

## تصمیم‌های تأییدشده
- استقرار نهایی: `gous.ir/bvpn`؛ توسعه اولیه باید با پشتیبان‌گیری و تست مرحله‌ای انجام شود.
- سرورها می‌توانند از هر ارائه‌دهنده‌ای باشند؛ نیاز اصلی Ubuntu 22.04 یا جدیدتر است.
- سرور فعلی آزمایشی که کاربر اعلام کرده: `165.245.249.27`، پورت SSH فعلی 22، کاربر مدیریتی `root`. رمز در این سند یا سورس قرار داده نمی‌شود؛ هنگام ثبت سرور در رابط Server Manager وارد شود.
- پورت هدف SSH/VPN: 443. ابتدا 443 اضافه و اتصال جدید آزمایش شود؛ تنها بعد از موفقیت، 22 حذف شود. فایروال ابری/ارائه‌دهنده جداگانه باید اجازه TCP/443 بدهد.
- اتصال PHP به سرور با کتابخانه `phpseclib3` از طریق SSH.
- گروه‌ها و حد اتصال هم‌زمان: admin=5، user=5، vip=10، special=10، gift=2.
- اشتراک آزمایشی: یک روز.
- نام کاربری و رمز حساب خودکار مبتنی بر شماره موبایل با پیشوند `ir` است؛ در پیاده‌سازی فعلی نام کاربری و رمز `ir` + شماره موبایل استانداردشده (مثلاً `ir09123456789`) است.
- کد معرف چهاررقمی.
- قیمت‌ها در پنل به تومان؛ مقدار ارسالی به زیبال باید ریال باشد (تومان × 10).
- لوگوی موقت متنی BVPN.
- ربات تلگرام با دستورات جداگانه مدیر و کاربر.
- امنیت برای کاربر اولویت پایین اعلام شده، اما نباید رمز واقعی در فایل یا بسته ZIP ذخیره شود؛ رمزهای آزمایشی مدیر باید پیش از انتشار عوض شوند.
- ماژول `servers-manager` باید مستقل از سایر ماژول‌ها بماند و تنها مرجع ساخت/حذف/تمدید/تعلیق حساب VPN، مصرف و نشست‌ها باشد. هیچ بخش دیگری مستقیماً SSH اجرا نکند.
- هر عملیات باید نتیجه، خروجی و علت خطا را برای عیب‌یابی نشان دهد.

## ساختار پروژه
- `index.php`: لندینگ و کد معرف.
- `register.php`: ثبت‌نام با کد معرف و OTP.
- `login.php`: ورود.
- `profile.php`: پروفایل کاربر.
- `database.php`: اتصال PDO و توابع مشترک.
- `statitics.php`: آمار پایه سایت و کاربران.
- `admin.php`: پنل مدیریت اولیه.
- `members/`: صفحات کاربران؛ در حال تکمیل.
- `admin/`: ماژول‌های مدیریت تکمیلی؛ در حال تکمیل.
- `assets/`: CSS رابط اصلی.
- `servers-manager/`: ابزار مستقل مدیریت سرور، ارتباط SSH، نصب عامل، محدودیت نشست‌ها و گزارش مصرف آزمایشی.
- `telegram-bot/`: طرح و محل پیاده‌سازی ربات؛ فعلاً اسکلت/مستند.
- `payments/`: درخواست و callback زیبال؛ نیازمند مرچنت واقعی و تست یکپارچه با سرور.
- `sms/`: ارسال پترن IPPanel؛ نیازمند API Key، شماره فرستنده و کد پترن واقعی.
- `inclouds/`: محل افزونه‌های آینده (نام مطابق درخواست کاربر).
- `schema.sql`: طرح دیتابیس و دو حساب اولیه.
- `config.example.php`: نمونه تنظیمات بدون رمز واقعی؛ باید به `config.php` کپی شود.

## حساب‌های آزمایشی SQL
- `admin` / `admin`
- `arshia` / `arshia`
این رمزها صرفاً برای تست هستند و قبل از انتشار عمومی باید تغییر کنند.

## وضعیت فعلی پیاده‌سازی
- ساختار اولیه PHP و CSS فارسی ساخته شده است.
- SQL شامل کاربران، سرورها، اشتراک‌ها، پرداخت‌ها، OTP، تنظیمات، پروکسی تلگرام، گزارش عملیات، رویدادهای اتصال و مصرف است.
- `servers-manager` ابزار مستقل آزمایشی دارد: ثبت سرور، تست SSH، نصب عامل، فهرست کاربران، لاگ نشست‌ها، گزارش مصرف، مشاهده نشست‌ها، ایجاد/تعلیق/حذف/تمدید کاربر، تنظیم گروه و تغییر مرحله‌ای پورت 443.
- ابزار Server Manager هنوز با دیتابیس اصلی یکپارچه نشده است؛ رمز سرورها در `servers-manager/storage/servers.json` به صورت رمزگذاری‌شده نگهداری می‌شود و کلید رمزگذاری در `servers-manager/config/config.php` باید اختصاصی شود.
- ثبت‌نام با OTP فقط پس از پیکربندی واقعی IPPanel می‌تواند ارسال انجام دهد. ساخت حساب لینوکسی روی همه سرورها هنوز از مسیر سایت اصلی به‌صورت یکپارچه وصل نشده است.
- پرداخت زیبال دارای درخواست و تأیید callback اولیه است؛ تا قبل از مرچنت واقعی و تست callback، آن را عملیاتی/تأییدشده فرض نکنید.
- ربات تلگرام هنوز فقط مستند و محل توسعه دارد.

## آزمایش‌های انجام‌شده در زمان بسته‌بندی
- بررسی نحوی PHP برای فایل‌های ماژول Server Manager موفق بوده است.
- 16 آزمون smoke محلی برای اعتبارسنجی نام کاربری، موبایل، تاریخ انقضا، رمزگذاری رمز سرور و محدودیت‌های گروهی موفق بوده است.
- این‌ها تست محلی هستند، نه اتصال واقعی به سرور. اتصال SSH، نصب عامل روی Ubuntu، رفتار NetMod/NPVtunnel، PAM، مصرف واقعی و پورت 443 هنوز باید در محیط کاربر آزمایش شوند.

## نکات مهم مانیتورینگ
- عامل فعلی از `pam_exec` برای رویدادهای نشست و `pam_limits` برای محدودیت تعداد ورود استفاده می‌کند.
- نمونه‌برداری مصرف با `nethogs` آزمایشی و تقریبی است. قبل از اعمال قطع خودکار در سقف 200GB یا محاسبه صورتحساب باید انتقال‌های کنترل‌شده دانلود/آپلود اندازه‌گیری شوند.
- شمارش اتصال‌ها ممکن است با کلاینت‌های تونل تفاوت داشته باشد؛ باید با NetMod و NPVtunnel واقعی تست شود.
- مدل گوشی یا IP کاربر برای این پروژه لازم نیست؛ ثبت زمان اتصال و قطع و تعداد نشست‌ها کافی است.

## ترتیب ادامه کار
1. نصب محلی/هاست آزمایشی، ساخت `config.php`، ایجاد MySQL و import کردن `schema.sql`.
2. اجرای Server Manager، ثبت سرور با رمز واردشده در رابط، تست SSH روی پورت 22.
3. نصب عامل و بررسی خروجی و لاگ‌ها.
4. آزمایش ساخت کاربر و اتصال واقعی کلاینت، سپس محدودیت نشست و گزارش رویدادها.
5. باز کردن پورت 443 در فایروال سیستم‌عامل و فایروال ارائه‌دهنده، اضافه کردن 443 و تست اتصال جدید؛ سپس در صورت موفقیت حذف 22.
6. اعتبارسنجی مصرف با حجم معلوم؛ تا آن زمان سهمیه‌بندی خودکار را فعال نکنید.
7. تکمیل رابط داخلی Server Manager و اتصال آن به عضویت، تمدید، تعلیق، حذف و پنل مدیریت اصلی.
8. پیکربندی و تست IPPanel و زیبال؛ تست پرداخت کم‌مبلغ و بررسی رکوردهای DB.
9. تکمیل ربات تلگرام و سایر بخش‌ها.
10. فقط بعد از تست یکپارچه و تهیه پشتیبان، استقرار نهایی روی `gous.ir/bvpn`.

## موارد باز
- آدرس‌های رسمی دانلود NetMod و NPVtunnel.
- API Key، شماره فرستنده و کد پترن‌های IPPanel.
- مرچنت زیبال و قیمت ماهانه نهایی.
- تست واقعی روی سرور 165.245.249.27.
- پیاده‌سازی ربات تلگرام و پنل کامل پروکسی‌ها، پترن‌های پیامکی، فروش آفلاین، فاکتور و گزارش‌های مالی.
- یکپارچه‌سازی کامل Server Manager با دیتابیس اصلی و اعمال تغییرات اشتراک روی همه سرورها.

## به‌روزرسانی رابط کاربری 2026-10-25
- فایل `assets/style.css` اضافه شد: پوسته واکنش‌گرا با RTL، داشبورد مدیریتی تیره و پنل کاربر روشن.
- فایل `assets/app.js` برای کپی‌کردن لینک‌ها و مقادیر با Clipboard API اضافه شد.
- فایل `assets/dashboard.js` نمودار فروش را از داده‌های واقعی جدول `payments` رسم می‌کند و جستجوی سریع جدول کاربران/سرورها را فعال می‌کند.
- `admin.php` به داشبورد مدیریتی با کارت‌های آمار، نمودار فروش، جدول سرورها و کاربران، پروکسی تلگرام، تنظیمات پایه پرداخت/پیامک و فعالیت‌های اخیر تبدیل شد. عملیات قبلی ساخت حساب و تغییر وضعیت حفظ شده‌اند.
- `profile.php` به پنل کاربر روشن تبدیل شد و اطلاعات موجود از مصرف، تاریخچه اتصال، پرداخت‌ها، کد معرف، سرورها و پروکسی‌های فعال را نمایش می‌دهد.
- `statitics.php` بازطراحی شد و گزارش مصرف، فروش، سرورها و کاربران را نمایش می‌دهد.
- `support.php` صفحه پایه پشتیبانی اضافه شد تا لینک منو خراب نباشد؛ ثبت و پیگیری تیکت هنوز پیاده‌سازی نشده است.
- نکته مهم: این تغییر رابط کاربری به‌تنهایی به معنای تکمیل اتصال واقعی تمام قابلیت‌های بک‌اند نیست. ساخت/حذف کاربر روی همه سرورها، داده‌های اتصال و مصرف لحظه‌ای، نصب مانیتورینگ، پرداخت زیبال، پیامک‌های پترنی و ربات تلگرام باید جداگانه روی سرور و با اطلاعات واقعی سرویس‌ها تست و یکپارچه شوند. هیچ داده ساختگی به‌عنوان آمار واقعی نمایش داده نمی‌شود.
