fix errors kill s.

This commit is contained in:
Zenaku 2026-06-09 09:09:10 -05:00
parent 76d3650979
commit c1fb1bc7c6
3 changed files with 26 additions and 12 deletions

View file

@ -52,3 +52,5 @@ class EndpointVerificationError(Exception):
pass pass
class SingboxNotInstalledException(Exception): class SingboxNotInstalledException(Exception):
pass pass
class PaymentRequiredError(Exception):
pass

View file

@ -1,6 +1,5 @@
from collections.abc import Callable from collections.abc import Callable
from core.Constants import Constants from core.Constants import Constants
from core.Errors import InvalidSubscriptionError, MissingSubscriptionError, ConnectionUnprotectedError, ConnectionTerminationError, CommandNotFoundError
from core.controllers.ConfigurationController import ConfigurationController from core.controllers.ConfigurationController import ConfigurationController
from core.controllers.ProfileController import ProfileController from core.controllers.ProfileController import ProfileController
from core.controllers.SessionStateController import SessionStateController from core.controllers.SessionStateController import SessionStateController
@ -13,6 +12,7 @@ from core.services.WebServiceApiService import WebServiceApiService
from essentials.modules.TorModule import TorModule from essentials.modules.TorModule import TorModule
from essentials.services.ConnectionService import ConnectionService from essentials.services.ConnectionService import ConnectionService
from pathlib import Path from pathlib import Path
from core.Errors import InvalidSubscriptionError, MissingSubscriptionError, ConnectionUnprotectedError, ConnectionTerminationError, CommandNotFoundError, PaymentRequiredError
from subprocess import CalledProcessError from subprocess import CalledProcessError
from typing import Union, Optional, Any from typing import Union, Optional, Any
import os import os
@ -105,7 +105,7 @@ class ConnectionController:
) )
if operator_proxy_session is None: if operator_proxy_session is None:
raise InvalidSubscriptionError() raise PaymentRequiredError()
profile.attach_operator_proxy_session(operator_proxy_session) profile.attach_operator_proxy_session(operator_proxy_session)

View file

@ -1,4 +1,4 @@
from core.Errors import InvalidSubscriptionError, MissingSubscriptionError, ConnectionTerminationError, ProfileActivationError, ProfileDeactivationError, MissingLocationError, ConnectionUnprotectedError, EndpointVerificationError, ProfileStateConflictError from core.Errors import InvalidSubscriptionError, MissingSubscriptionError, ConnectionTerminationError, ProfileActivationError, ProfileDeactivationError, MissingLocationError, ConnectionUnprotectedError, EndpointVerificationError, ProfileStateConflictError, PaymentRequiredError
from core.controllers.ApplicationController import ApplicationController from core.controllers.ApplicationController import ApplicationController
from core.controllers.ApplicationVersionController import ApplicationVersionController from core.controllers.ApplicationVersionController import ApplicationVersionController
from core.controllers.SessionStateController import SessionStateController from core.controllers.SessionStateController import SessionStateController
@ -141,14 +141,26 @@ class ProfileController:
if profile.has_subscription(): if profile.has_subscription():
print(f"DEBUG activate_subscription:") # Operator profiles (vless/hysteria2): check if already activated locally first.
print(f" billing_code: {profile.subscription.billing_code}") # If not, poll the server — the payment may have been processed since last attempt.
print(f" operator_id: {profile.subscription.operator_id}") if profile.subscription.operator_id is not None:
if profile.subscription.has_been_activated():
profile.save()
return
subscription = ConnectionController.with_preferred_connection(
profile.subscription.billing_code,
task=WebServiceApiService.get_subscription,
connection_observer=connection_observer
)
if subscription is not None:
profile.subscription = subscription
profile.save()
return
else:
raise PaymentRequiredError()
subscription = ConnectionController.with_preferred_connection(profile.subscription.billing_code, task=WebServiceApiService.get_subscription, connection_observer=connection_observer) subscription = ConnectionController.with_preferred_connection(profile.subscription.billing_code, task=WebServiceApiService.get_subscription, connection_observer=connection_observer)
print(f" get_subscription returned: {subscription}")
if subscription is not None: if subscription is not None:
profile.subscription = subscription profile.subscription = subscription
profile.save() profile.save()