Compare commits

...

2 commits

7 changed files with 34 additions and 23 deletions

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,16 @@ 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
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
MODELS = [Location, Operator, CachedSync, EncryptedProxy]
logger.info(f"[MIGRATION] Tables loaded")
except:
logger.error(f"[MIGRATION] Could not load models. Critical failure.")
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,17 +60,19 @@ 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}..")
ip_address = quad9_proxy_dns_lookup(domain, tor_proxy)
if not ip_address:
return ApiResponse(
valid=False,
error_type=ErrorType.QUAD9_DNS_RESOLUTION,
tor=True,
message=f"Cannot resolve {domain} via Tor or Quad9"
)
ip_address = quad9_proxy_dns_lookup(domain, tor_proxy)
logger.debug(f"[DNS TOOLS] We got an IP address from Quad9 for {domain} of: {ip_address}")
if not ip_address:
return ApiResponse(
valid=False,
error_type=ErrorType.QUAD9_DNS_RESOLUTION,
tor=True,
message=f"Cannot resolve {domain} via Tor or Quad9"
)
logger.debug(f"[DNS TOOLS] We got an IP address from Quad9 for {domain} of: {ip_address}")
# ================= Use Custom DNS ===============
client = create_httpx_client_with_custom_dns({domain: ip_address}, tor_proxy)