domovoy_bot/services/web_server.py
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

59 lines
2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Web Server Service - сервис для запуска веб-сервера
"""
import logging
import threading
from typing import Optional
logger = logging.getLogger(__name__)
class WebServerService:
"""Сервис для управления веб-сервером"""
def __init__(self, host: str = "0.0.0.0", port: int = 8000):
self.host = host
self.port = port
self.server = None
self.thread: Optional[threading.Thread] = None
self.is_running = False
def start(self):
"""Запустить веб-сервер в отдельном потоке"""
if self.is_running:
logger.warning("Веб-сервер уже запущен")
return
try:
import uvicorn
from web.app import app
def run_server():
uvicorn.run(app, host=self.host, port=self.port, log_level="info")
self.thread = threading.Thread(target=run_server, daemon=True)
self.thread.start()
self.is_running = True
logger.info(f"Веб-сервер запущен на http://{self.host}:{self.port}")
logger.info(f" Логин: admin")
logger.info(f" Пароль: {self.port} (ID админа)")
except Exception as e:
logger.error(f"Ошибка запуска веб-сервера: {e}")
self.is_running = False
def stop(self):
"""Остановить веб-сервер"""
if not self.is_running:
return
try:
self.is_running = False
logger.info("🛑 Веб-сервер остановлен")
except Exception as e:
logger.error(f"Ошибка остановки веб-сервера: {e}")
def get_url(self) -> str:
"""Получить URL веб-интерфейса"""
return f"http://{self.host}:{self.port}"