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:
SimplifiedPrivacy 2026-07-17 09:29:49 -04:00
parent 3977a5b695
commit 4fb84b47d0
8 changed files with 39 additions and 24 deletions

View file

@ -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__))

View 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:

View file

@ -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

View file

@ -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:

View file

@ -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.

View file

@ -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"

View file

@ -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")

View file

@ -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: