Skip to content

Repository files navigation

مدیریت حرفه‌ای HAProxy — CLI تعاملی و Production-Ready

ابزار مدیریت حرفه‌ای، ماژولار، امن و مقاوم در برابر خطا برای HAProxy روی سرورهای لینوکس. بدون نیاز به ویرایش دستی haproxy.cfg تمام عملیات از طریق یک رابط ترمینالی مدرن و تعاملی انجام می‌شود.

OX Alpha Mode — نسخه توسعه‌یافته با سازگاری کامل ویندوز/لینوکس، تست‌های Mock، و مدیریت Atomic ایمن.

کاربر
  ↓
CLI تعاملی (Rich + Questionary)
  ↓
لایه اپلیکیشن
  ↓
مدیریت پیکربندی | مدیریت HAProxy | پایش سلامت
  ↓
سرویس‌های هسته (اعتبارسنجی / بکاپ / Runtime API / فایل‌سیستم)

✨ قابلیت‌ها

  • رابط ترمینال کاملاً تعاملی — منوی اصلی/فرعی، ویزارد، دیالوگ تایید، اعتبارسنجی ورودی، جدول، داشبورد، Progress
  • تغییرات Atomic و امن — فایل موقت → اعتبارسنجی → بکاپ → جایگزینی اتمی → ریلود → بررسی → رولبک خودکار
  • مدیریت سرویس — start/stop/restart/reload/enable/disable/status با اعتبارسنجی قبل از ریلود
  • مدیریت پیکربندی — Global, Defaults, Frontend, Backend, Server, ACL, Routing Rules
  • پشتیبانی L4 و L7 — TCP/HTTP/HTTPS termination/TLS passthrough/SNI/مسیردهی بر اساس Host/Path/Header
  • سیستم سلامت حرفه‌ای — وضعیت سرویس + پیکربندی + Runtime (Stats Socket) + تست TCP/HTTP/TLS
  • Runtime API — show info/stat, فعال/غیرفعال/maintenance کردن سرورها
  • لاگینگ و Audit — لاگ چرخشی، ردپای Audit، تاریخچه SQLite، جستجو/فیلتر/Export
  • بکاپ و رولبک — بکاپ‌های زمان‌دار، مقایسه Diff، بازگردانی با اعتبارسنجی
  • ابزار شبکه — تست پورت TCP، DNS، TLS handshake، HTTP، پورت‌های شنود
  • مدیریت SSL/TLS — بررسی وجود/دسترسی/انقضا/تطابق کلید و گواهی
  • حالت امن و Dry-Run — اجبار بکاپ/اعتبارسنجی/Diff/تایید برای هر تغییر
  • قالب‌های آماده — TCP LB, HTTP LB, HTTPS Termination, TLS Passthrough, SNI Router, Port Forward
  • Import/Export — خروجی کامل/جزئی، اعتبارسنجی فایل خارجی، Snapshot
  • CLI غیرتعاملی — برای اتوماسیون: status/validate/reload/health/backup/rollback/backend/server
  • تشخیص محیط — نسخه OS/توزیع/کرنل/باینری HAProxy/مسیر کانفیگ/سامانه سرویس/سوکت
  • معماری قابل توسعه — آماده برای REST API، داشبورد وب، Prometheus، تلگرام

🏗️ معماری

