auto-sync: 2026-04-17 13:10:01
This commit is contained in:
133
tasks/ruvpn-xray/setup_vless.py
Normal file
133
tasks/ruvpn-xray/setup_vless.py
Normal file
@@ -0,0 +1,133 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Настройка VLESS Reality inbound на ruvpn (185.130.212.192) через 3x-ui API
|
||||
"""
|
||||
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!"
|
||||
|
||||
# Генерация UUID и ключей Reality
|
||||
import uuid
|
||||
import subprocess
|
||||
|
||||
UUID = str(uuid.uuid4())
|
||||
print(f"UUID: {UUID}")
|
||||
|
||||
# Генерация пары ключей Reality через xray
|
||||
result = subprocess.run(
|
||||
["docker", "run", "--rm", "teddysun/xray", "xray", "x25519"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
if result.returncode == 0:
|
||||
lines = result.stdout.strip().split('\n')
|
||||
PRIVATE_KEY = lines[0].split(': ')[1] if ': ' in lines[0] else lines[0]
|
||||
PUBLIC_KEY = lines[1].split(': ')[1] if len(lines) > 1 and ': ' in lines[1] else ""
|
||||
print(f"Private Key: {PRIVATE_KEY}")
|
||||
print(f"Public Key: {PUBLIC_KEY}")
|
||||
else:
|
||||
# Fallback: используем статичные тестовые ключи (в продакшене сгенерировать!)
|
||||
PRIVATE_KEY = "test-private-key-replace-me"
|
||||
PUBLIC_KEY = "test-public-key-replace-me"
|
||||
print("WARNING: Could not generate keys, using placeholders")
|
||||
|
||||
SHORT_ID = uuid.uuid4().hex[:16]
|
||||
print(f"Short ID: {SHORT_ID}")
|
||||
|
||||
# Сессия для API
|
||||
session = requests.Session()
|
||||
session.verify = False
|
||||
|
||||
# Логин
|
||||
login_url = f"{BASE_URL}{WEB_BASE_PATH}login"
|
||||
login_data = {
|
||||
"username": USERNAME,
|
||||
"password": PASSWORD
|
||||
}
|
||||
|
||||
print(f"\n=== Логин в 3x-ui ===")
|
||||
response = session.post(login_url, json=login_data)
|
||||
print(f"Login status: {response.status_code}")
|
||||
print(f"Login response: {response.text[:200]}")
|
||||
|
||||
if response.status_code != 200 or "success" not in response.text.lower():
|
||||
print("ERROR: Login failed!")
|
||||
exit(1)
|
||||
|
||||
# Добавление VLESS Reality inbound
|
||||
print(f"\n=== Добавление VLESS Reality inbound ===")
|
||||
|
||||
inbound_config = {
|
||||
"id": 0, # 0 = новый inbound
|
||||
"up": 0,
|
||||
"down": 0,
|
||||
"total": 0,
|
||||
"remark": "VLESS-Reality-Slava",
|
||||
"enable": True,
|
||||
"expiryTime": 0,
|
||||
"listen": "0.0.0.0",
|
||||
"port": 53903,
|
||||
"protocol": "vless",
|
||||
"settings": json.dumps({
|
||||
"clients": [
|
||||
{
|
||||
"id": UUID,
|
||||
"flow": "xtls-rprx-vision",
|
||||
"email": "slava@android",
|
||||
"limitIp": 0,
|
||||
"totalGB": 0,
|
||||
"expiryTime": 0,
|
||||
"enable": True,
|
||||
"tgId": "",
|
||||
"subId": ""
|
||||
}
|
||||
],
|
||||
"decryption": "none",
|
||||
"fallbacks": []
|
||||
}),
|
||||
"streamSettings": json.dumps({
|
||||
"network": "tcp",
|
||||
"security": "reality",
|
||||
"externalProxy": [],
|
||||
"realitySettings": {
|
||||
"show": False,
|
||||
"xver": 0,
|
||||
"dest": "yahoo.com:443",
|
||||
"serverNames": ["yahoo.com"],
|
||||
"privateKey": PRIVATE_KEY,
|
||||
"minClientVersion": "",
|
||||
"maxClientVersion": "",
|
||||
"maxTimeDiff": 0,
|
||||
"shortIds": [SHORT_ID]
|
||||
},
|
||||
"sockopt": {
|
||||
"acceptProxyProtocol": False,
|
||||
"tcpFastOpen": True
|
||||
}
|
||||
}),
|
||||
"tag": f"VLESS_Reality_{UUID[:8]}"
|
||||
}
|
||||
|
||||
add_url = f"{BASE_URL}{WEB_BASE_PATH}panel/api/inbounds/add"
|
||||
response = session.post(add_url, json=inbound_config)
|
||||
print(f"Add inbound status: {response.status_code}")
|
||||
print(f"Response: {response.text[:500]}")
|
||||
|
||||
if response.status_code == 200:
|
||||
print("\n✅ VLESS Reality inbound успешно добавлен!")
|
||||
print(f"\n📱 Конфиг для Android (v2raytun/happ):")
|
||||
print(f"""
|
||||
vless://{UUID}@185.130.212.192:53903?encryption=none&flow=xtls-rprx-vision&security=reality&fp=chrome&sni=yahoo.com&pbk={PUBLIC_KEY}&sid={SHORT_ID}&type=tcp#VLESS-Reality-Slava
|
||||
""")
|
||||
else:
|
||||
print(f"\n❌ Ошибка добавления inbound")
|
||||
print(f"Response: {response.text}")
|
||||
Reference in New Issue
Block a user