Skip to content

Commit be78232

Browse files
committed
improve security
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
1 parent 65b4862 commit be78232

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

server.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import os
77
import requests
88
import logging
9-
import yaml
109
from urllib.parse import quote, unquote
1110
from starlette.responses import RedirectResponse
1211
from authlib.integrations.starlette_client import OAuth
@@ -67,7 +66,7 @@ def require_login(request: Request):
6766

6867

6968
@app.get("/proxy", include_in_schema=False)
70-
async def proxy(url: str, headers: str = None):
69+
async def proxy(url: str, headers: str = None, user=Depends(require_login)):
7170
"""
7271
Proxy endpoint to fetch the OpenAPI document from a given URL (JSON or YAML).
7372
"""
@@ -83,17 +82,8 @@ async def proxy(url: str, headers: str = None):
8382
# Se for YAML, repasse como text/yaml
8483
elif "yaml" in content_type or "yml" in content_type:
8584
return Response(content=resp.content, media_type="text/yaml")
86-
# Se não souber, tente detectar pelo conteúdo
87-
try:
88-
json.loads(resp.text)
89-
return Response(content=resp.content, media_type="application/json")
90-
except Exception:
91-
try:
92-
yaml.safe_load(resp.text)
93-
return Response(content=resp.content, media_type="text/yaml")
94-
except Exception:
95-
# Retorne como texto puro se não conseguir detectar
96-
return Response(content=resp.content, media_type="text/plain")
85+
else:
86+
raise HTTPException(status_code=400, detail="Unsupported content type")
9787
except requests.RequestException as e:
9888
logger.error(f"Error fetching OpenAPI document: {e}")
9989
raise HTTPException(status_code=500, detail={"error": "Failed to fetch OpenAPI document", "details": str(e)})
@@ -178,7 +168,7 @@ async def docs(request: Request, template:str=None, user=Depends(require_login))
178168
)
179169

180170
@app.get("/config", response_class=HTMLResponse, include_in_schema=False)
181-
async def config(request: Request):
171+
async def config(request: Request, user=Depends(require_login)):
182172
"""
183173
Configuration page for the OpenAPI URLs.
184174
"""

0 commit comments

Comments
 (0)