haproxy-manager/
├── main.py                 # نقطه ورود (حالت تعاملی پیش‌فرض + argparse)
├── config/
│   ├── app_config.py       # کانفیگ خود برنامه (YAML)
│   ├── manager.py          # مدیریت Atomic + Diff + Rollback
│   ├── parser.py           # تجزیه haproxy.cfg با حفظ دستورات ناشناخته
│   ├── generator.py        # تبدیل مدل‌ها به متن haproxy.cfg
│   ├── validator.py        # پوشش haproxy -c + بررسی داخلی
│   └── templates.py        # 7 قالب پارامتری
├── haproxy/
│   ├── service.py          # مدیریت systemd/sysvinit (بدون shell injection)
│   ├── runtime.py          # کلاینت Unix Socket + CSV parser
│   ├── stats.py
│   └── health.py
├── cli/
│   ├── menu.py             # 15 منوی اصلی + 40 زیرمنو + ویزاردها (78K)
│   ├── dashboard.py
│   ├── prompts.py
│   └── display.py          # جداول/پنل‌ها با Rich
├── backup/manager.py
├── app_logging/logger.py   # لاگ چرخشی + Audit (تغییر نام از logging برای جلوگیری از تداخل stdlib)
├── storage/database.py     # SQLite (تاریخچه عملیات/سلامت/تنظیمات)
├── tls/certificate.py      # اعتبارسنجی گواهی (تغییر نام از ssl برای جلوگیری از تداخل stdlib)
├── network/diagnostics.py
├── utils/system.py, validation.py, permissions.py
├── models/config_models.py # دیتاکلاس‌های Global/Defaults/Frontend/Backend/Server/ACL/Rule
├── tests/                  # 7 مجموعه تست با Mock
├── haproxy.cfg             # کانفیگ دمو
├── haproxy-manager.yaml    # نمونه کانفیگ برنامه
├── requirements.txt
└── install.sh

اصول: Production-Ready، ماژولار، امن، Fail-Safe، Atomic، Idempotent، بدون مسیر Hard-Code، بدون Shell Injection، جداسازی لایه CLI از هسته.


📋 پیش‌نیازها

  • Python 3.8+ (پیشنهادی 3.10+)
  • سیستم‌عامل لینوکس Ubuntu 20.04/22.04/24.04، Debian 11/12، RHEL 8/9، Rocky 8/9، Alma 8/9، CentOS Stream، هر توزیع با systemd
  • HAProxy 1.8+ (تست شده 2.x، 3.x) — مسیر باینری به‌صورت خودکار شناسایی می‌شود
  • وابستگی‌ها: rich, questionary, pyyaml, jinja2, cryptography

روی ویندوز نیز برای توسعه/دمو با مسیرهای محلی ./backups, ./logs و کانفیگ دمو اجرا می‌شود (نیاز به PYTHONUTF8=1 برای نمایش ●/✓/❌).


🐧 سیستم‌عامل‌های پشتیبانی

توزیع نسخه مدیر سرویس
Ubuntu 20.04، 22.04، 24.04 systemd
Debian 11، 12 systemd
RHEL/Rocky/Alma 8، 9 systemd
CentOS Stream 8، 9 systemd
سایر لینوکس‌های systemd — systemd / sysvinit fallback

🔖 نسخه‌های HAProxy پشتیبانی

  • 1.8، 2.0–2.9، 3.0+ — تشخیص خودکار نسخه و فعال‌سازی قابلیت‌های وابسته به نسخه (مثلاً مدیریت Runtime).
  • اگر قابلیتی در نسخه نصب‌شده موجود نباشد، به‌صورت ⚠ در این نسخه پشتیبانی نمی‌شود نمایش داده می‌شود.

🚀 نصب

نصب سریع (سرور پروداکشن لینوکس)

git clone <repo> haproxy-manager
cd haproxy-manager
chmod +x install.sh
sudo ./install.sh
haproxy-manager

install.sh چه می‌کند:

  • تشخیص OS و نسخه
  • بررسی/نصب Python 3 و venv
  • ساخت venv و نصب requirements.txt
  • ساخت پوشه‌های /etc/haproxy-manager, /var/log/haproxy-manager, /var/backups/haproxy-manager, /var/lib/haproxy-manager/state.db
  • تنظیم دسترسی‌ها (700 برای بکاپ، 600 برای فایل بکاپ)
  • ایجاد فایل نمونه /etc/haproxy-manager/config.yaml
  • ایجاد لانچر /usr/local/bin/haproxy-manager

نصب دستی / توسعه

cd haproxy-manager
python3 -m venv venv
source venv/bin/activate          # ویندوز: venv\Scripts\activate
pip install -r requirements.txt
python main.py                    # حالت تعاملی

نصب دستی وابستگی‌ها

pip install rich questionary pyyaml jinja2 cryptography

⚙️ اولین اجرا

haproxy-manager

داشبورد نمایش داده می‌شود:

