diff --git a/Dockerfile b/Dockerfile index 46a8f22..90d20fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,4 @@ FROM python:3.10 -ENV TINI_VERSION v0.19.0 -ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini -RUN chmod +x /tini -ENTRYPOINT ["/tini", "--"] WORKDIR /app diff --git a/docker-compose.yml b/docker-compose.yml index 4a10424..4cd019a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,16 +8,5 @@ services: environment: - IWM_SERVER="http://make.fangam.es" - IWM_THUMBNAILS="https://images.make.fangam.es" - - IMGPROXY_URL="http://127.0.0.1:5851" + - IMGPROXY_URL="http://127.0.0.1:8080" - IMGPROXY_PARAMS="{\"advanced\":[\"q:50\"]}" - - 'HTTP_PROXIES={"all://make.fangam.es": "http://squid:3128"}' - imgproxy: - image: 'darthsim/imgproxy' - ports: - - 5851:8080 - squid: - image: 'ubuntu/squid' - environment: - - TZ=UTC - volumes: - - ./squid.conf:/etc/squid/squid.conf diff --git a/iwm_browser/main.py b/iwm_browser/main.py index 3ebd547..6a0b0a7 100644 --- a/iwm_browser/main.py +++ b/iwm_browser/main.py @@ -1,7 +1,7 @@ from typing import Union from fastapi.staticfiles import StaticFiles from fastapi.middleware.gzip import GZipMiddleware -from fastapi.responses import HTMLResponse, PlainTextResponse, RedirectResponse +from fastapi.responses import HTMLResponse, PlainTextResponse from fastapi import FastAPI, Form, Response from typing import Optional import urllib.parse @@ -28,6 +28,7 @@ template_env = jinja2.Environment( error_template = template_env.get_template("error.html") + template_env.globals["builtins"] = __builtins__ template_env.globals["convert_times"] = utils.convert_times template_env.globals["json_dumps"] = json.dumps @@ -45,8 +46,6 @@ utils.global_imgproxy_params = json.loads(utils.config_value("IMGPROXY_PARAMS", "advanced": ["q:50"], }''')) # Set it to None to disable the proxy params -PROXIES = utils.config_value("HTTP_PROXIES", '{}') - # Matches level code. # \S[A-Z0-9]{4}\-[A-Z0-9]{4} = With dash, no whitespace # \S[A-Z0-9]{8} = without dash, no whitespace @@ -72,17 +71,11 @@ async def combineCSSResources(resources: str, response: Response): async def root(): template = template_env.get_template("home.html") return template.render() -@app.get("/about", response_class=HTMLResponse) -async def root(): - template = template_env.get_template("about.html") - return template.render() - @app.get("/search", response_class=HTMLResponse) async def search( request: starlette.requests.Request, - response: Response, q: Union[str, None] = None, p: int = 0, sort: str = "average_rating", @@ -140,9 +133,6 @@ async def search( searchValue = q try: - headers = {} - if sort == "random": - headers["Cache-Control"] = "no-cache" rq = httpx.get( BASE_URL + "/api/v1/map", params={ @@ -156,8 +146,6 @@ async def search( **author, }, timeout=10, - proxies=PROXIES, - headers=headers ) if rq.status_code == 503: return error_template.render( @@ -186,31 +174,11 @@ async def search( QueryValues=QueryValues, ) -@app.get("/playlist/featured") -async def get_featured_list(): - try: - rq = httpx.get(BASE_URL + "/api/v1/featuredlist", timeout=10, proxies=PROXIES) - if rq.status_code == 503: - return error_template.render(reason="Server is unavailable right now") - response = rq.json() - - except httpx.ReadTimeout: - return error_template.render(reason="Server timed out") - except json.decoder.JSONDecodeError: - return error_template.render( - reason="Failed to parse server response.", details=rq.text - ) - except Exception as exc: - return error_template.render(reason="Uncaught exception", details=exc) - - - return RedirectResponse("/playlist/" + str(response["ListID"])) - @app.get("/playlist/{playlist_id}", response_class=HTMLResponse) async def showList(request: starlette.requests.Request, playlist_id: int): template = template_env.get_template("playlist.html") try: - rq = httpx.get(BASE_URL + "/api/v1/list/" + str(playlist_id), timeout=10, proxies=PROXIES) + rq = httpx.get(BASE_URL + "/api/v1/list/" + str(playlist_id), timeout=10) if rq.status_code == 503: return error_template.render(reason="Server is unavailable right now") response = rq.json() @@ -237,7 +205,7 @@ async def showLevel(level_id: int): template = template_env.get_template("levelInfo.html") try: - rq = httpx.get(BASE_URL + "/api/v1/map/" + str(level_id), timeout=10, proxies=PROXIES) + rq = httpx.get(BASE_URL + "/api/v1/map/" + str(level_id), timeout=10) if rq.status_code == 503: return error_template.render(reason="Server is unavailable right now") searchResults = rq.json() @@ -262,7 +230,7 @@ async def showUser(user_id: int): template = template_env.get_template("userInfo.html") try: - rq = httpx.get(BASE_URL + "/api/v1/user/" + str(user_id), timeout=10, proxies=PROXIES) + rq = httpx.get(BASE_URL + "/api/v1/user/" + str(user_id), timeout=10) if rq.status_code == 503: return error_template.render(reason="Server is unavailable right now") searchResults = rq.json() diff --git a/iwm_browser/static/homepage.css b/iwm_browser/static/homepage.css index 40cda64..4c3d50d 100644 --- a/iwm_browser/static/homepage.css +++ b/iwm_browser/static/homepage.css @@ -42,19 +42,6 @@ font-size: larger; } -footer { - display: flex; - justify-content: space-evenly; - padding: 0.5rem; - font-size: small; -} -footer > a { - margin: 0em 1em; -} -.About { - display: flex; - justify-content: center; - text-align: center; -} + diff --git a/iwm_browser/templates/about.html b/iwm_browser/templates/about.html deleted file mode 100644 index c94afcd..0000000 --- a/iwm_browser/templates/about.html +++ /dev/null @@ -1,22 +0,0 @@ - - -
-You can find the source code here.
-