|
|
|
|
@@ -3,951 +3,12 @@
|
|
|
|
|
This document breaks the entire BanGUI project into development stages, ordered so that each stage builds on the previous one. Every task is described in prose with enough detail for a developer to begin work. References point to the relevant documentation.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
1. ✅ DONE — fix ban list 500 error
|
|
|
|
|
**Root cause:** `compose.debug.yml` mounted `fail2ban-dev-config` as a named Docker volume
|
|
|
|
|
for the backend container, while fail2ban used a bind-mount of the same local directory.
|
|
|
|
|
The backend's `/config` was therefore an empty volume and could not open the fail2ban
|
|
|
|
|
SQLite database that fail2ban reported via `get dbfile`.
|
|
|
|
|
**Fix:** Changed the backend volume entry from `fail2ban-dev-config:/config:ro` to
|
|
|
|
|
`./fail2ban-dev-config:/config:ro` (bind-mount), and removed the now-unused named volume.
|
|
|
|
|
|
|
|
|
|
~~1. issue with ban list~~
|
|
|
|
|
client.ts:55 GET http://127.0.0.1:5173/api/dashboard/bans?range=24h&page=1&page_size=100 500 (Internal Server Error)
|
|
|
|
|
request @ client.ts:55
|
|
|
|
|
get @ client.ts:88
|
|
|
|
|
fetchBans @ dashboard.ts:43
|
|
|
|
|
(anonymous) @ useBans.ts:68
|
|
|
|
|
(anonymous) @ useBans.ts:90
|
|
|
|
|
commitHookEffectListMount @ react-dom.development.js:23189
|
|
|
|
|
commitPassiveMountOnFiber @ react-dom.development.js:24965
|
|
|
|
|
commitPassiveMountEffects_complete @ react-dom.development.js:24930
|
|
|
|
|
commitPassiveMountEffects_begin @ react-dom.development.js:24917
|
|
|
|
|
commitPassiveMountEffects @ react-dom.development.js:24905
|
|
|
|
|
flushPassiveEffectsImpl @ react-dom.development.js:27078
|
|
|
|
|
flushPassiveEffects @ react-dom.development.js:27023
|
|
|
|
|
(anonymous) @ react-dom.development.js:26808
|
|
|
|
|
workLoop @ scheduler.development.js:266
|
|
|
|
|
flushWork @ scheduler.development.js:239
|
|
|
|
|
performWorkUntilDeadline @ scheduler.development.js:533
|
|
|
|
|
client.ts:55 GET http://127.0.0.1:5173/api/dashboard/bans?range=24h&page=1&page_size=100 500 (Internal Server Error)
|
|
|
|
|
1. fix Stop Jail command
|
|
|
|
|
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:55926 - "GET /api/dashboard/bans?range=24h&page=1&page_size=100 HTTP/1.1" 500 Internal Server Error
|
|
|
|
|
9110898d07c7 ERROR: Exception in ASGI application
|
|
|
|
|
9110898d07c7 Traceback (most recent call last):
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
|
|
|
|
|
9110898d07c7 result = await app( # type: ignore[func-returns-value]
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
|
|
|
|
9110898d07c7 return await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1160, in __call__
|
|
|
|
|
9110898d07c7 await super().__call__(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/applications.py", line 107, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, _send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
|
|
|
|
|
9110898d07c7 with recv_stream, send_stream, collapse_excgroups():
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
|
|
|
|
|
9110898d07c7 self.gen.throw(value)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
|
|
|
|
|
9110898d07c7 response = await self.dispatch_func(request, call_next)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/main.py", line 294, in dispatch
|
|
|
|
|
9110898d07c7 return await call_next(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
|
|
|
|
|
9110898d07c7 raise app_exc from app_exc.__cause__ or app_exc.__context__
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
|
|
|
|
|
9110898d07c7 await self.app(scope, receive_or_disconnect, send_no_error)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 87, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
|
|
|
|
|
9110898d07c7 await route.handle(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 129, in app
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 115, in app
|
|
|
|
|
9110898d07c7 response = await f(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 630, in app
|
|
|
|
|
9110898d07c7 raw_response = await run_endpoint_function(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 323, in run_endpoint_function
|
|
|
|
|
9110898d07c7 return await dependant.call(**values)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/routers/dashboard.py", line 107, in get_dashboard_bans
|
|
|
|
|
9110898d07c7 return await ban_service.list_bans(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/services/ban_service.py", line 181, in list_bans
|
|
|
|
|
9110898d07c7 async with aiosqlite.connect(f"file:{db_path}?mode=ro", uri=True) as f2b_db:
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 181, in __aenter__
|
|
|
|
|
9110898d07c7 return await self
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 168, in _connect
|
|
|
|
|
9110898d07c7 self._connection = await future
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
|
|
|
|
|
9110898d07c7 result = function()
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 466, in connector
|
|
|
|
|
9110898d07c7 return sqlite3.connect(loc, **kwargs)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 sqlite3.OperationalError: unable to open database file
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:55942 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:55946 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 Looking for jobs to run
|
|
|
|
|
9110898d07c7 Next wakeup is due at 2026-03-06 17:47:54.843643+00:00 (in 29.999878 seconds)
|
|
|
|
|
9110898d07c7 Running job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:47:54 UTC)" (scheduled at 2026-03-06 17:47:24.843643+00:00)
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:24.843895Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:24.844510Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:24.844635Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:24.844940Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:24.844983Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:24.845150Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:24.845188Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:24.845396Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"version": "1.1.0", "active_jails": 1, "total_bans": 0, "total_failures": 0, "event": "fail2ban_probe_ok", "timestamp": "2026-03-06T17:47:24.845437Z", "logger": "app.services.health_service", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"online": true, "version": "1.1.0", "active_jails": 1, "event": "health_check_complete", "timestamp": "2026-03-06T17:47:24.845498Z", "logger": "app.tasks.health_check", "level": "debug"}
|
|
|
|
|
9110898d07c7 Job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:47:54 UTC)" executed successfully
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:58940 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:41956 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:54778 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:54780 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:54790 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:54804 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:51.158844Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:51.159260Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"db_path": "/config/fail2ban/fail2ban.sqlite3", "since": 1772732871, "range": "24h", "event": "ban_service_list_accesses", "timestamp": "2026-03-06T17:47:51.159342Z", "logger": "app.services.ban_service", "level": "info"}
|
|
|
|
|
9110898d07c7 executing <function connect.<locals>.connector at 0x7abad4a2aac0>
|
|
|
|
|
9110898d07c7 returning exception unable to open database file
|
|
|
|
|
9110898d07c7 executing <function Connection.stop.<locals>.close_and_stop at 0x7abad4a29580>
|
|
|
|
|
9110898d07c7 operation <function Connection.stop.<locals>.close_and_stop at 0x7abad4a29580> completed
|
|
|
|
|
9110898d07c7 {"path": "/api/dashboard/accesses", "method": "GET", "event": "unhandled_exception", "timestamp": "2026-03-06T17:47:51.159773Z", "logger": "app.main", "level": "error", "exception": "Traceback (most recent call last):\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 191, in __call__\n with recv_stream, send_stream, collapse_excgroups():\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_utils.py\", line 87, in collapse_excgroups\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 193, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/main.py\", line 294, in dispatch\n return await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 168, in call_next\n raise app_exc from app_exc.__cause__ or app_exc.__context__\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 144, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py\", line 87, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py\", line 63, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 716, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 736, in app\n await route.handle(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 290, in handle\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 129, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 115, in app\n response = await f(request)\n ^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 630, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 323, in run_endpoint_function\n return await dependant.call(**values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/routers/dashboard.py\", line 152, in get_dashboard_accesses\n return await ban_service.list_accesses(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/services/ban_service.py\", line 280, in list_accesses\n async with aiosqlite.connect(f\"file:{db_path}?mode=ro\", uri=True) as f2b_db:\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 181, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 168, in _connect\n self._connection = await future\n ^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 63, in _connection_worker_thread\n result = function()\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 466, in connector\n return sqlite3.connect(loc, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nsqlite3.OperationalError: unable to open database file"}
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:54816 - "GET /api/dashboard/accesses?range=24h&page=1&page_size=100 HTTP/1.1" 500 Internal Server Error
|
|
|
|
|
9110898d07c7 ERROR: Exception in ASGI application
|
|
|
|
|
9110898d07c7 Traceback (most recent call last):
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
|
|
|
|
|
9110898d07c7 result = await app( # type: ignore[func-returns-value]
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
|
|
|
|
9110898d07c7 return await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1160, in __call__
|
|
|
|
|
9110898d07c7 await super().__call__(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/applications.py", line 107, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, _send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
|
|
|
|
|
9110898d07c7 with recv_stream, send_stream, collapse_excgroups():
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
|
|
|
|
|
9110898d07c7 self.gen.throw(value)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
|
|
|
|
|
9110898d07c7 response = await self.dispatch_func(request, call_next)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/main.py", line 294, in dispatch
|
|
|
|
|
9110898d07c7 return await call_next(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
|
|
|
|
|
9110898d07c7 raise app_exc from app_exc.__cause__ or app_exc.__context__
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
|
|
|
|
|
9110898d07c7 await self.app(scope, receive_or_disconnect, send_no_error)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 87, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
|
|
|
|
|
9110898d07c7 await route.handle(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 129, in app
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 115, in app
|
|
|
|
|
9110898d07c7 response = await f(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 630, in app
|
|
|
|
|
9110898d07c7 raw_response = await run_endpoint_function(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 323, in run_endpoint_function
|
|
|
|
|
9110898d07c7 return await dependant.call(**values)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/routers/dashboard.py", line 152, in get_dashboard_accesses
|
|
|
|
|
9110898d07c7 return await ban_service.list_accesses(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/services/ban_service.py", line 280, in list_accesses
|
|
|
|
|
9110898d07c7 async with aiosqlite.connect(f"file:{db_path}?mode=ro", uri=True) as f2b_db:
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 181, in __aenter__
|
|
|
|
|
9110898d07c7 return await self
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 168, in _connect
|
|
|
|
|
9110898d07c7 self._connection = await future
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
|
|
|
|
|
9110898d07c7 result = function()
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 466, in connector
|
|
|
|
|
9110898d07c7 return sqlite3.connect(loc, **kwargs)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 sqlite3.OperationalError: unable to open database file
|
|
|
|
|
9110898d07c7 Looking for jobs to run
|
|
|
|
|
9110898d07c7 Next wakeup is due at 2026-03-06 17:48:24.843643+00:00 (in 29.999538 seconds)
|
|
|
|
|
9110898d07c7 Running job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:48:24 UTC)" (scheduled at 2026-03-06 17:47:54.843643+00:00)
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:54.844275Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:54.844782Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:54.844845Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:54.845117Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:54.845171Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:54.845424Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:47:54.845486Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:47:54.845745Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"version": "1.1.0", "active_jails": 1, "total_bans": 0, "total_failures": 0, "event": "fail2ban_probe_ok", "timestamp": "2026-03-06T17:47:54.845805Z", "logger": "app.services.health_service", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"online": true, "version": "1.1.0", "active_jails": 1, "event": "health_check_complete", "timestamp": "2026-03-06T17:47:54.845871Z", "logger": "app.tasks.health_check", "level": "debug"}
|
|
|
|
|
9110898d07c7 Job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:48:24 UTC)" executed successfully
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:52658 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:42840 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:59946 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:59952 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 Looking for jobs to run
|
|
|
|
|
9110898d07c7 Next wakeup is due at 2026-03-06 17:48:54.843643+00:00 (in 29.998906 seconds)
|
|
|
|
|
9110898d07c7 Running job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:48:54 UTC)" (scheduled at 2026-03-06 17:48:24.843643+00:00)
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:24.844922Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:24.845403Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:24.845477Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:24.845741Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:24.845783Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:24.846021Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:24.846060Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:24.846284Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"version": "1.1.0", "active_jails": 1, "total_bans": 0, "total_failures": 0, "event": "fail2ban_probe_ok", "timestamp": "2026-03-06T17:48:24.846340Z", "logger": "app.services.health_service", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"online": true, "version": "1.1.0", "active_jails": 1, "event": "health_check_complete", "timestamp": "2026-03-06T17:48:24.846394Z", "logger": "app.tasks.health_check", "level": "debug"}
|
|
|
|
|
9110898d07c7 Job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:48:54 UTC)" executed successfully
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:39434 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:47306 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:44266 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:44278 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 Looking for jobs to run
|
|
|
|
|
9110898d07c7 Next wakeup is due at 2026-03-06 17:49:24.843643+00:00 (in 29.999723 seconds)
|
|
|
|
|
9110898d07c7 Running job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:49:24 UTC)" (scheduled at 2026-03-06 17:48:54.843643+00:00)
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:54.844056Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["ping"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:54.844512Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:54.844602Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["version"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:54.844871Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:54.844910Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:54.845133Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:48:54.845172Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["status", "bangui-sim"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:48:54.845364Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"version": "1.1.0", "active_jails": 1, "total_bans": 0, "total_failures": 0, "event": "fail2ban_probe_ok", "timestamp": "2026-03-06T17:48:54.845412Z", "logger": "app.services.health_service", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"online": true, "version": "1.1.0", "active_jails": 1, "event": "health_check_complete", "timestamp": "2026-03-06T17:48:54.845463Z", "logger": "app.tasks.health_check", "level": "debug"}
|
|
|
|
|
9110898d07c7 Job "_run_probe (trigger: interval[0:00:30], next run at: 2026-03-06 17:49:24 UTC)" executed successfully
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:57926 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
17403c53ff2c INFO: 10.89.0.7:35600 - "POST /api/jails/bangui-sim/reload HTTP/1.1" 404 Not Found
|
|
|
|
|
17403c53ff2c INFO: 10.89.0.7:35614 - "POST /api/jails/bangui-sim/stop HTTP/1.1" 404 Not Found
|
|
|
|
|
|
|
|
|
|
2. access list simulator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:53218 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:53230 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6495740>) completed
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:49:14.550932Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:49:14.551431Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"db_path": "/config/fail2ban/fail2ban.sqlite3", "since": 1772732954, "range": "24h", "event": "ban_service_list_bans", "timestamp": "2026-03-06T17:49:14.551521Z", "logger": "app.services.ban_service", "level": "info"}
|
|
|
|
|
9110898d07c7 executing <function connect.<locals>.connector at 0x7abad4a08540>
|
|
|
|
|
9110898d07c7 returning exception unable to open database file
|
|
|
|
|
9110898d07c7 executing <function Connection.stop.<locals>.close_and_stop at 0x7abad4b3ede0>
|
|
|
|
|
9110898d07c7 operation <function Connection.stop.<locals>.close_and_stop at 0x7abad4b3ede0> completed
|
|
|
|
|
9110898d07c7 {"path": "/api/dashboard/bans", "method": "GET", "event": "unhandled_exception", "timestamp": "2026-03-06T17:49:14.552411Z", "logger": "app.main", "level": "error", "exception": "Traceback (most recent call last):\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 191, in __call__\n with recv_stream, send_stream, collapse_excgroups():\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_utils.py\", line 87, in collapse_excgroups\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 193, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/main.py\", line 294, in dispatch\n return await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 168, in call_next\n raise app_exc from app_exc.__cause__ or app_exc.__context__\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 144, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py\", line 87, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py\", line 63, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 716, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 736, in app\n await route.handle(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 290, in handle\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 129, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 115, in app\n response = await f(request)\n ^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 630, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 323, in run_endpoint_function\n return await dependant.call(**values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/routers/dashboard.py\", line 107, in get_dashboard_bans\n return await ban_service.list_bans(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/services/ban_service.py\", line 181, in list_bans\n async with aiosqlite.connect(f\"file:{db_path}?mode=ro\", uri=True) as f2b_db:\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 181, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 168, in _connect\n self._connection = await future\n ^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 63, in _connection_worker_thread\n result = function()\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 466, in connector\n return sqlite3.connect(loc, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nsqlite3.OperationalError: unable to open database file"}
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:53234 - "GET /api/dashboard/bans?range=24h&page=1&page_size=100 HTTP/1.1" 500 Internal Server Error
|
|
|
|
|
9110898d07c7 ERROR: Exception in ASGI application
|
|
|
|
|
9110898d07c7 Traceback (most recent call last):
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
|
|
|
|
|
9110898d07c7 result = await app( # type: ignore[func-returns-value]
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
|
|
|
|
9110898d07c7 return await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1160, in __call__
|
|
|
|
|
9110898d07c7 await super().__call__(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/applications.py", line 107, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, _send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
|
|
|
|
|
9110898d07c7 with recv_stream, send_stream, collapse_excgroups():
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
|
|
|
|
|
9110898d07c7 self.gen.throw(value)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
|
|
|
|
|
9110898d07c7 response = await self.dispatch_func(request, call_next)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/main.py", line 294, in dispatch
|
|
|
|
|
9110898d07c7 return await call_next(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
|
|
|
|
|
9110898d07c7 raise app_exc from app_exc.__cause__ or app_exc.__context__
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
|
|
|
|
|
9110898d07c7 await self.app(scope, receive_or_disconnect, send_no_error)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 87, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
|
|
|
|
|
9110898d07c7 await route.handle(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 129, in app
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 115, in app
|
|
|
|
|
9110898d07c7 response = await f(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 630, in app
|
|
|
|
|
9110898d07c7 raw_response = await run_endpoint_function(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 323, in run_endpoint_function
|
|
|
|
|
9110898d07c7 return await dependant.call(**values)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/routers/dashboard.py", line 107, in get_dashboard_bans
|
|
|
|
|
9110898d07c7 return await ban_service.list_bans(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/services/ban_service.py", line 181, in list_bans
|
|
|
|
|
9110898d07c7 async with aiosqlite.connect(f"file:{db_path}?mode=ro", uri=True) as f2b_db:
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 181, in __aenter__
|
|
|
|
|
9110898d07c7 return await self
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 168, in _connect
|
|
|
|
|
9110898d07c7 self._connection = await future
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
|
|
|
|
|
9110898d07c7 result = function()
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 466, in connector
|
|
|
|
|
9110898d07c7 return sqlite3.connect(loc, **kwargs)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 sqlite3.OperationalError: unable to open database file
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad
|
|
|
|
|
|
|
|
|
|
2. ✅ DONE — fix access list 500 error
|
|
|
|
|
**Root cause:** Same compose volume issue as task 1 — the backend could not open the fail2ban SQLite database.
|
|
|
|
|
**Fix:** Resolved by the same bind-mount change from task 1 (`./fail2ban-dev-config:/config:ro`).
|
|
|
|
|
|
|
|
|
|
~~2. issues with access list~~
|
|
|
|
|
|
|
|
|
|
client.ts:55 GET http://127.0.0.1:5173/api/dashboard/accesses?range=24h&page=1&page_size=100 500 (Internal Server Error)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:51584 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:51594 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:50:15.290244Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:50:15.290773Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"db_path": "/config/fail2ban/fail2ban.sqlite3", "since": 1772733015, "range": "24h", "event": "ban_service_list_accesses", "timestamp": "2026-03-06T17:50:15.290865Z", "logger": "app.services.ban_service", "level": "info"}
|
|
|
|
|
9110898d07c7 executing <function connect.<locals>.connector at 0x7abad4a08720>
|
|
|
|
|
9110898d07c7 returning exception unable to open database file
|
|
|
|
|
9110898d07c7 executing <function Connection.stop.<locals>.close_and_stop at 0x7abad4a087c0>
|
|
|
|
|
9110898d07c7 operation <function Connection.stop.<locals>.close_and_stop at 0x7abad4a087c0> completed
|
|
|
|
|
9110898d07c7 {"path": "/api/dashboard/accesses", "method": "GET", "event": "unhandled_exception", "timestamp": "2026-03-06T17:50:15.291399Z", "logger": "app.main", "level": "error", "exception": "Traceback (most recent call last):\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 191, in __call__\n with recv_stream, send_stream, collapse_excgroups():\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_utils.py\", line 87, in collapse_excgroups\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 193, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/main.py\", line 294, in dispatch\n return await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 168, in call_next\n raise app_exc from app_exc.__cause__ or app_exc.__context__\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 144, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py\", line 87, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py\", line 63, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 716, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 736, in app\n await route.handle(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 290, in handle\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 129, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 115, in app\n response = await f(request)\n ^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 630, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 323, in run_endpoint_function\n return await dependant.call(**values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/routers/dashboard.py\", line 152, in get_dashboard_accesses\n return await ban_service.list_accesses(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/services/ban_service.py\", line 280, in list_accesses\n async with aiosqlite.connect(f\"file:{db_path}?mode=ro\", uri=True) as f2b_db:\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 181, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 168, in _connect\n self._connection = await future\n ^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 63, in _connection_worker_thread\n result = function()\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 466, in connector\n return sqlite3.connect(loc, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nsqlite3.OperationalError: unable to open database file"}
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:51598 - "GET /api/dashboard/accesses?range=24h&page=1&page_size=100 HTTP/1.1" 500 Internal Server Error
|
|
|
|
|
9110898d07c7 ERROR: Exception in ASGI application
|
|
|
|
|
9110898d07c7 Traceback (most recent call last):
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
|
|
|
|
|
9110898d07c7 result = await app( # type: ignore[func-returns-value]
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
|
|
|
|
9110898d07c7 return await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1160, in __call__
|
|
|
|
|
9110898d07c7 await super().__call__(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/applications.py", line 107, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, _send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
|
|
|
|
|
9110898d07c7 with recv_stream, send_stream, collapse_excgroups():
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
|
|
|
|
|
9110898d07c7 self.gen.throw(value)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
|
|
|
|
|
9110898d07c7 response = await self.dispatch_func(request, call_next)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/main.py", line 294, in dispatch
|
|
|
|
|
9110898d07c7 return await call_next(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
|
|
|
|
|
9110898d07c7 raise app_exc from app_exc.__cause__ or app_exc.__context__
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
|
|
|
|
|
9110898d07c7 await self.app(scope, receive_or_disconnect, send_no_error)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 87, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
|
|
|
|
|
9110898d07c7 await route.handle(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 129, in app
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 115, in app
|
|
|
|
|
9110898d07c7 response = await f(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 630, in app
|
|
|
|
|
9110898d07c7 raw_response = await run_endpoint_function(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 323, in run_endpoint_function
|
|
|
|
|
9110898d07c7 return await dependant.call(**values)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/routers/dashboard.py", line 152, in get_dashboard_accesses
|
|
|
|
|
9110898d07c7 return await ban_service.list_accesses(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/services/ban_service.py", line 280, in list_accesses
|
|
|
|
|
9110898d07c7 async with aiosqlite.connect(f"file:{db_path}?mode=ro", uri=True) as f2b_db:
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 181, in __aenter__
|
|
|
|
|
9110898d07c7 return await self
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 168, in _connect
|
|
|
|
|
9110898d07c7 self._connection = await future
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
|
|
|
|
|
9110898d07c7 result = function()
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 466, in connector
|
|
|
|
|
9110898d07c7 return sqlite3.connect(loc, **kwargs)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 sqlite3.OperationalError: unable to open database file
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7540>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6494ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6494ec0>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6494ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6494ec0>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:51600 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6494ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6494ec0>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6494ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6494ec0>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6494ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6494ec0>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6494ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6494ec0>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:51606 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:60528 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
|
|
|
|
|
3. ✅ DONE — World Map page
|
|
|
|
|
**Root cause:** `/api/dashboard/bans/by-country` returned 500 due to the same database mount issue (task 1/2).
|
|
|
|
|
**Fix:** Compose bind-mount fix (task 1) resolves the backend error. The complete World Map feature is implemented: `MapPage.tsx`, `WorldMap.tsx` (SVG via react-simple-maps), `useMapData` hook, `api/map.ts`, `types/map.ts`, and the backend `bans_by_country` endpoint with geo enrichment.
|
|
|
|
|
|
|
|
|
|
~~3. World map~~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:43234 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:43236 - "GET /api/dashboard/status HTTP/1.1" 200 OK
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:50:59.369697Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:50:59.370154Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"db_path": "/config/fail2ban/fail2ban.sqlite3", "since": 1772733059, "range": "24h", "event": "ban_service_bans_by_country", "timestamp": "2026-03-06T17:50:59.370213Z", "logger": "app.services.ban_service", "level": "info"}
|
|
|
|
|
9110898d07c7 executing <function connect.<locals>.connector at 0x7abad4a2aca0>
|
|
|
|
|
9110898d07c7 returning exception unable to open database file
|
|
|
|
|
9110898d07c7 executing <function Connection.stop.<locals>.close_and_stop at 0x7abad4a2af20>
|
|
|
|
|
9110898d07c7 operation <function Connection.stop.<locals>.close_and_stop at 0x7abad4a2af20> completed
|
|
|
|
|
9110898d07c7 {"path": "/api/dashboard/bans/by-country", "method": "GET", "event": "unhandled_exception", "timestamp": "2026-03-06T17:50:59.370651Z", "logger": "app.main", "level": "error", "exception": "Traceback (most recent call last):\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 191, in __call__\n with recv_stream, send_stream, collapse_excgroups():\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_utils.py\", line 87, in collapse_excgroups\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 193, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/main.py\", line 294, in dispatch\n return await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 168, in call_next\n raise app_exc from app_exc.__cause__ or app_exc.__context__\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 144, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py\", line 87, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py\", line 63, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 716, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 736, in app\n await route.handle(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 290, in handle\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 129, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 115, in app\n response = await f(request)\n ^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 630, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 323, in run_endpoint_function\n return await dependant.call(**values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/routers/dashboard.py\", line 192, in get_bans_by_country\n return await ban_service.bans_by_country(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/services/ban_service.py\", line 366, in bans_by_country\n async with aiosqlite.connect(f\"file:{db_path}?mode=ro\", uri=True) as f2b_db:\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 181, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 168, in _connect\n self._connection = await future\n ^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 63, in _connection_worker_thread\n result = function()\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 466, in connector\n return sqlite3.connect(loc, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nsqlite3.OperationalError: unable to open database file"}
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:43246 - "GET /api/dashboard/bans/by-country?range=24h HTTP/1.1" 500 Internal Server Error
|
|
|
|
|
9110898d07c7 ERROR: Exception in ASGI application
|
|
|
|
|
9110898d07c7 Traceback (most recent call last):
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
|
|
|
|
|
9110898d07c7 result = await app( # type: ignore[func-returns-value]
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
|
|
|
|
9110898d07c7 return await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1160, in __call__
|
|
|
|
|
9110898d07c7 await super().__call__(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/applications.py", line 107, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, _send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
|
|
|
|
|
9110898d07c7 with recv_stream, send_stream, collapse_excgroups():
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
|
|
|
|
|
9110898d07c7 self.gen.throw(value)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
|
|
|
|
|
9110898d07c7 response = await self.dispatch_func(request, call_next)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/main.py", line 294, in dispatch
|
|
|
|
|
9110898d07c7 return await call_next(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
|
|
|
|
|
9110898d07c7 raise app_exc from app_exc.__cause__ or app_exc.__context__
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
|
|
|
|
|
9110898d07c7 await self.app(scope, receive_or_disconnect, send_no_error)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 87, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
|
|
|
|
|
9110898d07c7 await route.handle(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 129, in app
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 115, in app
|
|
|
|
|
9110898d07c7 response = await f(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 630, in app
|
|
|
|
|
9110898d07c7 raw_response = await run_endpoint_function(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 323, in run_endpoint_function
|
|
|
|
|
9110898d07c7 return await dependant.call(**values)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/routers/dashboard.py", line 192, in get_bans_by_country
|
|
|
|
|
9110898d07c7 return await ban_service.bans_by_country(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/services/ban_service.py", line 366, in bans_by_country
|
|
|
|
|
9110898d07c7 async with aiosqlite.connect(f"file:{db_path}?mode=ro", uri=True) as f2b_db:
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 181, in __aenter__
|
|
|
|
|
9110898d07c7 return await self
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 168, in _connect
|
|
|
|
|
9110898d07c7 self._connection = await future
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
|
|
|
|
|
9110898d07c7 result = function()
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 466, in connector
|
|
|
|
|
9110898d07c7 return sqlite3.connect(loc, **kwargs)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 sqlite3.OperationalError: unable to open database file
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT value FROM settings WHERE key = ?', ('setup_completed',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad49b7440>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',))
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method execute of sqlite3.Connection object at 0x7abad6521210>, 'SELECT id, token, created_at, expires_at FROM sessions WHERE token = ?', ('e829a2a69e384640c259f069c8574de6b8bb486257f4a7f005a05757260ce832',)) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6476ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method fetchone of sqlite3.Cursor object at 0x7abad6476ec0>) completed
|
|
|
|
|
9110898d07c7 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6476ec0>)
|
|
|
|
|
9110898d07c7 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x7abad6476ec0>) completed
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_sending_command", "timestamp": "2026-03-06T17:50:59.377467Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"command": ["get", "dbfile"], "event": "fail2ban_received_response", "timestamp": "2026-03-06T17:50:59.378109Z", "logger": "app.utils.fail2ban_client", "level": "debug"}
|
|
|
|
|
9110898d07c7 {"db_path": "/config/fail2ban/fail2ban.sqlite3", "since": 1772733059, "range": "24h", "event": "ban_service_bans_by_country", "timestamp": "2026-03-06T17:50:59.378383Z", "logger": "app.services.ban_service", "level": "info"}
|
|
|
|
|
9110898d07c7 executing <function connect.<locals>.connector at 0x7abad4b3e660>
|
|
|
|
|
9110898d07c7 returning exception unable to open database file
|
|
|
|
|
9110898d07c7 executing <function Connection.stop.<locals>.close_and_stop at 0x7abad4b3dda0>
|
|
|
|
|
9110898d07c7 operation <function Connection.stop.<locals>.close_and_stop at 0x7abad4b3dda0> completed
|
|
|
|
|
9110898d07c7 {"path": "/api/dashboard/bans/by-country", "method": "GET", "event": "unhandled_exception", "timestamp": "2026-03-06T17:50:59.380270Z", "logger": "app.main", "level": "error", "exception": "Traceback (most recent call last):\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py\", line 164, in __call__\n await self.app(scope, receive, _send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 191, in __call__\n with recv_stream, send_stream, collapse_excgroups():\n ^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/contextlib.py\", line 158, in __exit__\n self.gen.throw(value)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_utils.py\", line 87, in collapse_excgroups\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 193, in __call__\n response = await self.dispatch_func(request, call_next)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/main.py\", line 294, in dispatch\n return await call_next(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 168, in call_next\n raise app_exc from app_exc.__cause__ or app_exc.__context__\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py\", line 144, in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py\", line 87, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py\", line 63, in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 716, in __call__\n await self.middleware_stack(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 736, in app\n await route.handle(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 290, in handle\n await self.app(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 129, in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 53, in wrapped_app\n raise exc\n File \"/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py\", line 42, in wrapped_app\n await app(scope, receive, sender)\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 115, in app\n response = await f(request)\n ^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 630, in app\n raw_response = await run_endpoint_function(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/fastapi/routing.py\", line 323, in run_endpoint_function\n return await dependant.call(**values)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/routers/dashboard.py\", line 192, in get_bans_by_country\n return await ban_service.bans_by_country(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/app/app/services/ban_service.py\", line 366, in bans_by_country\n async with aiosqlite.connect(f\"file:{db_path}?mode=ro\", uri=True) as f2b_db:\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 181, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 168, in _connect\n self._connection = await future\n ^^^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 63, in _connection_worker_thread\n result = function()\n ^^^^^^^^^^\n File \"/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py\", line 466, in connector\n return sqlite3.connect(loc, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nsqlite3.OperationalError: unable to open database file"}
|
|
|
|
|
9110898d07c7 INFO: 10.89.0.3:43258 - "GET /api/dashboard/bans/by-country?range=24h HTTP/1.1" 500 Internal Server Error
|
|
|
|
|
9110898d07c7 ERROR: Exception in ASGI application
|
|
|
|
|
9110898d07c7 Traceback (most recent call last):
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
|
|
|
|
|
9110898d07c7 result = await app( # type: ignore[func-returns-value]
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
|
|
|
|
9110898d07c7 return await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1160, in __call__
|
|
|
|
|
9110898d07c7 await super().__call__(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/applications.py", line 107, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, _send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 191, in __call__
|
|
|
|
|
9110898d07c7 with recv_stream, send_stream, collapse_excgroups():
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
|
|
|
|
|
9110898d07c7 self.gen.throw(value)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 193, in __call__
|
|
|
|
|
9110898d07c7 response = await self.dispatch_func(request, call_next)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/main.py", line 294, in dispatch
|
|
|
|
|
9110898d07c7 return await call_next(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 168, in call_next
|
|
|
|
|
9110898d07c7 raise app_exc from app_exc.__cause__ or app_exc.__context__
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 144, in coro
|
|
|
|
|
9110898d07c7 await self.app(scope, receive_or_disconnect, send_no_error)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 87, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
|
|
|
|
|
9110898d07c7 await self.middleware_stack(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
|
|
|
|
|
9110898d07c7 await route.handle(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
|
|
|
|
|
9110898d07c7 await self.app(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 129, in app
|
|
|
|
|
9110898d07c7 await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
|
|
|
|
9110898d07c7 raise exc
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
|
|
|
|
9110898d07c7 await app(scope, receive, sender)
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 115, in app
|
|
|
|
|
9110898d07c7 response = await f(request)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 630, in app
|
|
|
|
|
9110898d07c7 raw_response = await run_endpoint_function(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/fastapi/routing.py", line 323, in run_endpoint_function
|
|
|
|
|
9110898d07c7 return await dependant.call(**values)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/routers/dashboard.py", line 192, in get_bans_by_country
|
|
|
|
|
9110898d07c7 return await ban_service.bans_by_country(
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/app/app/services/ban_service.py", line 366, in bans_by_country
|
|
|
|
|
9110898d07c7 async with aiosqlite.connect(f"file:{db_path}?mode=ro", uri=True) as f2b_db:
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 181, in __aenter__
|
|
|
|
|
9110898d07c7 return await self
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 168, in _connect
|
|
|
|
|
9110898d07c7 self._connection = await future
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
|
|
|
|
|
9110898d07c7 result = function()
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^
|
|
|
|
|
9110898d07c7 File "/opt/venv/lib/python3.12/site-packages/aiosqlite/core.py", line 466, in connector
|
|
|
|
|
9110898d07c7 return sqlite3.connect(loc, **kwargs)
|
|
|
|
|
9110898d07c7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
9110898d07c7 sqlite3.OperationalError: unable to open database file
|
|
|
|
|
9110898d07c7 INFO: 127.0.0.1:41282 - "GET /api/health HTTP/1.1" 200 OK
|
|
|
|
|
|
|
|
|
|
make a script that put a access log entry, so i can check the access list feature.
|
|
|
|
|
check and modify /home/lukas/Volume/repo/BanGUI/Docker/fail2ban-dev-config/README.md
|