╔══════════════════════════════════════════╗
║           HAProxy Manager                ║
║ HAProxy Version : 3.0.0                  ║
║ Service Status  : ● RUNNING              ║
║ Config Status   : ● VALID                ║
║ Config Path     : /etc/haproxy/haproxy.cfg║
║ Binary Path     : /usr/sbin/haproxy      ║
║ OS              : ubuntu 24.04           ║
║ Runtime Socket  : /run/haproxy/admin.sock● Available
║ ───────────────────────────────────────  ║
║ Frontends       : 4  Backends: 8         ║
║ Servers         : 17 Healthy:15 Down:2   ║
║ Overall         : HEALTHY                ║
╚══════════════════════════════════════════╝

اگر HAProxy نصب نباشد: HAProxy Version: Not detected و Config Status: NOT FOUND — مسیر را در Settings & Environment اصلاح کنید.

برای فعال‌سازی Runtime API، به global اضافه کنید:

global
    stats socket /run/haproxy/admin.sock mode 660 level admin

و سپس sudo systemctl reload haproxy.


🔧 پیکربندی برنامه

فایل haproxy-manager.yaml یا /etc/haproxy-manager/config.yaml:

haproxy_binary: null   # null = تشخیص خودکار (مثلاً /usr/sbin/haproxy) یا مسیر دستی
config_path: null      # null = /etc/haproxy/haproxy.cfg یا مسیر دستی
stats_socket: null     # null = /run/haproxy/admin.sock یا مسیر دستی
backup_dir: /var/backups/haproxy-manager
log_dir: /var/log/haproxy-manager
db_path: /var/lib/haproxy-manager/state.db
safe_mode: true        # true = اجبار بکاپ/اعتبارسنجی/Diff/تایید
retention: 30          # تعداد بکاپ نگهداری
service_name: haproxy
default_timeouts:
  tcp_check: 5
  http_check: 5
  validation: 10

Override با متغیر محیطی:

HAPROXY_MANAGER_CONFIG_PATH=/custom/haproxy.cfg haproxy-manager
HAPROXY_MANAGER_HAPROXY_BINARY=/usr/local/sbin/haproxy haproxy-manager

در حالت توسعه ویندوز، مسیرها به‌صورت خودکار به ./backups, ./logs, ./state.db و haproxy.cfg محلی نگاشت می‌شوند.


💻 نحوه استفاده

حالت تعاملی (پیش‌فرض)

haproxy-manager
# یا
python main.py
# حالت دیباگ (نمایش Traceback)
python main.py --debug

منوهای اصلی:

  1. Dashboard / Refresh
  2. Service Management (Status/Start/Stop/Restart/Reload/Enable/Disable)
  3. Configuration Management (View/Edit Global/Defaults/Validate/Diff/Dry-Run)
  4. Frontend Management (Create/Edit/Delete)
  5. Backend & Server Management (Create/Add/Edit/Delete + Maintenance via Runtime)
  6. ACL Management (Create/Edit/Delete/Test)
  7. Routing Rules (IF → THEN)
  8. Health & Monitoring (درخت سلامت + جدول سرورها)
  9. Runtime API (show info/stat, enable/disable/maint)
  10. Network Diagnostics (TCP/DNS/TLS/HTTP/Backend Test)
  11. SSL/TLS Management (Validate/Expiry/Key Match)
  12. Backup & Restore (Create/Restore/Delete/Compare)
  13. Logs & Audit (View/Search/Filter/History/Clear/Export)
  14. Templates (7 قالب)
  15. Import/Export/Validate (Snapshot)
  16. Settings & Environment

هر تغییر Diff نمایش داده و نیاز به تایید دارد. در حالت امن، بدون اعتبارسنجی و بکاپ، ریلود انجام نمی‌شود.

حالت غیرتعاملی (اتوماسیون / CI)

haproxy-manager status --verbose
haproxy-manager validate
haproxy-manager validate --file /tmp/test.cfg
haproxy-manager reload              # validate + backup + reload + verify
haproxy-manager health
haproxy-manager backup list
haproxy-manager backup create
haproxy-manager backup restore --file /var/backups/haproxy-manager/2026-08-29_16-30-22.cfg
haproxy-manager rollback            # بازگردانی به آخرین بکاپ + reload

