LocationController was missing some definitions. Also migrations was changed to do imports inside the function using session management tools. And finally Tor networking requests fixed DNS problem labels, increasd timeouts, and streamined ip address reuse.
This commit is contained in:
parent
3977a5b695
commit
4fb84b47d0
8 changed files with 39 additions and 24 deletions
|
|
@ -6,7 +6,7 @@ import os
|
|||
@dataclass(frozen=True)
|
||||
class Constants:
|
||||
|
||||
DB_VERSION_THIS_APP_WANTS = 1
|
||||
DB_VERSION_THIS_APP_WANTS = 2
|
||||
|
||||
# Fallback for development (running outside AppImage)
|
||||
fallback_non_appimage = os.path.dirname(os.path.abspath(__file__))
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from typing import Optional
|
|||
from sqlalchemy import select
|
||||
from sqlalchemy.orm import joinedload
|
||||
from core.models.DatabaseOperation import DatabaseOperation, DBErrorType
|
||||
from core.models.orm_calls.location_calls import get_profile_location_data
|
||||
from core.models.orm_calls.location_calls import execute_location_sql
|
||||
|
||||
class LocationController:
|
||||
|
||||
|
|
|
|||
|
|
@ -3,13 +3,11 @@ from core.errors.logger import logger
|
|||
from core.models.DatabaseOperation import DatabaseOperation, DBErrorType
|
||||
from core.Constants import Constants
|
||||
|
||||
|
||||
from core.models.orm_models.Location import Location
|
||||
from core.models.orm_models.Operator import Operator
|
||||
from core.models.orm_models.CachedSync import CachedSync
|
||||
from core.models.orm_models.EncryptedProxy import EncryptedProxy
|
||||
|
||||
MODELS = [Location, Operator, CachedSync, EncryptedProxy]
|
||||
from core.models.manage.session_management import create_ALL_tables
|
||||
# from core.models.orm_models.Location import Location
|
||||
# from core.models.orm_models.Operator import Operator
|
||||
# from core.models.orm_models.CachedSync import CachedSync
|
||||
# from core.models.orm_models.EncryptedProxy import EncryptedProxy
|
||||
|
||||
# generic
|
||||
from pathlib import Path
|
||||
|
|
@ -63,6 +61,20 @@ def get_model_columns(model_class):
|
|||
def migrate_sql() -> DatabaseOperation:
|
||||
from core.models.manage.session_management import engine
|
||||
from core.models.orm_models.Base import BaseModel, Base
|
||||
made_tables = create_ALL_tables()
|
||||
if made_tables:
|
||||
logger.info(f"[MIGRATION] Tables loaded")
|
||||
MODELS = [Location, Operator, CachedSync, EncryptedProxy]
|
||||
else:
|
||||
logger.error(f"[MIGRATION] Huge issue with loading the tables via Session management. Trying again within migrations")
|
||||
try:
|
||||
from core.models.orm_models.Location import Location
|
||||
from core.models.orm_models.Operator import Operator
|
||||
from core.models.orm_models.CachedSync import CachedSync
|
||||
from core.models.orm_models.EncryptedProxy import EncryptedProxy
|
||||
except:
|
||||
logger.error(f"[MIGRATION] Second try to load the tables failed.")
|
||||
|
||||
changes_made = []
|
||||
|
||||
# Step 1: Extract column definitions directly from each model
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ def get_data_from_api(
|
|||
None, # get request has no payload
|
||||
connection_observer,
|
||||
client_observer,
|
||||
timeout=10,
|
||||
timeout=30,
|
||||
clearweb_resolved_ip=clearweb_resolved_ip
|
||||
)
|
||||
else:
|
||||
|
|
@ -51,7 +51,7 @@ def get_data_from_api(
|
|||
None, # get request has no payload
|
||||
connection_observer,
|
||||
client_observer,
|
||||
timeout=5
|
||||
timeout=15
|
||||
)
|
||||
|
||||
if not result_object.valid and client_observer:
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ def _execute_tor_request(
|
|||
payload: Optional[dict],
|
||||
connection_observer: Optional[ConnectionObserver] = None,
|
||||
client_observer: Optional[ClientObserver] = None,
|
||||
timeout: int = 20,
|
||||
timeout: int = 30,
|
||||
clearweb_resolved_ip: str = None # if DNS via Tor is blocked
|
||||
) -> ApiResponse:
|
||||
"""
|
||||
|
|
@ -108,7 +108,7 @@ def _execute_regular_request(
|
|||
payload: Optional[dict],
|
||||
connection_observer: Optional[ConnectionObserver] = None,
|
||||
client_observer: Optional[client_observer] = None,
|
||||
timeout: int = 10,
|
||||
timeout: int = 20,
|
||||
) -> ApiResponse:
|
||||
"""
|
||||
Regular (non-Tor) request. NO observer coupling.
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ def classify_request_error(
|
|||
else:
|
||||
return ApiResponse(
|
||||
valid=False,
|
||||
error_type=ErrorType.UNKNOWN,
|
||||
error_type=ErrorType.DNS_RESOLUTION,
|
||||
tor=True,
|
||||
ip_address=ip_via_tor,
|
||||
message=f"For Unknown reasons, we can't connect, but we can resolve {domain_only} to {ip_via_tor} via Tor"
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ def solve_api_problems(
|
|||
elif reason_for_error == ErrorType.DNS_RESOLUTION:
|
||||
logger.debug(f"[API SOLVER] We're solving a DNS resolution error {api_reply_object.message}")
|
||||
if api_reply_object.tor:
|
||||
dns_fix = get_DNS_then_use_it(get_or_post, url, payload, connection_observer, client_observer)
|
||||
dns_fix = get_DNS_then_use_it(get_or_post, url, payload, api_reply_object.ip_address, connection_observer, client_observer)
|
||||
return dns_fix
|
||||
else:
|
||||
logger.error(f"[API SOLVER] We have NOT yet setup clearweb DNS solutions")
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ def get_DNS_then_use_it(
|
|||
get_or_post: str,
|
||||
full_url: str,
|
||||
payload: str = None,
|
||||
ip_address: str = None,
|
||||
connection_observer: Optional[ConnectionObserver] = None,
|
||||
client_observer: Optional[ClientObserver] = None,
|
||||
) -> ApiResponse:
|
||||
|
|
@ -59,6 +60,8 @@ def get_DNS_then_use_it(
|
|||
# ================= Do Quad9 Query ===============
|
||||
domain = extract_domain(full_url)
|
||||
logger.debug(f"[DNS TOOLS] We'll be doing a DNS lookup to the domain {domain}..")
|
||||
|
||||
if not ip_address:
|
||||
ip_address = quad9_proxy_dns_lookup(domain, tor_proxy)
|
||||
|
||||
if not ip_address:
|
||||
|
|
|
|||
Loading…
Reference in a new issue