|
import os |
|
import asyncio |
|
import logging |
|
from aiohttp import web |
|
|
|
|
|
from .API import api |
|
from .APP import app |
|
from .Authentication import auth |
|
from .routes_main import routes |
|
from FileStream.bot import MULTI_CLIENTS, WORK_LOADS, ACTIVE_CLIENTS |
|
|
|
""" |
|
from .Middlewares.jwt_middleware import jwt_middleware |
|
from .Middlewares.app_token_middleware import app_token_middleware |
|
from .Middlewares.logging_middleware import logging_middleware |
|
#from .Middlewares.rate_limit_middleware import rate_limit_middleware |
|
""" |
|
|
|
INACTIVITY_TIMEOUT = 180 |
|
|
|
|
|
template_folder = os.path.join(os.path.dirname(__file__), 'template') |
|
|
|
|
|
async def clear_inactive_clients(): |
|
"""Clear inactive clients from ACTIVE_CLIENTS.""" |
|
await asyncio.sleep(INACTIVITY_TIMEOUT) |
|
now = asyncio.get_event_loop().time() |
|
inactive_clients = [ |
|
client_id for client_id, tg_connect in ACTIVE_CLIENTS.items() |
|
if now - tg_connect.last_activity > INACTIVITY_TIMEOUT |
|
] |
|
for client in inactive_clients: |
|
|
|
logging.info(f"** Clearing inactive client: {client.name}") |
|
del ACTIVE_CLIENTS[client] |
|
|
|
|
|
async def root_route_handler(request): |
|
return web.json_response({"status": "alive", "message": "Server is running","active_clients":[{"client_name": tg_connect.client.name} for client_id, tg_connect in ACTIVE_CLIENTS.items()],"public_ip":request.remote}) |
|
|
|
|
|
def web_server(): |
|
web_app = web.Application(client_max_size=50) |
|
web_app.router.add_get('/', root_route_handler) |
|
web_app.add_routes(routes) |
|
web_app.add_subapp('/app', app) |
|
web_app.add_subapp('/api', api) |
|
web_app.add_subapp('/auth', auth) |
|
|
|
|
|
web_app.router.add_static('/static/', template_folder) |
|
|
|
return web_app |
|
|