Compare commits

...

2 Commits

Author SHA1 Message Date
Jimmy 0c2af63888 Implement logs and stats 2022-01-17 20:51:13 +13:00
Jimmy 18ef42023f Change test user 2022-01-17 20:50:32 +13:00
2 changed files with 29 additions and 19 deletions

View File

@ -3,6 +3,7 @@ from sse_starlette.sse import EventSourceResponse
import base64
import docker
import aiodocker
from asyncio import sleep
router = APIRouter()
client = docker.from_env()
@ -44,25 +45,32 @@ async def commnd(server, command):
@router.get("/server/{server}/logs")
async def logs(server: str, request: Request):
async def logs(server: str, request: Request, follow: bool = True, tail: int = 1000):
container = await getContainer(server)
#event_generator = logGenerator(request, server)
return EventSourceResponse(container.log(stdout=True, follow=True, tail=5000))
if follow:
return EventSourceResponse(logStream(container, tail))
else:
return await container.log(stdout=True, follow=False, tail=tail)
async def logGenerator(request, server):
container = await getContainer(server)
for line in container.log(stdout=True, follow=True, tail=5000):
if await request.is_disconnected():
print("client disconnected!!!")
break
async def logStream(container, tail):
async for line in container.log(stdout=True, follow=True, tail=tail):
yield line
yield '\n'
# @router.get("/server/{server}/stats")
# async def stats(server: str):
# container = await getContainer(server)
# return EventSourceResponse(container.stats(stream=True))
@router.get("/server/{server}/stats")
async def stats(server: str, request: Request, stream: bool = True, delay: int = 2):
container = await getContainer(server)
if stream:
return EventSourceResponse(statStream(request, container, delay))
return await container.stats(stream=False)
async def statStream(request, container, delay):
while True:
yield await container.stats(stream=False)
_delay = delay - 1 if delay else 0
print(_delay)
await sleep(_delay)
async def getContainer(server):
return await docker.containers.get(server)

View File

@ -1,8 +1,10 @@
{
"johndoe": {
"username": "johndoe",
"hashed_password": "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW",
"disabled": "False",
"servers": ["a", "b","minecraft"]
}
"test": {
"username": "test",
"hashed_password": "$2b$12$VS1k1fdA4x2EeF1a/LMIyex.evEQGF5EsviIcG22S55YO8uUQCT7q",
"disabled": false,
"servers": [
"test"
]
}
}