autoconfig servers in database

This commit is contained in:
Vladless
2024-12-01 23:24:13 +03:00
parent efc687d0fe
commit d9064ff016
2 changed files with 49 additions and 0 deletions
+2
View File
@@ -27,6 +27,7 @@ from handlers.payments.freekassa_pay import freekassa_webhook
from handlers.payments.robokassa_pay import robokassa_webhook
from handlers.payments.yookassa_pay import yookassa_webhook
from logger import logger
from servers import sync_servers_with_db
async def periodic_notifications():
@@ -66,6 +67,7 @@ async def shutdown_site(site):
async def main():
dp.include_router(router)
await sync_servers_with_db()
if DEV_MODE:
logger.info("Запуск в режиме разработки...")
+47
View File
@@ -0,0 +1,47 @@
import asyncpg
from config import CLUSTERS, DATABASE_URL # Импортируем конфиг с серверами
from logger import logger
async def sync_servers_with_db():
"""
Синхронизирует сервера из конфигурации CLUSTERS с базой данных.
"""
try:
conn = await asyncpg.connect(DATABASE_URL)
logger.info("Подключение к базе данных для синхронизации серверов успешно.")
for cluster_name, servers in CLUSTERS.items():
for server_key, server_info in servers.items():
# Проверяем, существует ли сервер в базе данных
exists = await conn.fetchval(
"""
SELECT 1 FROM servers
WHERE cluster_name = $1 AND server_name = $2
""",
cluster_name,
server_info["name"],
)
# Если сервера нет, добавляем его
if not exists:
await conn.execute(
"""
INSERT INTO servers (cluster_name, server_name, api_url, subscription_url, inbound_id)
VALUES ($1, $2, $3, $4, $5)
""",
cluster_name,
server_info["name"],
server_info["API_URL"],
server_info["SUBSCRIPTION"],
server_info["INBOUND_ID"],
)
logger.info(f"Сервер {server_info['name']} из кластера {cluster_name} добавлен в базу данных.")
else:
logger.info(f"Сервер {server_info['name']} из кластера {cluster_name} уже существует.")
except Exception as e:
logger.error(f"Ошибка при синхронизации серверов: {e}")
finally:
await conn.close()