# اتوماسیون Backend/Server
haproxy-manager backend list
haproxy-manager backend create --name my_back --mode http --balance roundrobin
haproxy-manager server list --backend my_back
haproxy-manager server add --backend my_back --name node03 --address 10.0.0.12 --port 80

کد بازگشت: 0=موفق, 1=خطای اعتبارسنجی/عملیات — مناسب برای CI.


🔄 مدیریت سرویس

قبل از هر reload/restart:

  1. اعتبارسنجی haproxy -c -f <config>
  2. بکاپ زمان‌دار
  3. جایگزینی اتمی (mkstemp + fsync + rename)
  4. ریلود (systemctl reload یا reload-or-restart)
  5. بررسی موفقیت ریلود
  6. در صورت شکست → رولبک خودکار (اعتبارسنجی بکاپ → بازگردانی → ریلود مجدد)
# از منو: Service Management → Reload (safe with validation & backup)
# یا CLI:
haproxy-manager reload

📝 مدیریت پیکربندی

Global

log, maxconn, user/group, stats socket, nbthread/nbproc, ssl-default-bind-ciphers, tune.ssl...

Defaults

mode, timeout connect/client/server, retries, options, log

Frontend

  • نام، bind (IP/Port/IPv4/IPv6)، mode (tcp/http)، SSL (crt), ACL, Rules, default_backend, limits

Backend

  • نام، mode, balance (roundrobin/leastconn/source/uri/random/first/static-rr), سرورها، options, timeout, retries

Server

  • نام، آدرس/پورت، check, inter, rise/fall, weight, backup, ssl, sni, verify, maxconn

ویزارد نمونه:

Create New Backend
Backend Name: > my_back
Load Balance: [1] Round Robin [2] Least Connections ...
Add Server? > Yes
Server Name: > node01
IP: > 10.0.0.10
Port: > 80
Enable Health Check? > Yes

🌐 L4 و L7

انتخاب حالت هنگام ساخت:

[1] TCP / Layer 4
[2] HTTP / Layer 7
[3] HTTPS / TLS Termination
[4] TCP + TLS Passthrough
[5] Custom
  • L4: TCP proxy/passthrough/load-balancing/port forwarding
  • L7: host/path/header/SNI-based routing

🧩 مدیریت ACL

ACL Manager
[1] Create ACL (src/dst/src_port/dst_port/hdr/path/method/ssl_fc_sni/custom)
[2] Edit ACL
[3] Delete ACL
[4] List ACLs
[5] Test ACL (اعتبارسنجی Dry-Run)

مثال:

acl is_api path_beg /api
acl is_local src 192.168.1.0/24

اعتبارسنجی validate_acl_name و criterion قبل از اعمال.


🔀 قوانین مسیریابی

ویزارد:

IF:   ssl_fc_sni == example.com
THEN: use_backend backend_example
use_backend api_back if is_api
use_backend web_back if !is_api

ترتیب قوانین حفظ می‌شود؛ حذف/ایجاد مجدد برای تغییر ترتیب.


❤️ سیستم سلامت

Backend Health
Server   Address      Port  Status
----------------------------------------
node01   10.0.0.10    80    ● UP
node02   10.0.0.11    80    ● DOWN (DOWN 10s)

درخت سلامت:

HAProxy
├── Service       ✓
├── Configuration ✓
├── Runtime       ✓ (یا ○ Not available)
├── Frontends (2)
└── Backends (2)
    ├── api_back: api01 ✓, api02 ✓
    └── web_back: web01 ✓, web02 ✗

پایش: Health & Monitoring → Run Full Health Check (incl. TCP probes)، Show Runtime Info, Show Stats Summary (bin/bout/scur/qcur).


⚡ Runtime API / Stats Socket

در صورت وجود سوکت (stats socket /run/haproxy/admin.sock):

  • اطلاعات: show info, show stat (CSV), show sess
  • عملیات: enable/disable server <backend>/<server>, set server ... state {ready,maint,drain}

از utils/system.py نسخه HAProxy بررسی و قابلیت‌های ناموجود مخفی می‌شود.


