Starting server and forwarding it to onion works

This commit is contained in:
BarsTiger
2023-06-26 00:12:17 +03:00
parent 5719f583bd
commit 3a68723877
18 changed files with 571 additions and 0 deletions

View File

@@ -0,0 +1 @@
from .server import run

View File

@@ -0,0 +1,9 @@
from dragonion_server.utils.onion import Onion
def integrate_onion(port: int, name: str) -> Onion:
onion = Onion()
onion.connect()
onion.write_onion_service(name, port)
print(f'Available on {onion.start_onion_service(name)}')
return onion

View File

@@ -0,0 +1,10 @@
from fastapi import APIRouter, Request
from fastapi.responses import PlainTextResponse
router = APIRouter()
@router.get("/", response_model=str)
async def root(request: Request):
return PlainTextResponse("dragonion-server")

View File

@@ -0,0 +1,20 @@
from fastapi import FastAPI
import uvicorn
from dragonion_server.utils.onion import get_available_port
from .integration import integrate_onion
from .routes import router
def get_app(port: int, name: str) -> FastAPI:
onion = integrate_onion(port, name)
return FastAPI(
title=f'dragonion-server: {name}',
description=f'Secure dragonion chat endpoint server - service {name}',
on_shutdown=[onion.cleanup]
)
def run(name: str, port: int = get_available_port()):
app = get_app(port, name)
app.include_router(router)
uvicorn.run(app, host='0.0.0.0', port=port)