diff --git a/aggregator.py b/aggregator.py index b35c43e..f58ea2e 100644 --- a/aggregator.py +++ b/aggregator.py @@ -1045,31 +1045,37 @@ async def home_page(): statuses = await fetch_servers_status() servers_html = "" - for s in statuses: + for i, s in enumerate(statuses): chk = s.get("checks", {}) cpu = chk.get("CPU", {}).get("value") ram = chk.get("RAM", {}).get("value") disk = chk.get("Disk /", {}).get("value") net_raw = chk.get("Net ↓↑", {}).get("value", "") server_name = s.get("server_name", s["name"].upper()) + delay = 0.3 + i * 0.15 - service_icons = "" + svc_tags = "" for key in ("Caddy", "Minecraft", "Bio site", "Main site", "3x-UI"): val = chk.get(key, {}).get("value", "") if val: - dot = "🟢" if "🟢" in val else ("🔴" if "🔴" in val or "🔴" in str(val) else ("🟡" if "🟡" in val else "")) - service_icons += f'{dot or "●"}' + if "🟢" in val or "RUN" in val or "OK" in val or "200" in val: + cl, st = "ok", "🟢" + elif "🔴" in val or "DOWN" in val or "502" in val or "503" in val or "error" in val.lower(): + cl, st = "err", "🔴" + else: + cl, st = "warn", "🟡" + svc_tags += f'{st} {key}' servers_html += f''' -
-
{get_flag_emoji(s.get("country",""))} {server_name}
-
-
CPU
{f"{cpu:.1f}%" if cpu is not None else "—"}
-
RAM
{f"{ram:.1f}%" if ram is not None else "—"}
-
DISK
{f"{disk:.1f}%" if disk is not None else "—"}
-
NET
{net_raw}
+
+
{get_flag_emoji(s.get("country",""))} {server_name}
+
+
CPU
{f"{cpu:.1f}%" if cpu is not None else "—"}
+
RAM
{f"{ram:.1f}%" if ram is not None else "—"}
+
DSK
{f"{disk:.1f}%" if disk is not None else "—"}
+
NET
{net_raw}
- {f'
{service_icons}
' if service_icons else ''} + {f'
{svc_tags}
' if svc_tags else ''}
''' return HTMLResponse(content=f''' @@ -1077,67 +1083,181 @@ async def home_page(): {title} - + +
+

⚡ {title}

Быстрый и надёжный VPN-сервис

+
-
{total}
👥 Клиентов
-
{len(servers)}
🌍 Локаций
+
{total}
Пользователей
+
{len(servers)}
Локаций
+
{servers_html}
+

🔧 Технические детали

-

-🔒 Шифрование: VLESS + XTLS Vision / Reality
- Протоколы: TCP, WebSocket, gRPC
-🛡️ DDoS-защита на всех серверах
-📡 Каналы: 1-10 Gbit/s
-🔐 Zero-log политика — трафик не логируется
-🌐 Поддержка Happ (iOS/Android/Desktop) -

+
+VLESS + XTLS Vision / Reality +TCP, WebSocket, gRPC +DDoS-защита на всех серверах +Каналы 1–10 Gbit/s +Zero-log политика +Поддержка Happ (iOS/Android)
+
+ + +
''')