📜 لاگ و Audit

سطوح: DEBUG/INFO/WARNING/ERROR/CRITICAL

فرمت Audit:

[2026-08-29 16:30:21] ACTION: Reload HAProxy | TARGET: /etc/haproxy/haproxy.cfg | RESULT: SUCCESS | USER: | DETAILS: ...

امکانات CLI: View Recent/Audit, Search, Filter by Level, Operation History (DB), Health History, Clear, Export.

فایل‌ها: /var/log/haproxy-manager/haproxy-manager.log, audit.log (چرخشی 5×5MB)، DB: /var/lib/haproxy-manager/state.db (جداول operation_history, health_history).

کلید خصوصی و پسورد در لاگ‌ها به [REDACTED PRIVATE KEY] تبدیل می‌شود.


💾 بکاپ و رولبک

مسیر: /var/backups/haproxy-manager/2026-08-29_16-30-22.cfg + .meta.json

عملیات توضیح
List 15 بکاپ اخیر با زمان/حجم/دلیل
Create دستی
Restore با اعتبارسنجی قبل از بازگردانی + بکاپ از وضعیت فعلی
Delete حذف
Compare Diff دو بکاپ یا بکاپ با وضعیت فعلی
View نمایش محتوای بکاپ
Rollback خودکار پس از شکست ریلود
haproxy-manager backup list
haproxy-manager backup create
haproxy-manager backup restore --file <path>
haproxy-manager rollback

سناریو شکست:

❌ Configuration validation failed. Changes were NOT applied.

⚠ HAProxy reload failed. Attempting automatic rollback...

✅ اعتبارسنجی

هر تغییر با باینری واقعی HAProxy اعتبارسنجی می‌شود:

haproxy -c -f /etc/haproxy/haproxy.cfg

مسیر باینری Hard-Code نیست (تشخیص خودکار which haproxy + /usr/sbin/haproxy ...). خطاها با شماره خط نمایش داده می‌شود:

❌ Failed to reload HAProxy.
Reason: Configuration validation failed.
Details: line 42: unknown keyword 'example'
No changes were applied.

🔒 تغییرات اتمی

Generate Temp → Validate → Backup → Atomic Replace (mkstemp+fsync+rename) → Reload → Verify Runtime → SUCCESS
                                      ↓ fail
                                   Rollback

هرگز فایل اصلی حین تولید به‌صورت جزئی بازنویسی نمی‌شود.


📊 Diff پیکربندی

قبل از هر اعمال:

+ server node03 10.0.0.12:80 check
- server old_node 10.0.0.20:80
  timeout connect 5s

Apply these changes? [Yes] [No]

🌐 ابزار شبکه

  • TCP Port Check — اتصال + latency
  • DNS Resolve — لیست IPها
  • TLS Handshake — گواهی/سایفر/پروتکل
  • HTTP Check — status/headers
  • Backend Connection Test — DNS+TCP+TLS+HTTP یکجا
  • Local Listening Ports — ss -tulpn / netstat

مثال:

Backend Connection Test
Target: 10.0.0.10:443
DNS Resolution : ✓ 12ms
TCP Connection : ✓ 18ms
TLS Handshake  : ✓ 25ms
HTTP Response  : ✓ 32ms

🔐 مدیریت SSL/TLS

  • مسیر گواهی/کلید/CA، انقضا، اعتبارسنجی، تطابق کلید/گواهی، نسخه TLS، سایفر
  • بررسی‌ها قبل از اعمال: وجود فایل، دسترسی، انقضا (<30 روز هشدار)، تطابق RSA/EC public numbers، بارگذاری در SSLContext
# منو: SSL/TLS Management → Validate Certificate / Check Cert+Key Match

🔍 تشخیص محیط

در شروع برنامه:

System Detection
OS              : Ubuntu 24.04
Kernel          : 6.8.0-xxx
HAProxy         : 3.0.0 (/usr/sbin/haproxy)
Config          : /etc/haproxy/haproxy.cfg (exists)
Service Manager : systemd
Runtime Socket  : /run/haproxy/admin.sock (Available)

