ماژول آنبلاک فایروال برای WHMCS #
Unblock یک سیستم مدیریت فایروال مبتنی بر وب است که به طور خاص برای ارائه دهندگان خدمات میزبانی وب طراحی شده است. این سیستم، تجزیه و تحلیل گزارشهای فایروال و رفع انسداد IP را برای مدیران و مشتریان ساده میکند و تمرکز آن بر قابلیت استفاده برای کاربران غیرفنی است.
✨ ویژگیها #
- 🔍 تحلیل IP : تحلیل جامع لاگهای فایروال در سرویسهای مختلف (CSF، DirectAdmin BFM، Exim، Dovecot، ModSecurity)
- 🚀 رفع انسداد با یک کلیک : رفع انسداد خودکار IP با تشخیص هوشمند
- 👥 مدیریت چند کاربره : پشتیبانی از مشتریان هاستینگ، نمایندگان فروش و دارندگان VPS
- 📧 اعلانهای ایمیلی : گزارشهای دقیق برای کاربران و مدیران ارسال میشود
- 🔐 کاربران مجاز : دسترسی به دامنهها/سرورهای خاص را بدون دسترسی کامل به حساب کاربری، تفویض کنید
- 🔄 ادغام WHMCS : همگامسازی خودکار اختیاری با WHMCS
- 🌍 پشتیبانی از چند پنل : با cPanel و DirectAdmin کار میکند
- 📊 گزارشهای دقیق : گزارشهای جامع فایروال به همراه توضیحات
- 🔒 امنیت در اولویت : ثبت تمام اقدامات، اعتبارسنجی IP، مدیریت کلید SSH
- 🌐 بینالمللیسازی : پشتیبانی کامل از زبانهای انگلیسی و اسپانیایی
- ⚡ حالت ساده : رفع انسداد IP ناشناس برای محیطهای میزبانی کاملاً متصل (بدون نیاز به احراز هویت)
📋 الزامات #
- پی اچ پی : ۸.۳ یا بالاتر
- لاراول : ۱۲.x
- پایگاه داده : SQLite (توصیه میشود) یا MySQL 8.0+
- وب سرور : Nginx یا Apache
- Node.js : ۱۸+ (برای کامپایل asset)
- دسترسی SSH : به سرورهای مدیریتشدهای که CSF/DirectAdmin را اجرا میکنند
🚀 شروع سریع #
۱. کلون و نصب #
git clone https://github.com/AichaDigital/unblock.git
cd unblock
composer install
npm install && npm run build۲. تنظیمات محیطی #
cp .env.example .env
php artisan key:generate۳. پیکربندی اطلاعات شرکت #
.envجزئیات شرکت خود را ویرایش و پیکربندی کنید:
COMPANY_NAME="Your Hosting Company"
SUPPORT_EMAIL=support@yourcompany.com
SUPPORT_URL=https://support.yourcompany.com
# Legal URLs (Required for GDPR compliance)
LEGAL_PRIVACY_URL=https://yourcompany.com/privacy
LEGAL_TERMS_URL=https://yourcompany.com/terms
LEGAL_DATA_PROTECTION_URL=https://yourcompany.com/data-protection۴. راهاندازی پایگاه داده #
# For SQLite (recommended)
touch database/database.sqlite
php artisan migrate --seed
# For MySQL, configure DB_* variables in .env first۵. ایجاد کاربر ادمین #
# Interactive mode (recommended)
php artisan user:create --admin
# Non-interactive mode
php artisan user:create --admin \
--email="admin@yourcompany.com" \
--first-name="Admin" \
--last-name="System" \
--password="YourSecurePassword123!"
# Development mode (simple passwords allowed)
php artisan user:create --admin --no-secureنکته: این دستور تمام فیلدهای سفارشی و اعتبارسنجیهای خاص مدل کاربر ما را مدیریت میکند. از یا user:createاستفاده نکنید زیرا ساختار جدول را در نظر نمیگیرند.tinkermake:filament-user
۶. شروع سرور توسعه #
php artisan serveمراجعه کنید http://localhost:8000و با اطلاعات کاربری ادمین خود وارد شوید.
📖 مستندات #
اضافه کردن سرورها (میزبانها) #
- به پنل مدیریت → هاست بروید
- جزئیات سرور خود را اضافه کنید:
- FQDN : نام میزبان سرور
- آدرس آیپی : آیپی سرور
- کاربر SSH : معمولاً
root - نوع پنل :
cpanelیاdirectadmin
- کلید SSH را آپلود کنید (به تنظیمات کلید SSH در زیر مراجعه کنید)
تنظیم کلید SSH #
برای امنیت، یک کلید SSH محدود ایجاد کنید که فقط بتواند دستورات خاص CSF را اجرا کند:
# On your Unblock server
ssh-keygen -t ed25519 -f ~/.ssh/unblock_csf -C "unblock-firewall"
# Copy public key to managed server
cat ~/.ssh/unblock_csf.pubدر سرور مدیریتشده، ~/.ssh/authorized_keysبا دستور زیر به [مقدار] محدودیت اضافه کنید:
command="/path/to/restricted-csf-wrapper.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-ed25519 AAAA... unblock-firewallبرای دستورالعملهای دقیق و اسکریپت بستهبندی، به docs/ssh-keys-setup.md مراجعه کنید .
ادغام WHMCS (اختیاری) #
برای همگامسازی کاربران و هاستینگها از WHMCS:
WHMCS_SYNC_ENABLED=true
WHMCS_API_URL=https://your-whmcs.com/includes/api.php
WHMCS_API_IDENTIFIER=your_api_identifier
WHMCS_API_SECRET=your_api_secretبرای تنظیمات کامل به docs/whmcs-integration.md مراجعه کنید .
کاربران مجاز #
به مشتریان اجازه دهید بدون اشتراکگذاری حساب کاربری خود، به دامنههای خاص دسترسی بدهند:
- مشتری کاربر مجاز را در داشبورد خود ایجاد میکند
- دامنه (های) خاص یا سرور (های) خاصی را اختصاص دهید
- کاربر مجاز، دسترسی ورود به سیستم OTP را دریافت میکند.
- فقط میتوان منابع اختصاص داده شده را مشاهده/مدیریت کرد
حالت رفع انسداد ساده (بدون احراز هویت) #
برای ارائه دهندگان خدمات میزبانی وب که روابط محکمی با مشتریان دارند، رفع انسداد IP ناشناس را فعال کنید:
# Enable simple mode
UNBLOCK_SIMPLE_MODE=true
# Configure throttling (requests per minute)
UNBLOCK_SIMPLE_THROTTLE_PER_MINUTE=۳
# Block duration after exceeding rate limit (minutes)
UNBLOCK_SIMPLE_BLOCK_DURATION=۱۵ویژگیها:
- بدون نیاز به احراز هویت
- کاربر موارد زیر را ارائه میدهد: آدرس IP، دامنه، ایمیل
- سیستم اعتبارسنجی میکند که IP مسدود شده است + دامنه در گزارشهای سرور وجود دارد
- فقط در صورتی که هر دو شرط مطابقت داشته باشند، از حالت انسداد خارج میشود (از سوءاستفاده جلوگیری میکند)
- محدود کردن سرعت بسیار بالا (به طور پیشفرض ۳ درخواست در دقیقه)
- ثبت بیصدای اطلاعات برای مدیر در موارد غیر منطبق
- قابل دسترسی در:
/simple-unblock
مهم:
php artisan db:seed --class=AnonymousUserSeederبرای ایجاد کاربر ناشناس سیستم، دستور زیر را اجرا کنید:- این کاربر (
anonymous@system.internal) برای همه گزارشهای ناشناس استفاده میشود - مدیر گزارشهای دقیقی از تمام تلاشها (موفق و ناموفق) دریافت میکند.
- کاربران فقط زمانی ایمیلهای تأیید دریافت میکنند که IP واقعاً از حالت مسدود خارج شده باشد.
مستندات:
- راهنمای کاربر : راهنمای کاربر حالت ساده – مستندات کاربر نهایی
- راهنمای تست : راهنمای تست حالت ساده – تست با دادههای واقعی
- اسناد فنی :
docs/internals/برای جزئیات پیادهسازی مراجعه کنید
🔧 پیکربندی #
کارگران صف #
برای محیط عملیاتی، صفهای کاری را با استفاده از Supervisor پیکربندی کنید:
sudo cp supervisor-laravel-worker.conf /etc/supervisor/conf.d/unblock-worker.conf
# Edit paths in the file
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start unblock-worker:*وظایف برنامهریزیشده #
به crontab اضافه کنید:
* * * * * cd /path/to/unblock && php artisan schedule:run >> /dev/null ۲>&1🧪 آزمایش #
مجموعه تست کامل را اجرا کنید:
composer test
# With coverage
composer test:coverage
# Parallel execution
php artisan test --parallel🔒 امنیت #
- کلیدهای SSH : از کلیدهای SSH اختصاصی و محدود برای عملیات فایروال استفاده کنید
- اعتبارسنجی ورودی : تمام IPها و دستورات اعتبارسنجی و پاکسازی میشوند.
- ثبت وقایع : تمام وقایع فایروال به همراه اطلاعات کاربر ثبت میشوند.
- WHMCS : ایجاد کاربر MySQL فقط خواندنی برای ادغام WHMCS
- مهلت زمانی جلسه : مهلت زمانی عدم فعالیت ۴ ساعته
- احراز هویت OTP : OTP مبتنی بر زمان برای دسترسی کلاینت
برای بهترین شیوههای امنیتی به SECURITY.md مراجعه کنید .
🌍 بینالمللی شدن #
آنبلاک از چندین زبان به صورت پیشفرض پشتیبانی میکند:
- انگلیسی (en)
- اسپانیایی (es)
برای افزودن زبانهای بیشتر، lang/enکد زبان خود را کپی کرده و رشتهها را ترجمه کنید.
📝 مجوز #
این پروژه تحت مجوز عمومی عمومی GNU Affero نسخه ۳.۰ (AGPL-3.0) منتشر شده است .
این یعنی چی: #
✅ شما میتوانید:
- استفاده، مطالعه، اصلاح و توزیع رایگان این نرمافزار
- برای مقاصد تجاری از آن استفاده کنید
- انشعاب و ایجاد آثار مشتق شده
❌ شما نمیتوانید:
- ایجاد محصولات متنباز بر اساس این کد
- آن را به عنوان یک SaaS/سرویس بدون اشتراکگذاری کد منبع خود اجرا کنید
- حذف اعلانهای انتساب یا مجوز
📋 شما باید:
- مجوز AGPL-3.0 را در تمام نسخهها نگه دارید
- کد منبع هرگونه تغییر را به اشتراک بگذارید
- نسبت دادن واضح به این پروژه را ارائه دهید
- اگر این را به عنوان یک سرویس شبکه اجرا میکنید، کد منبع خود را در دسترس کاربران قرار دهید.
مجوز کامل: مجوز | انگلیسی | اسپانیایی
این مجوز قوی کپیلفت تضمین میکند که نرمافزار، حتی زمانی که به عنوان یک سرویس وب استفاده میشود، رایگان و متنباز باقی بماند.
🤝 مشارکت #
از مشارکتها استقبال میشود! برای جزئیات بیشتر لطفاً به CONTRIBUTING.md مراجعه کنید .
💬 پشتیبانی #
- مستندات : مستندات کامل
- مشکلات : مشکلات گیتهاب
- بحثها : بحثهای گیتهاب
🙏 تقدیر و تشکر #
- ساخته شده با لاراول ۱۲
- پنل مدیریت توسط FilamentPHP 3
- آیکونهای Heroicons
- تست با Pest PHP
📊 آمار پروژه #
- آزمونها : ۲۵۷ قبولی
- پوشش : ۸۵٪+
- سطح PHPstan : حداکثر
- نسخه لاراول : ۱۲.x
- نسخه پی اچ پی : ۸.۳+
ساخته شده نگارنوین ❤️ برای عموم
فایل ماژول را از طریق زیر دانلود و دریافت کنید!