mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-01-20 11:50:27 +00:00
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
import logging
|
|
from aiohttp import web, ClientSession
|
|
from aiogram import Bot
|
|
from database import Database
|
|
from config import Config
|
|
from tribute_service import TributeService, tribute_webhook_route
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class WebhookServer:
|
|
def __init__(self, bot: Bot, db: Database, config: Config):
|
|
self.bot = bot
|
|
self.db = db
|
|
self.config = config
|
|
self.app = None
|
|
self.runner = None
|
|
self.site = None
|
|
|
|
async def create_app(self):
|
|
self.app = web.Application()
|
|
|
|
tribute_service = TributeService(self.bot, self.config, self.db)
|
|
|
|
self.app['tribute_service'] = tribute_service
|
|
|
|
self.app.router.add_post(self.config.TRIBUTE_WEBHOOK_PATH, tribute_webhook_route)
|
|
|
|
async def health_check(request):
|
|
return web.json_response({"status": "ok", "service": "tribute-webhooks"})
|
|
|
|
self.app.router.add_get('/health', health_check)
|
|
|
|
logger.info(f"Webhook server configured with route: {self.config.TRIBUTE_WEBHOOK_PATH}")
|
|
return self.app
|
|
|
|
async def start(self):
|
|
try:
|
|
if not self.app:
|
|
await self.create_app()
|
|
|
|
self.runner = web.AppRunner(self.app)
|
|
await self.runner.setup()
|
|
|
|
self.site = web.TCPSite(
|
|
self.runner,
|
|
host='0.0.0.0',
|
|
port=self.config.TRIBUTE_WEBHOOK_PORT
|
|
)
|
|
|
|
await self.site.start()
|
|
|
|
logger.info(f"✅ Webhook server started on port {self.config.TRIBUTE_WEBHOOK_PORT}")
|
|
logger.info(f"🎯 Tribute webhook URL: http://your-server:{self.config.TRIBUTE_WEBHOOK_PORT}{self.config.TRIBUTE_WEBHOOK_PATH}")
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ Failed to start webhook server: {e}")
|
|
raise
|
|
|
|
async def stop(self):
|
|
try:
|
|
if self.site:
|
|
await self.site.stop()
|
|
logger.info("Webhook site stopped")
|
|
|
|
if self.runner:
|
|
await self.runner.cleanup()
|
|
logger.info("Webhook runner cleaned up")
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error stopping webhook server: {e}")
|