]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Tue, 14 Jan 2025 00:48:35 +0000 (01:48 +0100)
committerRoland Häder <roland@mxchange.org>
Tue, 14 Jan 2025 00:48:35 +0000 (01:48 +0100)
- why do I have to add this unreferenced reqto?!

daemon.py
fba/commands.py

index 7120f7bc86ecf859d7076dd4354dd888be1b0655..c3d8946fcb4efce83ff887232dcc406d678b4713 100755 (executable)
--- a/daemon.py
+++ b/daemon.py
@@ -45,7 +45,10 @@ from fba.helpers import tidyup
 from fba.models import blocks
 from fba.models import instances
 
-router = fastapi.FastAPI(docs_url=config.get("base_url") + "/docs", redoc_url=config.get("base_url") + "/redoc")
+# Base URL for all our own requests
+_base_url = config.get("base_url")
+
+router = fastapi.FastAPI(docs_url=_base_url + "/docs", redoc_url=_base_url + "/redoc")
 router.mount(
     "/static",
     StaticFiles(directory=Path(__file__).parent.absolute() / "static"),
@@ -54,7 +57,7 @@ router.mount(
 
 templates = Jinja2Templates(directory="templates")
 
-@router.get(config.get("base_url") + "/api/info.json", response_class=JSONResponse)
+@router.get(_base_url + "/api/info.json", response_class=JSONResponse)
 def api_info() -> None:
     database.cursor.execute("SELECT (SELECT COUNT(domain) FROM instances) AS total_websites, (SELECT COUNT(domain) FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey', 'peertube', 'takahe', 'gotosocial', 'brighteon', 'wildebeest', 'bookwyrm', 'mitra', 'areionskey', 'mammuthus', 'neodb', 'smithereen', 'vebinet', 'toki', 'snac', 'biblioreads', 'wordpress', 'oolong', 'diaspora')) AS supported_instances, (SELECT COUNT(blocker) FROM blocks) AS total_blocks, (SELECT COUNT(domain) FROM instances WHERE last_error_details IS NOT NULL) AS erroneous_instances")
 
@@ -68,7 +71,7 @@ def api_info() -> None:
     })
 
 
-@router.get(config.get("base_url") + "/api/scoreboard.json", response_class=JSONResponse)
+@router.get(_base_url + "/api/scoreboard.json", response_class=JSONResponse)
 def api_scoreboard(mode: str, amount: int) -> None:
     if amount > config.get("api_limit"):
         raise HTTPException(status_code=400, detail="Too many results")
@@ -112,7 +115,7 @@ def api_scoreboard(mode: str, amount: int) -> None:
 
     return JSONResponse(status_code=200, content=scores)
 
-@router.get(config.get("base_url") + "/api/list.json", response_class=JSONResponse)
+@router.get(_base_url + "/api/list.json", response_class=JSONResponse)
 def api_list(request: Request, mode: str, value: str, amount: int) -> None:
     if mode is None or value is None or amount is None:
         raise HTTPException(status_code=500, detail="No filter specified")
@@ -147,7 +150,7 @@ LIMIT ?", [amount]
     domainlist = database.cursor.fetchall()
     return domainlist
 
-@router.get(config.get("base_url") + "/api/top.json", response_class=JSONResponse)
+@router.get(_base_url + "/api/top.json", response_class=JSONResponse)
 def api_top(request: Request, mode: str, value: str, amount: int) -> None:
     if mode is None or value is None or amount is None:
         raise HTTPException(status_code=500, detail="No filter specified")
@@ -234,7 +237,7 @@ LIMIT ?", [
 
     return result
 
-@router.get(config.get("base_url") + "/api/domain.json", response_class=JSONResponse)
+@router.get(_base_url + "/api/domain.json", response_class=JSONResponse)
 def api_domain(domain: str) -> None:
     if domain is None:
         raise HTTPException(status_code=400, detail="Invalid request, parameter 'domain' missing")
@@ -254,7 +257,7 @@ def api_domain(domain: str) -> None:
 
     return JSONResponse(status_code=200, content=dict(domain_data))
 
