Add SHRoNK ip online checker

This commit is contained in:
Nexus 2024-04-22 01:54:12 +01:00
parent 1f350d8399
commit 38acfebea0
Signed by: nex
GPG key ID: 0FA334385D0B689F
3 changed files with 14 additions and 1 deletions

View file

@ -2,6 +2,7 @@ FROM python:3-slim
WORKDIR /app WORKDIR /app
COPY ipserv.py /app COPY ipserv.py /app
COPY cert/ /app/cert
EXPOSE 80/tcp EXPOSE 80/tcp
RUN pip install fastapi requests gunicorn uvicorn[standard] aiohttp RUN pip install fastapi requests gunicorn uvicorn[standard] aiohttp
CMD ["gunicorn", "-b", "0.0.0.0:80", "--forwarded-allow-ips", "*", "--worker-class", "uvicorn.workers.UvicornWorker", "ipserv:app"] CMD ["gunicorn", "-b", "0.0.0.0:80", "--forwarded-allow-ips", "*", "--worker-class", "uvicorn.workers.UvicornWorker", "ipserv:app"]

View file

@ -2,7 +2,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<title>SHRoNK IP Specification test</title> <title>SHRoNK IP Specification test</title>
<script src="script.js" defer></script> <script src="./script.js" defer></script>
<style> <style>
html { html {
font-family: sans-serif; font-family: sans-serif;

View file

@ -6,6 +6,8 @@ import aiohttp
import random import random
from fastapi import FastAPI, Header, Request, Query, HTTPException from fastapi import FastAPI, Header, Request, Query, HTTPException
from fastapi.responses import JSONResponse, PlainTextResponse from fastapi.responses import JSONResponse, PlainTextResponse
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
@ -43,6 +45,13 @@ app = FastAPI(lifespan=lifespan)
app.state.cache = {} app.state.cache = {}
app.state.meta = Manager(app) app.state.meta = Manager(app)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["GET", "HEAD", "OPTIONS"],
allow_headers=["*"],
)
@app.middleware("http") @app.middleware("http")
async def http_middleware(request: Request, call_next): async def http_middleware(request: Request, call_next):
@ -176,3 +185,6 @@ async def get_health():
detail["status"] = "critical" detail["status"] = "critical"
return JSONResponse(detail) return JSONResponse(detail)
app.mount("/check", StaticFiles(directory="./cert", html=True), name="shronk-cert")