مسیرها قابل Override در config.yaml یا CLI Settings & Environment.


🛡️ امنیت

  • حداقل دسترسی، بررسی is_root() برای عملیات حساس
  • جلوگیری از Command Injection: تمام subprocess با آرگومان لیست، shlex.quote، اعتبارسنجی شدید IP/Port/Hostname/Path/ACL
  • عدم اجرای مستقیم ورودی کاربر در شل
  • دسترسی فایل‌ها: 700 برای پوشه بکاپ، 600 برای فایل بکاپ، 644 برای کانفیگ
  • عدم لاگ کردن Secrets

❗ مدیریت خطا

هیچ Exception باعث Crash ناگهانی نمی‌شود. به‌جای Traceback, پیام کاربرپسند:

❌ Failed to reload HAProxy.
Reason: ...
Details: ...
No changes were applied.

در حالت --debug یا safe_mode: false استک کامل نمایش داده می‌شود.


🧙 ویزاردها و قالب‌ها

قالب‌ها:

  1. TCP Load Balancer
  2. HTTP Load Balancer
  3. HTTPS Reverse Proxy
  4. TLS Passthrough
  5. SNI Router
  6. Port Forward
  7. Custom

پس از انتخاب قالب، پارامترها (پورت/سرور/IP) از ویزارد پرسیده و Diff قبل از اعمال نمایش داده می‌شود.


📤 Import / Export

  • اعتبارسنجی فایل خارجی: haproxy -c -f /tmp/test.cfg
  • خروجی کامل/فقط Frontend/فقط Backend (ذخیره در فایل دلخواه)
  • وارد کردن کانفیگ موجود (Parse → Generate → Diff → Apply)
  • Snapshot: ذخیره وضعیت فعلی با نام دلخواه
  • حفظ دستورات ناشناخته (Unknown directives) هنگام Parse/Generate

🖥️ مانیتور سلامت

HAProxy
├── Service       ✓
├── Configuration ✓
├── Runtime       ✓
└── Backends
    ├── api_back: node01 ✓, node02 ✓
    └── web_back: node01 ✓, node02 ✗ (DOWN)

🛡️ حالت امن (Safe Mode)

به‌صورت پیش‌فرض فعال. در این حالت:

  • هر تغییر نیاز به تایید
  • بکاپ اجباری
  • اعتبارسنجی اجباری
  • نمایش Diff اجباری
  • رولبک فعال

تغییر در config.yaml (safe_mode: true/false) یا منوی Toggle Safe Mode.


🧪 Dry-Run

برای تمام عملیات تغییر:

DRY RUN — No changes will be applied.
Generated configuration: ...
Validation: ✓ PASSED
Diff: ...
Result: No changes applied.

هیچ فایلی یا سرویس تغییر نمی‌کند.


💾 وضعیت پایدار (SQLite)

  • operation_history: timestamp/action/target/result/error
  • health_history: overall/service_running/healthy/down
  • settings, backup_meta

اما کانفیگ اصلی HAProxy همچنان فایل استاندارد و مستقل از برنامه باقی می‌ماند.


🔧 CLI غیرتعاملی (خلاصه)

haproxy-manager status --verbose
haproxy-manager validate --file <path>
haproxy-manager reload
haproxy-manager health
haproxy-manager backup list|create|restore --file <path>
haproxy-manager rollback
haproxy-manager backend create --name <n> --mode http --balance roundrobin
haproxy-manager server add --backend <b> --name <s> --address <ip> --port <p>

حالت تعاملی همچنان پیش‌فرض در صورت اجرای بدون آرگومان است.


🧪 تست

بدون نیاز به HAProxy واقعی — تمام وابستگی‌ها Mock:

# لینوکس با pytest
pytest -v
# یا دستی
python -m pytest tests/
python tests/test_parser.py
python tests/test_validator.py

# ویندوز (با PYTHONUTF8)
$env:PYTHONUTF8=1; python -X utf8 -c "import sys; sys.path.insert(0,'.'); import tests.test_parser; tests.test_parser.test_parse_global(); print('ok')"

