28 lines
786 B
Python
28 lines
786 B
Python
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='http://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
|
|
]
|
|
|