2026-05-01 06:50:11,789 - main - INFO - === Logging system initialized ===
2026-05-01 06:50:11,790 - main - INFO - Log file: logs/app_20260501_065011.log
2026-05-01 06:50:11,790 - main - INFO - Log level: INFO
2026-05-01 06:50:11,790 - main - INFO - Timestamp: 20260501_065011
2026-05-01 06:50:11,867 - main - INFO - Included router: routers.admin_dashboard.router
2026-05-01 06:50:11,910 - main - INFO - Included router: routers.agent_availability.router
2026-05-01 06:50:12,844 - main - INFO - Included router: routers.ai_ticket_summary.router
2026-05-01 06:50:12,866 - main - INFO - Included router: routers.aihub.router
2026-05-01 06:50:12,879 - main - INFO - Included router: routers.auth.router
2026-05-01 06:50:12,942 - main - INFO - Included router: routers.chat_analytics_daily.router
2026-05-01 06:50:12,990 - main - INFO - Included router: routers.chat_attachments.router
2026-05-01 06:50:13,055 - main - INFO - Included router: routers.chat_branding.router
2026-05-01 06:50:13,077 - main - INFO - Included router: routers.chat_branding_api.router
2026-05-01 06:50:13,138 - main - INFO - Included router: routers.chat_conversations.router
2026-05-01 06:50:13,334 - main - INFO - Included router: routers.chat_messages.router
2026-05-01 06:50:13,401 - main - INFO - Included router: routers.chat_routing_rules.router
2026-05-01 06:50:13,435 - main - INFO - Included router: routers.contact.router
2026-05-01 06:50:13,482 - main - INFO - Included router: routers.contact_inquiries.router
2026-05-01 06:50:13,486 - main - INFO - Included router: routers.health.router
2026-05-01 06:50:13,533 - main - INFO - Included router: routers.kb_articles.router
2026-05-01 06:50:13,596 - main - INFO - Included router: routers.notification_preferences.router
2026-05-01 06:50:13,653 - main - INFO - Included router: routers.notifications.router
2026-05-01 06:50:13,713 - main - INFO - Included router: routers.plans.router
2026-05-01 06:50:13,737 - main - INFO - Included router: routers.settings.router
2026-05-01 06:50:13,785 - main - INFO - Included router: routers.site_settings.router
2026-05-01 06:50:13,831 - main - INFO - Included router: routers.smtp_settings.router
2026-05-01 06:50:13,870 - main - INFO - Included router: routers.storage.router
2026-05-01 06:50:13,991 - main - INFO - Included router: routers.support_chat.router
2026-05-01 06:50:14,179 - main - INFO - Included router: routers.support_departments.router
2026-05-01 06:50:14,249 - main - INFO - Included router: routers.support_seats.router
2026-05-01 06:50:14,260 - main - INFO - Included router: routers.ticket_notifications_sync.router
2026-05-01 06:50:14,305 - main - INFO - Included router: routers.ticket_summaries.router
2026-05-01 06:50:14,350 - main - INFO - Included router: routers.ticket_sync_states.router
2026-05-01 06:50:14,361 - main - INFO - Included router: routers.user.router
2026-05-01 06:50:14,406 - main - INFO - Included router: routers.user_profiles.router
2026-05-01 06:50:14,453 - main - INFO - Included router: routers.user_roles.router
2026-05-01 06:50:14,554 - main - INFO - Included router: routers.whmcs.router
2026-05-01 06:50:14,627 - main - INFO - Included router: routers.whmcs_admin.router
2026-05-01 06:50:14,674 - main - INFO - Included router: routers.whmcs_extra.router
2026-05-01 06:50:14,675 - main - INFO - === Application startup initiated ===
2026-05-01 06:50:14,676 - services.database - INFO - Ignore creating tables
2026-05-01 06:50:14,676 - services.mock_data - INFO - Ignore initialize data
2026-05-01 06:50:14,676 - services.auth - INFO - Ignore initialize admin
2026-05-01 06:50:14,676 - main - INFO - === Application startup completed successfully ===
2026-05-01 06:50:22,322 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-05-01 06:50:22,325 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:50:22,326 - core.database - WARNING - Database session maker not available, attempting lazy initialization...
2026-05-01 06:50:22,326 - core.database - WARNING - Database not initialized, attempting lazy initialization...
2026-05-01 06:50:22,326 - core.database - INFO - Starting database initialization...
2026-05-01 06:50:22,326 - core.config - DEBUG - Read dynamic attribute database_url from environment variable DATABASE_URL
2026-05-01 06:50:22,326 - core.database - INFO - Normalizing database URL for async compatibility...
2026-05-01 06:50:22,328 - core.database - INFO - Creating async database engine...
2026-05-01 06:50:22,328 - core.database - INFO - Using QueuePool with connection pooling for non-Lambda environment
2026-05-01 06:50:22,375 - core.database - INFO - Database engine created successfully
2026-05-01 06:50:22,375 - core.database - INFO - Creating async session maker...
2026-05-01 06:50:22,376 - core.database - INFO - Async session maker created successfully
2026-05-01 06:50:22,376 - core.database - INFO - Database connection initialized successfully
2026-05-01 06:50:22,376 - core.database - DEBUG - [DB_OP] Starting create_tables
2026-05-01 06:50:22,377 - core.database - INFO - 🔧 Starting table creation...
2026-05-01 06:50:22,404 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:50:22,405 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0005s
2026-05-01 06:50:22,411 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:50:22,411 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0004s
2026-05-01 06:50:22,412 - routers.site_settings - DEBUG - Querying site_settingss: query={"key":"general"}, sort=None, skip=0, limit=1, fields=None
2026-05-01 06:50:23,667 - core.database - DEBUG - [DB_OP] Database session cleanup after 1.2624s
2026-05-01 06:50:23,799 - routers.site_settings - DEBUG - Found 0 site_settingss
2026-05-01 06:50:23,800 - core.database - DEBUG - [DB_OP] Database session cleanup after 1.3886s
2026-05-01 06:50:25,096 - core.database - INFO - Tables initialized successfully
2026-05-01 06:50:25,096 - core.database - DEBUG - [DB_OP] Create tables completed in 2.7201s
2026-05-01 06:50:25,159 - core.database - INFO - Lazy database initialization completed successfully
2026-05-01 06:50:25,160 - core.database - DEBUG - [DB_OP] Database session created successfully in 2.8346s
2026-05-01 06:50:25,161 - routers.site_settings - DEBUG - Querying site_settingss: query={"key":"branding"}, sort=None, skip=0, limit=1, fields=None
2026-05-01 06:50:25,730 - routers.site_settings - DEBUG - Found 0 site_settingss
2026-05-01 06:50:25,730 - core.database - DEBUG - [DB_OP] Database session cleanup after 3.4049s
2026-05-01 06:50:46,943 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=10.0 socket_options=None
2026-05-01 06:50:47,287 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93dc4b070>
2026-05-01 06:50:47,287 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe93dbee940> server_hostname='client.doiteasy.net' timeout=10.0
2026-05-01 06:50:47,466 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe94077e3b0>
2026-05-01 06:50:47,467 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-05-01 06:50:47,467 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-05-01 06:50:47,467 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-05-01 06:50:47,468 - httpcore.http11 - DEBUG - send_request_body.complete
2026-05-01 06:50:47,468 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-05-01 06:50:47,792 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Fri, 01 May 2026 13:50: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=4960c2b412c9fe012fdcdb3a9cac9b2e; 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-05-01 06:50:47,793 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-05-01 06:50:47,793 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-05-01 06:50:47,794 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-05-01 06:50:47,794 - httpcore.http11 - DEBUG - response_closed.started
2026-05-01 06:50:47,794 - httpcore.http11 - DEBUG - response_closed.complete
2026-05-01 06:50:47,795 - httpcore.connection - DEBUG - close.started
2026-05-01 06:50:47,795 - httpcore.connection - DEBUG - close.complete
2026-05-01 06:50:47,795 - services.whmcs - ERROR - WHMCS API returned HTTP 403 for action ValidateLogin (cf-ray=None server=nginx): {"result":"error","message":"Invalid IP 103.234.62.173"}
2026-05-01 06:50:48,866 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=10.0 socket_options=None
2026-05-01 06:50:49,048 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93da98130>
2026-05-01 06:50:49,049 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe93dbeec40> server_hostname='client.doiteasy.net' timeout=10.0
2026-05-01 06:50:49,228 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe9407ca050>
2026-05-01 06:50:49,228 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-05-01 06:50:49,229 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-05-01 06:50:49,229 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-05-01 06:50:49,229 - httpcore.http11 - DEBUG - send_request_body.complete
2026-05-01 06:50:49,230 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-05-01 06:50:49,555 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Fri, 01 May 2026 13:50:49 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=f20d183d19b5dd461b8b7ffbda881d81; 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-05-01 06:50:49,556 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-05-01 06:50:49,556 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-05-01 06:50:49,556 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-05-01 06:50:49,556 - httpcore.http11 - DEBUG - response_closed.started
2026-05-01 06:50:49,557 - httpcore.http11 - DEBUG - response_closed.complete
2026-05-01 06:50:49,557 - httpcore.connection - DEBUG - close.started
2026-05-01 06:50:49,557 - httpcore.connection - DEBUG - close.complete
2026-05-01 06:50:49,557 - services.whmcs - ERROR - WHMCS API returned HTTP 403 for action ValidateLogin (cf-ray=None server=nginx): {"result":"error","message":"Invalid IP 103.234.62.173"}
2026-05-01 06:50:51,651 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=10.0 socket_options=None
2026-05-01 06:50:52,003 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93da99c60>
2026-05-01 06:50:52,003 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe93dbeee40> server_hostname='client.doiteasy.net' timeout=10.0
2026-05-01 06:50:52,188 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93dc4a500>
2026-05-01 06:50:52,189 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-05-01 06:50:52,190 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-05-01 06:50:52,190 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-05-01 06:50:52,190 - httpcore.http11 - DEBUG - send_request_body.complete
2026-05-01 06:50:52,190 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-05-01 06:50:52,522 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Fri, 01 May 2026 13:50:52 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=31b680126aee5e2e5548c7f84e8f9883; 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-05-01 06:50:52,523 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-05-01 06:50:52,524 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-05-01 06:50:52,524 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-05-01 06:50:52,525 - httpcore.http11 - DEBUG - response_closed.started
2026-05-01 06:50:52,525 - httpcore.http11 - DEBUG - response_closed.complete
2026-05-01 06:50:52,526 - httpcore.connection - DEBUG - close.started
2026-05-01 06:50:52,526 - httpcore.connection - DEBUG - close.complete
2026-05-01 06:50:52,527 - services.whmcs - ERROR - WHMCS API returned HTTP 403 for action ValidateLogin (cf-ray=None server=nginx): {"result":"error","message":"Invalid IP 103.234.62.173"}
2026-05-01 06:50:55,819 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=10.0 socket_options=None
2026-05-01 06:50:55,995 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93da9b010>
2026-05-01 06:50:55,995 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe93dbef040> server_hostname='client.doiteasy.net' timeout=10.0
2026-05-01 06:50:56,172 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93dc4bc10>
2026-05-01 06:50:56,173 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-05-01 06:50:56,173 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-05-01 06:50:56,174 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-05-01 06:50:56,174 - httpcore.http11 - DEBUG - send_request_body.complete
2026-05-01 06:50:56,174 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-05-01 06:50:56,484 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Fri, 01 May 2026 13:50:56 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=3e5ea85ca9b72c45f5c3e662f61728fc; 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-05-01 06:50:56,485 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-05-01 06:50:56,485 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-05-01 06:50:56,486 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-05-01 06:50:56,486 - httpcore.http11 - DEBUG - response_closed.started
2026-05-01 06:50:56,486 - httpcore.http11 - DEBUG - response_closed.complete
2026-05-01 06:50:56,486 - httpcore.connection - DEBUG - close.started
2026-05-01 06:50:56,487 - httpcore.connection - DEBUG - close.complete
2026-05-01 06:50:56,487 - services.whmcs - ERROR - WHMCS API returned HTTP 403 for action ValidateLogin (cf-ray=None server=nginx): {"result":"error","message":"Invalid IP 103.234.62.173"}
2026-05-01 06:51:21,770 - dependencies.auth - DEBUG - Authentication required for request GET /api/v1/auth/me
2026-05-01 06:51:21,771 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:51:21,772 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0002s
2026-05-01 06:51:21,772 - routers.site_settings - DEBUG - Querying site_settingss: query={"key":"general"}, sort=None, skip=0, limit=1, fields=None
2026-05-01 06:51:21,776 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:51:21,777 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0010s
2026-05-01 06:51:21,780 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:51:21,780 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0003s
2026-05-01 06:51:21,781 - routers.site_settings - DEBUG - Querying site_settingss: query={"key":"branding"}, sort=None, skip=0, limit=1, fields=None
2026-05-01 06:51:22,093 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3170s
2026-05-01 06:51:22,160 - routers.site_settings - DEBUG - Found 0 site_settingss
2026-05-01 06:51:22,161 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3811s
2026-05-01 06:51:22,280 - routers.site_settings - DEBUG - Found 0 site_settingss
2026-05-01 06:51:22,281 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.5094s
2026-05-01 06:52:21,788 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:52:21,789 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0007s
2026-05-01 06:52:22,124 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3360s
2026-05-01 06:52:40,051 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:52:40,051 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0004s
2026-05-01 06:52:40,052 - routers.site_settings - DEBUG - Querying site_settingss: query={"key":"branding"}, sort=None, skip=0, limit=1, fields=None
2026-05-01 06:52:40,433 - routers.site_settings - DEBUG - Found 0 site_settingss
2026-05-01 06:52:40,434 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3830s
2026-05-01 06:52:59,251 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=10.0 socket_options=None
2026-05-01 06:52:59,589 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93da9bf10>
2026-05-01 06:52:59,589 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe93dbef5c0> server_hostname='client.doiteasy.net' timeout=10.0
2026-05-01 06:52:59,764 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93dc4afe0>
2026-05-01 06:52:59,765 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-05-01 06:52:59,765 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-05-01 06:52:59,766 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-05-01 06:52:59,766 - httpcore.http11 - DEBUG - send_request_body.complete
2026-05-01 06:52:59,767 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-05-01 06:53:00,063 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Fri, 01 May 2026 13:52: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=d7570bf4a52cf0c25df50118241962c6; 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-05-01 06:53:00,064 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-05-01 06:53:00,064 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-05-01 06:53:00,065 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-05-01 06:53:00,065 - httpcore.http11 - DEBUG - response_closed.started
2026-05-01 06:53:00,065 - httpcore.http11 - DEBUG - response_closed.complete
2026-05-01 06:53:00,065 - httpcore.connection - DEBUG - close.started
2026-05-01 06:53:00,066 - httpcore.connection - DEBUG - close.complete
2026-05-01 06:53:00,066 - routers.whmcs - ERROR - WHMCS lookup failed during forgot-password for email_hash
Traceback (most recent call last):
  File "/workspace/app/backend/routers/whmcs.py", line 886, in whmcs_forgot_password
    client = await get_client_by_email(email)
  File "/workspace/app/backend/services/whmcs.py", line 521, in get_client_by_email
    raise HTTPException(status_code=502, detail=f"WHMCS API returned status {response.status_code}.")
