auto-sync: 2026-04-18 18:00:01

This commit is contained in:
Stream
2026-04-18 18:00:01 +03:00
parent 5e765118d5
commit 3701d4cea6
6 changed files with 3 additions and 367 deletions

View File

@@ -136,3 +136,6 @@
{"op": "delete", "id": "proj_home_assistant", "timestamp": "2026-04-18T14:44:22.703342+00:00"}
{"op": "create", "entity": {"id": "proj_ha_availability_dashboard", "type": "Project", "properties": {"name": "HA Availability Dashboard", "status": "active", "description": "Дашборд доступности устройств в Home Assistant", "folder": "tasks/ha-availability-dashboard/", "doc_path": "tasks/ha-availability-dashboard/PROJECT.md"}, "created": "2026-04-18T14:46:16.652373+00:00"}, "timestamp": "2026-04-18T14:46:16.652373+00:00"}
{"op": "create", "entity": {"id": "task_ha_availability_dashboard_setup", "type": "Task", "properties": {"title": "Привести HA Availability Dashboard к стандарту проекта", "status": "active", "project": "proj_ha_availability_dashboard", "folder": "tasks/ha-availability-dashboard/TASKS/active/setup/", "doc_path": "tasks/ha-availability-dashboard/TASKS/active/setup/TASK.md"}, "created": "2026-04-18T14:46:16.652373+00:00"}, "timestamp": "2026-04-18T14:46:16.652373+00:00"}
{"op": "delete", "id": "proj_mtproxy", "timestamp": "2026-04-18T14:51:47.300166+00:00"}
{"op": "delete", "id": "task_mtproxy_setup", "timestamp": "2026-04-18T14:51:47.300166+00:00"}
{"op": "delete", "id": "proj_ruvpn_xray", "timestamp": "2026-04-18T14:57:49.775527+00:00"}

View File

@@ -1,96 +0,0 @@
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"tag": "socks-in",
"protocol": "socks",
"listen": "127.0.0.1",
"port": 10808,
"settings": {
"auth": "noauth",
"udp": true
}
},
{
"tag": "http-in",
"protocol": "http",
"listen": "127.0.0.1",
"port": 10809,
"settings": {}
}
],
"outbounds": [
{
"tag": "proxy",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "185.130.212.192",
"port": 443,
"users": [
{
"id": "d3a2fae8-d703-4b2f-8d94-afb016d57640",
"encryption": "none",
"flow": "xtls-rprx-vision"
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "www.microsoft.com",
"fingerprint": "chrome",
"publicKey": "3jY3vI6MUTEn3X20u7xDjpxrF2wO6zUxiXgP-Aie7yQ",
"shortId": "a1b2c3d4",
"spiderX": ""
}
}
},
{
"tag": "direct",
"protocol": "freedom",
"settings": {}
},
{
"tag": "block",
"protocol": "blackhole",
"settings": {}
}
],
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"outboundTag": "proxy",
"domain": [
"telegram.org",
"t.me",
"core.telegram.org"
]
},
{
"type": "field",
"outboundTag": "proxy",
"ip": [
"149.154.160.0/20",
"91.108.4.0/22",
"91.108.8.0/22",
"91.108.56.0/22",
"95.161.64.0/20"
]
},
{
"type": "field",
"outboundTag": "direct",
"network": "tcp,udp"
}
]
}
}

View File

@@ -1,15 +0,0 @@
#!/bin/bash
echo "Останавливаю контейнер mtproto-proxy..."
sudo docker stop mtproto-proxy || true
echo "Удаляю контейнер mtproto-proxy..."
sudo docker rm mtproto-proxy || true
echo "Удаляю образ nineseconds/mtg:2..."
sudo docker rmi nineseconds/mtg:2 || true
echo "Удаляю конфиг mtg.toml..."
[ -f mtg.toml ] && rm mtg.toml || true
echo "MTProxy удалён."

View File

@@ -1,67 +0,0 @@
#!/bin/bash
set -e
# ============================================================
# MTProxy (Fake TLS) setup script for Telegram
# Uses: nineseconds/mtg:2 Docker image
# Port: 9443 (proxy), 8889 (stats)
# ============================================================
echo "==> [1/6] Проверка и установка Docker..."
if ! command -v docker &>/dev/null; then
echo " Docker не найден. Устанавливаем..."
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
echo " Docker установлен и запущен."
else
echo " Docker уже установлен: $(docker --version)"
fi
echo ""
echo "==> [2/6] Генерация секрета (Fake TLS, домен: www.google.com)..."
SECRET=$(sudo docker run --rm nineseconds/mtg:2 generate-secret --hex www.google.com)
echo " Секрет сгенерирован: $SECRET"
echo ""
echo "==> [3/6] Создание конфига mtg.toml..."
printf 'secret = "%s"\nbind-to = "0.0.0.0:3128"\nfake_tls_domain_check = false\n' "$SECRET" > mtg.toml
echo " Файл mtg.toml создан:"
cat mtg.toml
echo ""
echo "==> [4/6] Остановка и удаление старого контейнера (если есть)..."
sudo docker stop mtproto-proxy 2>/dev/null || true
sudo docker rm mtproto-proxy 2>/dev/null || true
echo " Готово (или контейнера не было — это нормально)."
echo ""
echo "==> [5/6] Запуск нового контейнера mtproto-proxy..."
sudo docker run -d \
--name=mtproto-proxy \
--restart=always \
-p 9443:3128 \
-p 8889:3129 \
-v "$(pwd)/mtg.toml:/config.toml:ro" \
nineseconds/mtg:2
echo " Контейнер запущен."
echo ""
echo "==> [6/6] Формирование ссылки для подключения..."
SERVER_IP=$(curl -fsSL https://ifconfig.me 2>/dev/null || hostname -I | awk '{print $1}')
SECRET_B64=$(echo -n "$SECRET" | xxd -r -p | base64 | tr '+/' '-_' | tr -d '=')
TG_LINK="tg://proxy?server=${SERVER_IP}&port=9443&secret=${SECRET_B64}"
echo ""
echo "============================================================"
echo " MTProxy успешно развёрнут!"
echo "------------------------------------------------------------"
echo " Сервер : $SERVER_IP"
echo " Порт : 9443"
echo " Секрет : $SECRET"
echo ""
echo " Ссылка для Telegram:"
echo " $TG_LINK"
echo ""
echo " Также можно открыть в браузере (заменит tg:// на https://):"
echo " https://t.me/proxy?server=${SERVER_IP}&port=9443&secret=${SECRET_B64}"
echo "============================================================"

View File

@@ -1,133 +0,0 @@
#!/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}")

View File

@@ -1,56 +0,0 @@
#!/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}")