57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Восстановление SSH доступа к ruvpn через 3x-ui API
|
|
Логинимся и пробуем выполнить команду через API (если доступно)
|
|
или добавляем правило firewall через systemd
|
|
"""
|
|
import requests
|
|
import json
|
|
import urllib3
|
|
|
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
|
|
BASE_URL = "https://185.130.212.192:37615"
|
|
WEB_BASE_PATH = "/Tlvziqv5coI64Ymq5U/"
|
|
USERNAME = "admin"
|
|
PASSWORD = "XrayAdmin2026!"
|
|
|
|
session = requests.Session()
|
|
session.verify = False
|
|
|
|
# Логин
|
|
login_url = f"{BASE_URL}{WEB_BASE_PATH}login"
|
|
login_data = {"username": USERNAME, "password": PASSWORD}
|
|
|
|
print(f"=== Логин в 3x-ui ===")
|
|
response = session.post(login_url, json=login_data)
|
|
print(f"Status: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
try:
|
|
data = response.json()
|
|
print(f"Response: {json.dumps(data, indent=2)[:500]}")
|
|
if data.get("success"):
|
|
print("✅ Логин успешен!")
|
|
else:
|
|
print("❌ Логин не удался")
|
|
except:
|
|
print(f"Response text: {response.text[:300]}")
|
|
else:
|
|
print(f"❌ HTTP {response.status_code}")
|
|
|
|
# Проверяем доступные API endpoints
|
|
print(f"\n=== Проверка API endpoints ===")
|
|
endpoints = [
|
|
"panel/api/inbounds/list",
|
|
"panel/api/settings",
|
|
"server/status",
|
|
]
|
|
|
|
for endpoint in endpoints:
|
|
url = f"{BASE_URL}{WEB_BASE_PATH}{endpoint}"
|
|
try:
|
|
resp = session.get(url, timeout=5)
|
|
print(f"{endpoint}: {resp.status_code} - {resp.text[:100]}")
|
|
except Exception as e:
|
|
print(f"{endpoint}: ERROR - {e}")
|