fastapi.exceptions.HTTPException: 502: WHMCS API returned status 403.
2026-05-01 06:53:00,081 - core.config - DEBUG - Read dynamic attribute jwt_secret_key from environment variable JWT_SECRET_KEY
2026-05-01 06:53:00,081 - core.config - DEBUG - Read dynamic attribute jwt_algorithm from environment variable JWT_ALGORITHM
2026-05-01 06:53:00,341 - core.auth - DEBUG - Authentication token created for user hash: d55b8309
2026-05-01 06:53:00,342 - routers.whmcs - INFO - Password reset requested for an email with no linked WHMCS client; responding generically.
2026-05-01 06:53:08,806 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:53:08,806 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0005s
2026-05-01 06:53:08,806 - routers.site_settings - DEBUG - Querying site_settingss: query={"key":"branding"}, sort=None, skip=0, limit=1, fields=None
2026-05-01 06:53:09,193 - routers.site_settings - DEBUG - Found 0 site_settingss
2026-05-01 06:53:09,194 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3886s
2026-05-01 06:53:18,382 - httpcore.connection - DEBUG - connect_tcp.started host='client.doiteasy.net' port=443 local_address=None timeout=10.0 socket_options=None
2026-05-01 06:53:18,723 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93dadd0c0>
2026-05-01 06:53:18,724 - httpcore.connection - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe93dbeef40> server_hostname='client.doiteasy.net' timeout=10.0
2026-05-01 06:53:18,900 - httpcore.connection - DEBUG - start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fe93dc4b0a0>
2026-05-01 06:53:18,901 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-05-01 06:53:18,902 - httpcore.http11 - DEBUG - send_request_headers.complete
2026-05-01 06:53:18,902 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-05-01 06:53:18,902 - httpcore.http11 - DEBUG - send_request_body.complete
2026-05-01 06:53:18,902 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-05-01 06:53:19,231 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 403, b'Forbidden', [(b'Server', b'nginx'), (b'Date', b'Fri, 01 May 2026 13:53:19 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=09997c06a335de9b8fdf32fb5ea89d96; 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-05-01 06:53:19,232 - httpx - INFO - HTTP Request: POST https://client.doiteasy.net/includes/api.php "HTTP/1.1 403 Forbidden"
2026-05-01 06:53:19,232 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-05-01 06:53:19,233 - httpcore.http11 - DEBUG - receive_response_body.complete
2026-05-01 06:53:19,233 - httpcore.http11 - DEBUG - response_closed.started
2026-05-01 06:53:19,233 - httpcore.http11 - DEBUG - response_closed.complete
2026-05-01 06:53:19,233 - httpcore.connection - DEBUG - close.started
2026-05-01 06:53:19,234 - httpcore.connection - DEBUG - close.complete
2026-05-01 06:53:19,234 - routers.whmcs - ERROR - WHMCS lookup failed during forgot-password for email_hash
Traceback (most recent call last):
  File "/workspace/app/backend/routers/whmcs.py", line 886, in whmcs_forgot_password
    client = await get_client_by_email(email)
  File "/workspace/app/backend/services/whmcs.py", line 521, in get_client_by_email
    raise HTTPException(status_code=502, detail=f"WHMCS API returned status {response.status_code}.")
fastapi.exceptions.HTTPException: 502: WHMCS API returned status 403.
2026-05-01 06:53:19,235 - core.auth - DEBUG - Authentication token created for user hash: 0eeb176d
2026-05-01 06:53:19,235 - routers.whmcs - INFO - Password reset requested for an email with no linked WHMCS client; responding generically.
2026-05-01 06:53:21,772 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:53:21,773 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0005s
2026-05-01 06:53:22,092 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3191s
2026-05-01 06:54:22,282 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:54:22,283 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0005s
2026-05-01 06:54:22,665 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3827s
2026-05-01 06:55:22,276 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:55:22,277 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0008s
2026-05-01 06:55:22,662 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.3865s
2026-05-01 06:56:21,775 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:56:21,776 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0004s
2026-05-01 06:56:22,221 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.4453s
2026-05-01 06:57:23,133 - core.database - DEBUG - [DB_OP] Starting get_db session creation
2026-05-01 06:57:23,134 - core.database - DEBUG - [DB_OP] Database session created successfully in 0.0005s
2026-05-01 06:57:23,586 - core.database - DEBUG - [DB_OP] Database session cleanup after 0.4531s
2026-05-01 06:57:54,685 - services.database - DEBUG - [DB_OP] Starting database close
2026-05-01 06:57:54,886 - core.database - INFO - Database connection closed and engine disposed
2026-05-01 06:57:54,886 - services.database - INFO - Database connections closed
2026-05-01 06:57:54,887 - services.database - DEBUG - [DB_OP] Database close completed in 0.2016s
