3 Commits

Author SHA1 Message Date
645d8820f1 fix: repair middleware wiring, input validation, and resource lifecycle
- Wrap RateLimitMiddleware in Middleware() - bare class broke all requests (500)
- Clamp/validate num param - ?num=abc no longer returns 500
- Query length cap (500), result counts clamped to 1..20
- Wire lifespan into Starlette so shared httpx client closes on shutdown
- Purge stale per-IP rate limit entries to bound memory growth
- URL-encode queries in the Playwright scraper path
- Lazy lib imports so the package works without optional playwright
- Add pyproject.toml (activates ruff/pytest/bandit in CI), README, LICENSE
- Remove committed __pycache__, add .gitignore/.dockerignore
- Fix SearXNG healthcheck path (/health -> /healthz) and compose docs
2026-08-20 23:27:27 +00:00
40454e385f fix: batch fix all 8 open issues
- #1 SearXNG auth: remove external port, internal-only network, enable limiter
- #2 Health checks: add docker-compose healthcheck + depends_on condition
- #3 Rate limiting: add per-IP RateLimitMiddleware (30 req/min)
- #4 Hardcoded secret: replace with ${SEARXNG_SECRET} env var
- #5 Debug disclosure: debug=False, generic error messages, no stack traces
- #6 Health endpoint: add /health route returning JSON status
- #7 asyncio deprecation: get_event_loop() -> get_running_loop()
- #8 httpx reuse: module-level singleton AsyncClient with connection pool
2026-07-05 22:04:57 +00:00
1096115208 initial commit 2026-07-03 01:06:24 +00:00