mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-03-03 00:31:24 +00:00
Revert "Handle missing RemnaWave API configuration gracefully"
This commit is contained in:
19
app/external/remnawave_api.py
vendored
19
app/external/remnawave_api.py
vendored
@@ -106,23 +106,10 @@ class RemnaWaveAPIError(Exception):
|
||||
|
||||
|
||||
class RemnaWaveAPI:
|
||||
|
||||
def __init__(self, base_url: Optional[str], api_key: Optional[str], secret_key: Optional[str] = None,
|
||||
|
||||
def __init__(self, base_url: str, api_key: str, secret_key: Optional[str] = None,
|
||||
username: Optional[str] = None, password: Optional[str] = None):
|
||||
normalized_base_url = (base_url or "").strip()
|
||||
if not normalized_base_url:
|
||||
raise RemnaWaveAPIError(
|
||||
"RemnaWave API base URL is not configured. "
|
||||
"Please set REMNAWAVE_API_URL environment variable or update settings."
|
||||
)
|
||||
|
||||
if not (username and password) and not (api_key or "").strip():
|
||||
raise RemnaWaveAPIError(
|
||||
"RemnaWave API credentials are not configured. "
|
||||
"Provide REMNAWAVE_API_KEY or username/password in settings."
|
||||
)
|
||||
|
||||
self.base_url = normalized_base_url.rstrip('/')
|
||||
self.base_url = base_url.rstrip('/')
|
||||
self.api_key = api_key
|
||||
self.secret_key = secret_key
|
||||
self.username = username
|
||||
|
||||
@@ -6,7 +6,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from app.config import settings
|
||||
from app.database.models import Subscription, User, SubscriptionStatus, PromoGroup
|
||||
from app.external.remnawave_api import (
|
||||
RemnaWaveAPI, RemnaWaveUser, UserStatus,
|
||||
RemnaWaveAPI, RemnaWaveUser, UserStatus,
|
||||
TrafficLimitStrategy, RemnaWaveAPIError
|
||||
)
|
||||
from app.database.crud.user import get_user_by_id
|
||||
@@ -74,39 +74,17 @@ def get_traffic_reset_strategy():
|
||||
return getattr(TrafficLimitStrategy, mapped_strategy)
|
||||
|
||||
|
||||
class _DisabledRemnaWaveAPI:
|
||||
"""Async context manager that always raises the stored configuration error."""
|
||||
|
||||
def __init__(self, error: RemnaWaveAPIError):
|
||||
self._error = error
|
||||
|
||||
async def __aenter__(self):
|
||||
raise self._error
|
||||
|
||||
async def __aexit__(self, exc_type, exc, tb):
|
||||
return False
|
||||
|
||||
|
||||
class SubscriptionService:
|
||||
|
||||
|
||||
def __init__(self):
|
||||
auth_params = settings.get_remnawave_auth_params()
|
||||
try:
|
||||
self.api = RemnaWaveAPI(
|
||||
base_url=auth_params["base_url"],
|
||||
api_key=auth_params["api_key"],
|
||||
secret_key=auth_params["secret_key"],
|
||||
username=auth_params["username"],
|
||||
password=auth_params["password"]
|
||||
)
|
||||
self._init_error: Optional[RemnaWaveAPIError] = None
|
||||
except RemnaWaveAPIError as error:
|
||||
self._init_error = error
|
||||
logger.error(
|
||||
"RemnaWave API configuration error: %s",
|
||||
error
|
||||
)
|
||||
self.api = _DisabledRemnaWaveAPI(error)
|
||||
self.api = RemnaWaveAPI(
|
||||
base_url=auth_params["base_url"],
|
||||
api_key=auth_params["api_key"],
|
||||
secret_key=auth_params["secret_key"],
|
||||
username=auth_params["username"],
|
||||
password=auth_params["password"]
|
||||
)
|
||||
|
||||
async def create_remnawave_user(
|
||||
self,
|
||||
@@ -205,8 +183,6 @@ class SubscriptionService:
|
||||
|
||||
except RemnaWaveAPIError as e:
|
||||
logger.error(f"Ошибка RemnaWave API: {e}")
|
||||
if self._init_error:
|
||||
logger.error("Текущая конфигурация RemnaWave API некорректна: %s", self._init_error)
|
||||
return None
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка создания RemnaWave пользователя: {e}")
|
||||
|
||||
Reference in New Issue
Block a user