پوشش: Parser roundtrip, Generator, Input Validation, Backup/Retention/Compare, Validator (mock subprocess), Health/Runtime (mock socket, Windows skip AF_UNIX), Atomic/Rollback, Security (path injection), Network (TCP/DNS).

نتیجه فعلی ویندوز:

validator_success passed
parse_stat passed
runtime_mock skipped (AF_UNIX not available on Windows)
atomic_apply_success passed
ALL TESTS PASSED

🛠️ توسعه

git clone <repo>
cd haproxy-manager
python -m venv venv; source venv/bin/activate
pip install -r requirements.txt
python main.py --debug   # نمایش Traceback کامل

ساختار پیشنهادی برای توسعه REST API:

from config.manager import ConfigManager
from haproxy.service import ServiceManager
# هسته مستقل از CLI است — مستقیماً قابل استفاده در FastAPI/Flask

🤝 مشارکت

  1. Fork کنید
  2. شاخه Feature بسازید (git checkout -b feature/amazing)
  3. Commit کنید
  4. Push و Pull Request

لطفاً قبل از PR، pytest را اجرا و از عدم شکست تست‌ها اطمینان حاصل کنید.


📄 مجوز

MIT — استفاده با مسئولیت خود؛ قبل از اعمال در پروداکشن، در محیط Staging تست کنید.

بازخورد: https://github.com/anomalyco/opencode — با ذکر Muse Spark / OX Alpha

🌐 پنل مدیریتی تحت وب (GUI)

علاوه بر CLI تعاملی، یک پنل وب مدرن (FastAPI + Jinja2 + Bootstrap 5) با همان هسته امن ارائه شده است.

ویژگی‌های پنل وب

  • داشبورد Real-Time — آمار Frontend/Backend/Server، وضعیت Runtime، آخرین بکاپ‌ها (Auto-Refresh 30s)
  • مدیریت Frontend/Backend — ایجاد/حذف از طریق Modal + API
  • ویرایشگر پیکربندی — نمایش haproxy.cfg با Diff قبل از اعمال (Atomic + بکاپ)
  • سلامت و Runtime — درخت سلامت، جدول سرورها، show info/stat
  • بکاپ‌ها — لیست، بکاپ فوری، بازگردانی، حذف، مقایسه Diff
  • لاگ‌ها — مشاهده لاگ‌های اخیر و Audit + تاریخچه DB
  • احراز هویت — Session Cookie (httponly, SameSite Lax)، هش SHA256، قابل تنظیم via HAPROXY_MANAGER_USER/PASS و HAPROXY_MANAGER_SECRET
  • API کامل — /api/status, /api/config, /api/frontends, /api/backends, /api/service/*, /api/health, /api/backups, /api/stats

اجرای پنل وب

# توسعه
pip install -r requirements.txt
python main.py web --host 0.0.0.0 --port 8000
# با reload برای توسعه
python main.py web --port 8000 --reload

ورود پیش‌فرض: admin / admin — حتماً در پروداکشن تغییر دهید:

export HAPROXY_MANAGER_USER=admin
export HAPROXY_MANAGER_PASS=YourStrongPass
export HAPROXY_MANAGER_SECRET=your-random-secret-32chars
haproxy-manager web --host 0.0.0.0 --port 8000

API نمونه:

# لاگین (کوکی)
curl -c cookies.txt -X POST http://localhost:8000/login -d "username=admin&password=admin" -L
# داشبورد JSON
curl -b cookies.txt http://localhost:8000/api/status
# ایجاد Frontend
curl -b cookies.txt -X POST http://localhost:8000/api/frontends -H "Content-Type: application/json" -d '{"name":"my_front","bind_ip":"*","bind_port":8080,"mode":"http"}'
# اعتبارسنجی
curl -b cookies.txt http://localhost:8000/api/config/validate

امنیت وب:

  • تمام تغییرات از همان ConfigManager امن (اعتبارسنجی + بکاپ + رولبک) عبور می‌کند
  • Session 8 ساعته، HttpOnly، پیشنهاد قرارگیری پشت Nginx/Traefik با TLS
  • برای چند نمونه از Redis برای Session استفاده کنید
  • تمام صفحات HTML نیاز به لاگین دارند (Redirect به /login)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages