from fastapi import APIRouter import logging from os import getenv from remnawave import RemnawaveSDK from remnawave.models.nodes import GetAllNodesResponseDto logging.basicConfig(level=logging.INFO) router = APIRouter(prefix='/api/v1', tags=['nodes']) remnawave = RemnawaveSDK(base_url='https://remnawave:3000', token=getenv('REMNAWAVE_API_TOKEN')) @router.get('/nodes') async def get_nodes(): nodes: GetAllNodesResponseDto = await remnawave.nodes.get_all_nodes() return [ { 'ip': node.address, 'port': node.port, 'uptime': node.xray_uptime, 'users_online': node.users_online, 'name': node.name, 'country_code': node.country_code } for node in nodes if node.is_connected ]