2026-04-28 23:14:11,427 - main - INFO - === Logging system initialized ===
2026-04-28 23:14:11,427 - main - INFO - Log file: logs/app_20260428_231411.log
2026-04-28 23:14:11,427 - main - INFO - Log level: INFO
2026-04-28 23:14:11,427 - main - INFO - Timestamp: 20260428_231411
2026-04-28 23:14:12,232 - main - INFO - Included router: routers.aihub.router
2026-04-28 23:14:12,248 - main - INFO - Included router: routers.auth.router
2026-04-28 23:14:12,251 - main - INFO - Included router: routers.health.router
2026-04-28 23:14:12,270 - main - INFO - Included router: routers.settings.router
2026-04-28 23:14:12,304 - main - INFO - Included router: routers.storage.router
2026-04-28 23:14:12,316 - main - INFO - Included router: routers.user.router
2026-04-28 23:14:12,359 - main - INFO - Included router: routers.user_profiles.router
2026-04-28 23:14:12,425 - main - INFO - Included router: routers.whmcs.router
2026-04-28 23:14:12,426 - main - INFO - === Application startup initiated ===
2026-04-28 23:14:12,426 - services.database - INFO - Ignore creating tables
2026-04-28 23:14:12,427 - services.mock_data - INFO - Ignore initialize data
2026-04-28 23:14:12,427 - services.auth - INFO - Ignore initialize admin
2026-04-28 23:14:12,427 - main - INFO - === Application startup completed successfully ===
2026-04-28 23:14:23,339 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-04-28 23:14:48,056 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-04-28 23:15:01,719 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-04-28 23:15:26,248 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-04-28 23:15:26,248 - core.database - WARNING - Database session maker not available, attempting lazy initialization...
2026-04-28 23:15:26,248 - core.database - WARNING - Database not initialized, attempting lazy initialization...
2026-04-28 23:15:26,248 - core.database - INFO - Starting database initialization...
2026-04-28 23:15:26,248 - core.config - DEBUG - Read dynamic attribute database_url from environment variable DATABASE_URL
2026-04-28 23:15:26,248 - core.database - INFO - Normalizing database URL for async compatibility...
2026-04-28 23:15:26,249 - core.database - INFO - Creating async database engine...
2026-04-28 23:15:26,250 - core.database - INFO - Using QueuePool with connection pooling for non-Lambda environment
2026-04-28 23:15:26,312 - core.database - INFO - Database engine created successfully
2026-04-28 23:15:26,312 - core.database - INFO - Creating async session maker...
2026-04-28 23:15:26,312 - core.database - INFO - Async session maker created successfully
2026-04-28 23:15:26,312 - core.database - INFO - Database connection initialized successfully
2026-04-28 23:15:26,312 - core.database - DEBUG - [DB_OP] Starting create_tables
2026-04-28 23:15:26,312 - core.database - INFO - 🔧 Starting table creation...
2026-04-28 23:15:27,697 - core.database - INFO - Tables initialized successfully
2026-04-28 23:15:27,697 - core.database - DEBUG - [DB_OP] Create tables completed in 1.3848s
2026-04-28 23:15:27,760 - core.database - INFO - Lazy database initialization completed successfully
2026-04-28 23:15:27,760 - core.database - DEBUG - [DB_OP] Database session created successfully in 1.5124s
2026-04-28 23:15:28,399 - routers.auth - DEBUG - [get_dynamic_backend_url] mgx-external-domain=None, x-forwarded-host=99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev, host=127.0.0.1:8000, scheme=https, dynamic_url=https://99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev
2026-04-28 23:15:28,399 - routers.auth - INFO - [login] Starting OIDC flow with redirect_uri=https://99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev/api/v1/auth/callback
2026-04-28 23:15:28,399 - core.config - DEBUG - Read dynamic attribute oidc_client_id from environment variable OIDC_CLIENT_ID
2026-04-28 23:15:28,399 - core.config - DEBUG - Read dynamic attribute oidc_scope from environment variable OIDC_SCOPE
2026-04-28 23:15:28,399 - core.config - DEBUG - Read dynamic attribute oidc_issuer_url from environment variable OIDC_ISSUER_URL
2026-04-28 23:15:28,400 - core.database - DEBUG - [DB_OP] Database session cleanup after 2.1520s
2026-04-28 23:15:34,177 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-04-28 23:15:34,177 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0004s
2026-04-28 23:15:34,177 - routers.auth - DEBUG - [get_dynamic_backend_url] mgx-external-domain=None, x-forwarded-host=99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev, host=127.0.0.1:8000, scheme=https, dynamic_url=https://99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev
2026-04-28 23:15:34,816 - routers.auth - INFO - [callback] Exchanging code for tokens with redirect_uri=https://99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev/api/v1/auth/callback
2026-04-28 23:15:34,816 - core.config - DEBUG - Read dynamic attribute oidc_client_secret from environment variable OIDC_CLIENT_SECRET
2026-04-28 23:15:35,991 - httpcore.connection - DEBUG - connect_tcp.started host='auth.atoms.dev' port=443 local_address=None timeout=5.0 socket_options=None
2026-04-28 23:15:36,010 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46f0192bc0>
2026-04-28 23:15:36,010 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46f22338c0> server_hostname='auth.atoms.dev' timeout=5.0
2026-04-28 23:15:36,020 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46f0191a80>
2026-04-28 23:15:36,021 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-04-28 23:15:36,022 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:36,022 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-04-28 23:15:36,023 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:36,023 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-04-28 23:15:36,118 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 29 Apr 2026 06:15:36 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'x-response-time', b'0.061s'), (b'x-request-id', b'dmBUhqZ-rMYxKDsrRpd1bVAAvJApqSZ0tNkgs-yNc4w'), (b'cf-cache-status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9f3c2c522f5c3511-LAX')])
2026-04-28 23:15:36,119 - httpx - INFO - HTTP Request: POST https://auth.atoms.dev/api/v1/oidc/token "HTTP/1.1 200 OK"
2026-04-28 23:15:36,120 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-04-28 23:15:36,120 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:36,121 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:36,121 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:36,121 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:36,122 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:36,152 - core.auth - INFO - Fetching JWKS from: https://auth.atoms.dev/api/v1/oidc/.well-known/jwks.json
2026-04-28 23:15:36,153 - httpcore.connection - DEBUG - connect_tcp.started host='auth.atoms.dev' port=443 local_address=None timeout=60.0 socket_options=None
2026-04-28 23:15:36,186 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf2b760>
2026-04-28 23:15:36,186 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46f2232740> server_hostname='auth.atoms.dev' timeout=60.0
2026-04-28 23:15:36,197 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf2b4f0>
2026-04-28 23:15:36,198 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-04-28 23:15:36,199 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:36,199 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-04-28 23:15:36,199 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:36,199 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-04-28 23:15:36,245 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 29 Apr 2026 06:15:36 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'cache-control', b'public, max-age=3600'), (b'x-response-time', b'0.001s'), (b'x-request-id', b'e0c98df729ff5358c667278e7471353f'), (b'cf-cache-status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9f3c2c533d6b2ad9-LAX')])
2026-04-28 23:15:36,246 - httpx - INFO - HTTP Request: GET https://auth.atoms.dev/api/v1/oidc/.well-known/jwks.json "HTTP/1.1 200 OK"
2026-04-28 23:15:36,246 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-04-28 23:15:36,248 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:36,248 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:36,249 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:36,250 - core.auth - INFO - Successfully fetched JWKS with 1 keys
2026-04-28 23:15:36,250 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:36,250 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:36,444 - core.auth - INFO - ID token successfully validated for user hash: 4f820a44
2026-04-28 23:15:36,445 - services.auth - DEBUG - [DB_OP] Starting get_or_create_user - platform_sub: 1085530
2026-04-28 23:15:36,825 - services.auth - DEBUG - [DB_OP] User lookup completed in 0.3795s - found: True
2026-04-28 23:15:36,825 - services.auth - DEBUG - [DB_OP] Starting user commit/refresh
2026-04-28 23:15:37,334 - services.auth - DEBUG - [DB_OP] User commit/refresh completed in 0.5089s
2026-04-28 23:15:37,335 - core.config - DEBUG - Read dynamic attribute jwt_expire_minutes from environment variable JWT_EXPIRE_MINUTES
2026-04-28 23:15:37,335 - core.config - DEBUG - Read dynamic attribute jwt_secret_key from environment variable JWT_SECRET_KEY
2026-04-28 23:15:37,335 - core.config - DEBUG - Read dynamic attribute jwt_algorithm from environment variable JWT_ALGORITHM
2026-04-28 23:15:37,335 - core.auth - DEBUG - Authentication token created for user hash: 4f820a44
2026-04-28 23:15:37,335 - routers.auth - INFO - [callback] OIDC callback successful, redirecting to https://99v30-99daa102ba1446f6aa2f99771f457055-preview.app.atoms.dev/auth/callback?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMDg1NTMwIiwiZW1haWwiOiJ0b29tMzAwM0BnbWFpbC5jb20iLCJyb2xlIjoiYWRtaW4iLCJuYW1lIjoidG9vbTMwMDMiLCJsYXN0X2xvZ2luIjoiMjAyNi0wNC0yOVQwNjoxNTozNi44MjU2ODYrMDA6MDAiLCJleHAiOjE3ODAwMzUzMzcsImlhdCI6MTc3NzQ0MzMzNywibmJmIjoxNzc3NDQzMzM3fQ.rMh9BdE2vx_n3a7sdUyOqGkdSbDokF4AI8WWHthe3Sc&expires_at=1780035337&token_type=Bearer
2026-04-28 23:15:37,336 - core.database - DEBUG - [DB_OP] Database session cleanup after 3.1591s
2026-04-28 23:15:41,203 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:41,460 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:41,460 - core.config - DEBUG - Read dynamic attribute oss_service_url from environment variable OSS_SERVICE_URL
2026-04-28 23:15:41,460 - core.config - DEBUG - Read dynamic attribute oss_api_key from environment variable OSS_API_KEY
2026-04-28 23:15:41,484 - httpcore.connection - DEBUG - connect_tcp.started host='atoms.dev' port=443 local_address=None timeout=120.0 socket_options=None
2026-04-28 23:15:41,498 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf73e20>
2026-04-28 23:15:41,499 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebf9e740> server_hostname='atoms.dev' timeout=120.0
2026-04-28 23:15:41,507 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf739a0>
2026-04-28 23:15:41,508 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-04-28 23:15:41,508 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:41,508 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-04-28 23:15:41,508 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:41,509 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-04-28 23:15:41,769 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 29 Apr 2026 06:15:41 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Access-Control-Allow-Headers', b'Origin, Content-Type, Accept, Authorization'), (b'Access-Control-Allow-Methods', b'GET, POST, PUT, DELETE, OPTIONS'), (b'Access-Control-Allow-Origin', b'*'), (b'Access-Control-Max-Age', b'86400'), (b'X-Request-Id', b'6a8644f60c05b124a5ee76247534ece7'), (b'X-Trace-Id', b'b4991a365f6a41f29558e47da354402d'), (b'Content-Security-Policy', b"frame-ancestors 'self' https://atoms.dev"), (b'Strict-Transport-Security', b'max-age=63072000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'X-XSS-Protection', b'1; mode=block'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'cf-cache-status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9f3c2c746d452aef-LAX')])
2026-04-28 23:15:41,770 - httpx - INFO - HTTP Request: GET https://atoms.dev/api/v1/infra/client/oss/buckets/user-avatars/objects "HTTP/1.1 200 OK"
2026-04-28 23:15:41,770 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-04-28 23:15:41,771 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:41,771 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:41,771 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:41,772 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:41,772 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:47,196 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:47,200 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:47,228 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=25.0 socket_options=None
2026-04-28 23:15:47,445 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:47,475 - httpcore.connection - DEBUG - connect_tcp.started host='atoms.dev' port=443 local_address=None timeout=120.0 socket_options=None
2026-04-28 23:15:47,486 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf73490>
2026-04-28 23:15:47,487 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebf9e740> server_hostname='atoms.dev' timeout=120.0
2026-04-28 23:15:47,494 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf73a30>
2026-04-28 23:15:47,495 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-04-28 23:15:47,496 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:47,496 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-04-28 23:15:47,496 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:47,496 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-04-28 23:15:47,572 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf2b4f0>
2026-04-28 23:15:47,573 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebf9e8c0> server_hostname='client.doiteasy.net' timeout=25.0
2026-04-28 23:15:47,667 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 29 Apr 2026 06:15:47 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Access-Control-Allow-Headers', b'Origin, Content-Type, Accept, Authorization'), (b'Access-Control-Allow-Methods', b'GET, POST, PUT, DELETE, OPTIONS'), (b'Access-Control-Allow-Origin', b'*'), (b'Access-Control-Max-Age', b'86400'), (b'X-Request-Id', b'eaa9082c4babf68fde1dbdc6cb6f88df'), (b'X-Trace-Id', b'7c0eba2f791d436283dac34ddb014260'), (b'Content-Security-Policy', b"frame-ancestors 'self' https://atoms.dev"), (b'Strict-Transport-Security', b'max-age=63072000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'X-XSS-Protection', b'1; mode=block'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'cf-cache-status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9f3c2c99d95a8ea3-LAX')])
2026-04-28 23:15:47,667 - httpx - INFO - HTTP Request: GET https://atoms.dev/api/v1/infra/client/oss/buckets/user-avatars/objects "HTTP/1.1 200 OK"
2026-04-28 23:15:47,668 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-04-28 23:15:47,668 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:47,668 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:47,668 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:47,669 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:47,669 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:47,751 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46f231ed70>
2026-04-28 23:15:47,752 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-04-28 23:15:47,752 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:47,752 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-04-28 23:15:47,753 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:47,753 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-04-28 23:15:48,083 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Wed, 29 Apr 2026 06:15:47 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Expires', b'Thu, 19 Nov 1981 08:52:00 GMT'), (b'Cache-Control', b'no-store, no-cache, must-revalidate'), (b'Pragma', b'no-cache'), (b'Set-Cookie', b'WHMCShaXcqDDHD9SP=5cd27d6e3d686c89b645d4d6fced373f; path=/; secure; HttpOnly'), (b'X-Content-Type-Options', b'nosniff'), (b'X-Frame-Options', b'SAMEORIGIN'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'X-XSS-Protection', b'1; mode=block')])
2026-04-28 23:15:48,084 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-04-28 23:15:48,084 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-04-28 23:15:48,085 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:48,085 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:48,085 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:48,085 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:48,086 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:49,838 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:49,862 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=25.0 socket_options=None
2026-04-28 23:15:50,209 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebfcd480>
2026-04-28 23:15:50,210 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebf9eac0> server_hostname='client.doiteasy.net' timeout=25.0
2026-04-28 23:15:50,392 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf73820>
2026-04-28 23:15:50,392 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-04-28 23:15:50,393 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:50,393 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-04-28 23:15:50,393 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:50,393 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-04-28 23:15:50,708 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Wed, 29 Apr 2026 06:15:50 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Expires', b'Thu, 19 Nov 1981 08:52:00 GMT'), (b'Cache-Control', b'no-store, no-cache, must-revalidate'), (b'Pragma', b'no-cache'), (b'Set-Cookie', b'WHMCShaXcqDDHD9SP=e9285668458fa2ef40a6ac2e4c825109; path=/; secure; HttpOnly'), (b'X-Content-Type-Options', b'nosniff'), (b'X-Frame-Options', b'SAMEORIGIN'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'X-XSS-Protection', b'1; mode=block')])
2026-04-28 23:15:50,708 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-04-28 23:15:50,709 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-04-28 23:15:50,709 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:50,709 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:50,709 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:50,710 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:50,710 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:53,486 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:53,510 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=25.0 socket_options=None
2026-04-28 23:15:53,852 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebfcf3d0>
2026-04-28 23:15:53,853 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebf9e940> server_hostname='client.doiteasy.net' timeout=25.0
2026-04-28 23:15:54,027 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf73700>
2026-04-28 23:15:54,028 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-04-28 23:15:54,029 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:54,029 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-04-28 23:15:54,029 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:54,029 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-04-28 23:15:54,354 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Wed, 29 Apr 2026 06:15:54 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Expires', b'Thu, 19 Nov 1981 08:52:00 GMT'), (b'Cache-Control', b'no-store, no-cache, must-revalidate'), (b'Pragma', b'no-cache'), (b'Set-Cookie', b'WHMCShaXcqDDHD9SP=7b26458e726a2943465177f386c03246; path=/; secure; HttpOnly'), (b'X-Content-Type-Options', b'nosniff'), (b'X-Frame-Options', b'SAMEORIGIN'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'X-XSS-Protection', b'1; mode=block')])
2026-04-28 23:15:54,355 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-04-28 23:15:54,356 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-04-28 23:15:54,356 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:54,356 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:54,357 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:54,357 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:54,358 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:15:58,657 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:15:58,681 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=25.0 socket_options=None
2026-04-28 23:15:58,860 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebffca00>
2026-04-28 23:15:58,861 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebfd48c0> server_hostname='client.doiteasy.net' timeout=25.0
2026-04-28 23:15:59,041 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf737c0>
2026-04-28 23:15:59,041 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-04-28 23:15:59,042 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:15:59,042 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-04-28 23:15:59,042 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:15:59,042 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-04-28 23:15:59,339 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Wed, 29 Apr 2026 06:15:59 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Expires', b'Thu, 19 Nov 1981 08:52:00 GMT'), (b'Cache-Control', b'no-store, no-cache, must-revalidate'), (b'Pragma', b'no-cache'), (b'Set-Cookie', b'WHMCShaXcqDDHD9SP=4a559d4765eea8c46473a4fd4c9ece3a; path=/; secure; HttpOnly'), (b'X-Content-Type-Options', b'nosniff'), (b'X-Frame-Options', b'SAMEORIGIN'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'X-XSS-Protection', b'1; mode=block')])
2026-04-28 23:15:59,339 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-04-28 23:15:59,340 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-04-28 23:15:59,340 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:15:59,340 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:15:59,341 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:15:59,341 - httpcore.connection - DEBUG - close.started
2026-04-28 23:15:59,341 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:16:02,530 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-04-28 23:16:04,750 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:16:05,004 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:16:05,054 - httpcore.connection - DEBUG - connect_tcp.started host='atoms.dev' port=443 local_address=None timeout=120.0 socket_options=None
2026-04-28 23:16:05,067 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebffe050>
2026-04-28 23:16:05,068 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebfd4e40> server_hostname='atoms.dev' timeout=120.0
2026-04-28 23:16:05,081 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebffddb0>
2026-04-28 23:16:05,081 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-04-28 23:16:05,082 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:16:05,082 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-04-28 23:16:05,082 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:16:05,082 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-04-28 23:16:05,283 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 29 Apr 2026 06:16:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Access-Control-Allow-Headers', b'Origin, Content-Type, Accept, Authorization'), (b'Access-Control-Allow-Methods', b'GET, POST, PUT, DELETE, OPTIONS'), (b'Access-Control-Allow-Origin', b'*'), (b'Access-Control-Max-Age', b'86400'), (b'X-Request-Id', b'f85b9cbb83d4291d11b51bf700cff0d9'), (b'X-Trace-Id', b'ce88b89a9f764b00b69ab7fb62ce739b'), (b'Content-Security-Policy', b"frame-ancestors 'self' https://atoms.dev"), (b'Strict-Transport-Security', b'max-age=63072000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'X-XSS-Protection', b'1; mode=block'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'cf-cache-status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9f3c2d07cc5c1e1d-LAX')])
2026-04-28 23:16:05,284 - httpx - INFO - HTTP Request: GET https://atoms.dev/api/v1/infra/client/oss/buckets/user-avatars/objects "HTTP/1.1 200 OK"
2026-04-28 23:16:05,284 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-04-28 23:16:05,284 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:16:05,285 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:16:05,285 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:16:05,286 - httpcore.connection - DEBUG - close.started
2026-04-28 23:16:05,287 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:16:06,788 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:16:07,046 - core.auth - DEBUG - Authentication token validated for user hash: 4f820a44
2026-04-28 23:16:07,077 - httpcore.connection - DEBUG - connect_tcp.started host='atoms.dev' port=443 local_address=None timeout=120.0 socket_options=None
2026-04-28 23:16:07,101 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46f0191450>
2026-04-28 23:16:07,106 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46ebfd4940> server_hostname='atoms.dev' timeout=120.0
2026-04-28 23:16:07,116 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46f22eab90>
2026-04-28 23:16:07,117 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-04-28 23:16:07,117 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:16:07,118 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-04-28 23:16:07,118 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:16:07,118 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-04-28 23:16:07,387 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 29 Apr 2026 06:16:07 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Access-Control-Allow-Headers', b'Origin, Content-Type, Accept, Authorization'), (b'Access-Control-Allow-Methods', b'GET, POST, PUT, DELETE, OPTIONS'), (b'Access-Control-Allow-Origin', b'*'), (b'Access-Control-Max-Age', b'86400'), (b'X-Request-Id', b'cc2dfd6d15fea5b69d12961a19ac9947'), (b'X-Trace-Id', b'6ca80c717250485bb3abc74378ec830d'), (b'Content-Security-Policy', b"frame-ancestors 'self' https://atoms.dev"), (b'Strict-Transport-Security', b'max-age=63072000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'X-XSS-Protection', b'1; mode=block'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'cf-cache-status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9f3c2d147c462163-LAX')])
2026-04-28 23:16:07,388 - httpx - INFO - HTTP Request: GET https://atoms.dev/api/v1/infra/client/oss/buckets/user-avatars/objects "HTTP/1.1 200 OK"
2026-04-28 23:16:07,388 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-04-28 23:16:07,388 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:16:07,389 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:16:07,389 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:16:07,389 - httpcore.connection - DEBUG - close.started
2026-04-28 23:16:07,389 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:16:08,517 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-04-28 23:16:32,144 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=25.0 socket_options=None
2026-04-28 23:16:32,482 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf2abc0>
2026-04-28 23:16:32,483 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f46f22338c0> server_hostname='client.doiteasy.net' timeout=25.0
2026-04-28 23:16:32,658 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7f46ebf296c0>
2026-04-28 23:16:32,658 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-04-28 23:16:32,659 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-04-28 23:16:32,659 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-04-28 23:16:32,659 - httpcore.http11 - DEBUG - send_request_body.complete
2026-04-28 23:16:32,659 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-04-28 23:16:32,982 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Wed, 29 Apr 2026 06:16:32 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Expires', b'Thu, 19 Nov 1981 08:52:00 GMT'), (b'Cache-Control', b'no-store, no-cache, must-revalidate'), (b'Pragma', b'no-cache'), (b'Set-Cookie', b'WHMCShaXcqDDHD9SP=5de05b5b07e980aa8270d341e4dda7fd; path=/; secure; HttpOnly'), (b'X-Content-Type-Options', b'nosniff'), (b'X-Frame-Options', b'SAMEORIGIN'), (b'Referrer-Policy', b'strict-origin-when-cross-origin'), (b'X-XSS-Protection', b'1; mode=block')])
2026-04-28 23:16:32,982 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-04-28 23:16:32,983 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-04-28 23:16:32,983 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-04-28 23:16:32,983 - httpcore.http11 - DEBUG - response_closed.started
2026-04-28 23:16:32,983 - httpcore.http11 - DEBUG - response_closed.complete
2026-04-28 23:16:32,984 - httpcore.connection - DEBUG - close.started
2026-04-28 23:16:32,984 - httpcore.connection - DEBUG - close.complete
2026-04-28 23:16:32,984 - services.whmcs - ERROR - WHMCS API returned HTTP 403 for action ValidateLogin: {"result":"error","message":"Invalid IP 103.234.62.173"}
2026-04-28 23:17:29,912 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-04-28 23:18:16,742 - services.database - DEBUG - [DB_OP] Starting database close
2026-04-28 23:18:16,810 - core.database - INFO - Database connection closed and engine disposed
2026-04-28 23:18:16,811 - services.database - INFO - Database connections closed
2026-04-28 23:18:16,811 - services.database - DEBUG - [DB_OP] Database close completed in 0.0690s