-@router.get(config.get("base_url") + "/api/mutual.json", response_class=JSONResponse)
+@router.get(_base_url + "/api/mutual.json", response_class=JSONResponse)
 def api_mutual(domains: list[str] = Query()) -> None:
     """Return 200 if federation is open between the two, 4xx otherwise"""
     database.cursor.execute(
@@ -277,7 +280,7 @@ def api_mutual(domains: list[str] = Query()) -> None:
     # No known blocks
     return JSONResponse(status_code=200, content={})
 
-@router.get(config.get("base_url") + "/.well-known/nodeinfo", response_class=JSONResponse)
+@router.get(_base_url + "/.well-known/nodeinfo", response_class=JSONResponse)
 def wellknown_nodeinfo(request: Request) -> None:
     return JSONResponse(status_code=200, content={
         "links": ({
@@ -286,7 +289,7 @@ def wellknown_nodeinfo(request: Request) -> None:
         })
     })
 
-@router.get(config.get("base_url") + "/nodeinfo/1.0", response_class=JSONResponse)
+@router.get(_base_url + "/nodeinfo/1.0", response_class=JSONResponse)
 def nodeinfo_1_0(request: Request) -> None:
     return JSONResponse(status_code=200, content={
         "version": "1.0",
@@ -328,7 +331,7 @@ def nodeinfo_1_0(request: Request) -> None:
         },
     })
 
-@router.get(config.get("base_url") + "/api/v1/instance/domain_blocks", response_class=JSONResponse)
+@router.get(_base_url + "/api/v1/instance/domain_blocks", response_class=JSONResponse)
 def api_domain_blocks(request: Request) -> None:
     blocked = blacklist.get_all()
     blocking = []
@@ -343,7 +346,7 @@ def api_domain_blocks(request: Request) -> None:
 
     return JSONResponse(status_code=200, content=blocking)
 
-@router.get(config.get("base_url") + "/api/v1/instance/peers", response_class=JSONResponse)
+@router.get(_base_url + "/api/v1/instance/peers", response_class=JSONResponse)
 def api_peers(request: Request) -> None:
     database.cursor.execute("SELECT domain FROM instances WHERE nodeinfo_url IS NOT NULL")
 
@@ -353,7 +356,7 @@ def api_peers(request: Request) -> None:
 
     return JSONResponse(status_code=200, content=peers)
 
-@router.get(config.get("base_url") + "/scoreboard")
+@router.get(_base_url + "/scoreboard")
 def scoreboard(request: Request, mode: str, amount: int) -> None:
     if mode == "":
         raise HTTPException(status_code=400, detail="No mode specified")
@@ -381,7 +384,7 @@ def scoreboard(request: Request, mode: str, amount: int) -> None:
         "scores"    : json_helper.from_response(response)
     })
 
-@router.get(config.get("base_url") + "/list")
+@router.get(_base_url + "/list")
 def list_domains(request: Request, mode: str, value: str, amount: int = config.get("api_limit")) -> None:
     if mode == "detection_mode" and not instances.valid(value, "detection_mode"):
         raise HTTPException(status_code=500, detail="Invalid detection mode provided")
@@ -410,7 +413,7 @@ def list_domains(request: Request, mode: str, value: str, amount: int = config.g
         "theme"     : config.get("theme"),
     })
 
-@router.get(config.get("base_url") + "/top")
+@router.get(_base_url + "/top")
 def top(request: Request, mode: str, value: str, amount: int = config.get("api_limit")) -> None:
     if mode == "block_level" and not blocks.valid(value, "block_level"):
         raise HTTPException(status_code=500, detail="Invalid block level provided")
@@ -445,7 +448,7 @@ def top(request: Request, mode: str, value: str, amount: int = config.get("api_l
         "theme"    : config.get("theme"),
     })
 
-@router.get(config.get("base_url") + "/infos")
+@router.get(_base_url + "/infos")
 def infos(request: Request, domain: str) -> None:
     if domain is None:
         raise HTTPException(status_code=400, detail="Invalid request, parameter 'domain' missing")
@@ -485,7 +488,7 @@ def infos(request: Request, domain: str) -> None:
         "slogan"  : config.get("slogan"),
     })
 
-@router.get(config.get("base_url") + "/rss")
+@router.get(_base_url + "/rss")
 def rss(request: Request, domain: str = None) -> None:
     if domain is not None:
         domain = tidyup.domain(domain).encode("idna").decode("utf-8")
@@ -535,14 +538,14 @@ LIMIT ?", [config.get("rss_limit")])
         "Content-Type": "routerlication/rss+xml"
     })
 
-@router.get(config.get("base_url") + "/robots.txt", response_class=PlainTextResponse)
+@router.get(_base_url + "/robots.txt", response_class=PlainTextResponse)
 def robots(request: Request) -> None:
     return templates.TemplateResponse("views/robots.txt", {
         "request" : request,
-        "base_url": config.get("base_url")
+        "base_url": _base_url
     })
 
-@router.get(config.get("base_url") + "/")
+@router.get(_base_url + "/")
 def index(request: Request) -> None:
     # Get info
     response = requests.get(
index 3118a63dde386b957d8e1b79bc723be25004da4a..d6fad6bcbaf12a13ac8c1e62d30bd852afa423e6 100644 (file)
@@ -27,6 +27,7 @@ import argparse
 import atoma
 import bs4
 import markdown
+import reqto
 import validators
 
 from fba import database