Compare commits
2 commits
3977a5b695
...
c75026c834
| Author | SHA1 | Date | |
|---|---|---|---|
| c75026c834 | |||
| 4fb84b47d0 |
7 changed files with 34 additions and 23 deletions
|
|
@ -7,7 +7,7 @@ from typing import Optional
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import joinedload
|
from sqlalchemy.orm import joinedload
|
||||||
from core.models.DatabaseOperation import DatabaseOperation, DBErrorType
|
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:
|
class LocationController:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,11 @@ from core.errors.logger import logger
|
||||||
from core.models.DatabaseOperation import DatabaseOperation, DBErrorType
|
from core.models.DatabaseOperation import DatabaseOperation, DBErrorType
|
||||||
from core.Constants import Constants
|
from core.Constants import Constants
|
||||||
|
|
||||||
|
from core.models.manage.session_management import create_ALL_tables
|
||||||
from core.models.orm_models.Location import Location
|
# from core.models.orm_models.Location import Location
|
||||||
from core.models.orm_models.Operator import Operator
|
# from core.models.orm_models.Operator import Operator
|
||||||
from core.models.orm_models.CachedSync import CachedSync
|
# from core.models.orm_models.CachedSync import CachedSync
|
||||||
from core.models.orm_models.EncryptedProxy import EncryptedProxy
|
# from core.models.orm_models.EncryptedProxy import EncryptedProxy
|
||||||
|
|
||||||
MODELS = [Location, Operator, CachedSync, EncryptedProxy]
|
|
||||||
|
|
||||||
# generic
|
# generic
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
@ -63,6 +61,16 @@ def get_model_columns(model_class):
|
||||||
def migrate_sql() -> DatabaseOperation:
|
def migrate_sql() -> DatabaseOperation:
|
||||||
from core.models.manage.session_management import engine
|
from core.models.manage.session_management import engine
|
||||||
from core.models.orm_models.Base import BaseModel, Base
|
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 = []
|
changes_made = []
|
||||||
|
|
||||||
# Step 1: Extract column definitions directly from each model
|
# Step 1: Extract column definitions directly from each model
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ def get_data_from_api(
|
||||||
None, # get request has no payload
|
None, # get request has no payload
|
||||||
connection_observer,
|
connection_observer,
|
||||||
client_observer,
|
client_observer,
|
||||||
timeout=10,
|
timeout=30,
|
||||||
clearweb_resolved_ip=clearweb_resolved_ip
|
clearweb_resolved_ip=clearweb_resolved_ip
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
|
@ -51,7 +51,7 @@ def get_data_from_api(
|
||||||
None, # get request has no payload
|
None, # get request has no payload
|
||||||
connection_observer,
|
connection_observer,
|
||||||
client_observer,
|
client_observer,
|
||||||
timeout=5
|
timeout=15
|
||||||
)
|
)
|
||||||
|
|
||||||
if not result_object.valid and client_observer:
|
if not result_object.valid and client_observer:
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ def _execute_tor_request(
|
||||||
payload: Optional[dict],
|
payload: Optional[dict],
|
||||||
connection_observer: Optional[ConnectionObserver] = None,
|
connection_observer: Optional[ConnectionObserver] = None,
|
||||||
client_observer: Optional[ClientObserver] = None,
|
client_observer: Optional[ClientObserver] = None,
|
||||||
timeout: int = 20,
|
timeout: int = 30,
|
||||||
clearweb_resolved_ip: str = None # if DNS via Tor is blocked
|
clearweb_resolved_ip: str = None # if DNS via Tor is blocked
|
||||||
) -> ApiResponse:
|
) -> ApiResponse:
|
||||||
"""
|
"""
|
||||||
|
|
@ -108,7 +108,7 @@ def _execute_regular_request(
|
||||||
payload: Optional[dict],
|
payload: Optional[dict],
|
||||||
connection_observer: Optional[ConnectionObserver] = None,
|
connection_observer: Optional[ConnectionObserver] = None,
|
||||||
client_observer: Optional[client_observer] = None,
|
client_observer: Optional[client_observer] = None,
|
||||||
timeout: int = 10,
|
timeout: int = 20,
|
||||||
) -> ApiResponse:
|
) -> ApiResponse:
|
||||||
"""
|
"""
|
||||||
Regular (non-Tor) request. NO observer coupling.
|
Regular (non-Tor) request. NO observer coupling.
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ def classify_request_error(
|
||||||
else:
|
else:
|
||||||
return ApiResponse(
|
return ApiResponse(
|
||||||
valid=False,
|
valid=False,
|
||||||
error_type=ErrorType.UNKNOWN,
|
error_type=ErrorType.DNS_RESOLUTION,
|
||||||
tor=True,
|
tor=True,
|
||||||
ip_address=ip_via_tor,
|
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"
|
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:
|
elif reason_for_error == ErrorType.DNS_RESOLUTION:
|
||||||
logger.debug(f"[API SOLVER] We're solving a DNS resolution error {api_reply_object.message}")
|
logger.debug(f"[API SOLVER] We're solving a DNS resolution error {api_reply_object.message}")
|
||||||
if api_reply_object.tor:
|
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
|
return dns_fix
|
||||||
else:
|
else:
|
||||||
logger.error(f"[API SOLVER] We have NOT yet setup clearweb DNS solutions")
|
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,
|
get_or_post: str,
|
||||||
full_url: str,
|
full_url: str,
|
||||||
payload: str = None,
|
payload: str = None,
|
||||||
|
ip_address: str = None,
|
||||||
connection_observer: Optional[ConnectionObserver] = None,
|
connection_observer: Optional[ConnectionObserver] = None,
|
||||||
client_observer: Optional[ClientObserver] = None,
|
client_observer: Optional[ClientObserver] = None,
|
||||||
) -> ApiResponse:
|
) -> ApiResponse:
|
||||||
|
|
@ -59,6 +60,8 @@ def get_DNS_then_use_it(
|
||||||
# ================= Do Quad9 Query ===============
|
# ================= Do Quad9 Query ===============
|
||||||
domain = extract_domain(full_url)
|
domain = extract_domain(full_url)
|
||||||
logger.debug(f"[DNS TOOLS] We'll be doing a DNS lookup to the domain {domain}..")
|
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)
|
ip_address = quad9_proxy_dns_lookup(domain, tor_proxy)
|
||||||
|
|
||||||
if not ip_address:
|
if not ip_address:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue