reset traffic
This commit is contained in:
@@ -59,6 +59,29 @@ async def add_client(
|
||||
return None
|
||||
|
||||
|
||||
async def reset_client_traffic(session, server_id: str, email: str) -> bool:
|
||||
"""Сбрасывает трафик клиента на сервере"""
|
||||
api_url = SERVERS[server_id]["API_URL"]
|
||||
url = f"{api_url}/panel/api/inbounds/1/resetClientTraffic/{email}"
|
||||
headers = {"Accept": "application/json"}
|
||||
|
||||
try:
|
||||
async with session.post(url, headers=headers) as response:
|
||||
if response.status == 200:
|
||||
logger.info(
|
||||
f"Трафик клиента {email} успешно сброшен на сервере {server_id}")
|
||||
return True
|
||||
else:
|
||||
logger.error(
|
||||
f"Ошибка при сбросе трафика клиента {email} на сервере {server_id}: {response.status} - {await response.text()}"
|
||||
)
|
||||
return False
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Ошибка при попытке сброса трафика клиента {email} на сервере {server_id}: {e}")
|
||||
return False
|
||||
|
||||
|
||||
async def extend_client_key(
|
||||
session, server_id: str, tg_id, client_id, email: str, new_expiry_time: int
|
||||
) -> bool:
|
||||
@@ -113,7 +136,8 @@ async def extend_client_key(
|
||||
),
|
||||
}
|
||||
|
||||
headers = {"Content-Type": "application/json", "Accept": "application/json"}
|
||||
headers = {"Content-Type": "application/json",
|
||||
"Accept": "application/json"}
|
||||
|
||||
try:
|
||||
async with session.post(
|
||||
@@ -122,7 +146,8 @@ async def extend_client_key(
|
||||
headers=headers,
|
||||
) as response:
|
||||
logger.info(f"POST {response.url} Status: {response.status}")
|
||||
logger.info(f"POST Request Data: {json.dumps(payload, indent=2)}")
|
||||
logger.info(
|
||||
f"POST Request Data: {json.dumps(payload, indent=2)}")
|
||||
response_text = await response.text()
|
||||
logger.info(f"POST Response: {response_text}")
|
||||
|
||||
@@ -165,7 +190,8 @@ async def extend_client_key_admin(
|
||||
),
|
||||
}
|
||||
|
||||
headers = {"Content-Type": "application/json", "Accept": "application/json"}
|
||||
headers = {"Content-Type": "application/json",
|
||||
"Accept": "application/json"}
|
||||
|
||||
try:
|
||||
async with session.post(
|
||||
|
||||
@@ -2,8 +2,8 @@ import asyncpg
|
||||
from loguru import logger
|
||||
|
||||
from auth import login_with_credentials
|
||||
from client import add_client, delete_client, extend_client_key
|
||||
from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL
|
||||
from client import add_client, delete_client, extend_client_key, reset_client_traffic
|
||||
from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL, RESET_TRAFFIC
|
||||
|
||||
|
||||
async def create_key_on_server(server_id, tg_id, client_id, email, expiry_timestamp):
|
||||
@@ -34,17 +34,28 @@ async def create_key_on_server(server_id, tg_id, client_id, email, expiry_timest
|
||||
logger.error(f"Ошибка на сервере {server_id}: {e}")
|
||||
|
||||
|
||||
async def renew_server_key(server_id, tg_id, client_id, email, new_expiry_time):
|
||||
async def renew_server_key(
|
||||
server_id,
|
||||
tg_id, client_id,
|
||||
email,
|
||||
new_expiry_time,
|
||||
reset_traffic=RESET_TRAFFIC
|
||||
):
|
||||
try:
|
||||
session = await login_with_credentials(
|
||||
server_id, ADMIN_USERNAME, ADMIN_PASSWORD
|
||||
)
|
||||
|
||||
await extend_client_key(
|
||||
session, server_id, tg_id, client_id, email, new_expiry_time
|
||||
)
|
||||
|
||||
if reset_traffic:
|
||||
await reset_client_traffic(session, server_id, email)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Не удалось продлить ключ {client_id} на сервере {server_id}: {e}"
|
||||
f"Не удалось продлить ключ {client_id} и сбросить трафик на сервере {server_id}: {e}"
|
||||
)
|
||||
|
||||
|
||||
@@ -63,7 +74,9 @@ async def delete_key_from_db(client_id):
|
||||
async def delete_key_from_server(server_id, client_id):
|
||||
"""Удаление ключа с сервера"""
|
||||
try:
|
||||
async with login_with_credentials(server_id, ADMIN_USERNAME, ADMIN_PASSWORD) as session:
|
||||
async with login_with_credentials(server_id,
|
||||
ADMIN_USERNAME,
|
||||
ADMIN_PASSWORD) as session:
|
||||
success = await delete_client(session, server_id, client_id)
|
||||
|
||||
if not success:
|
||||
|
||||
@@ -96,7 +96,7 @@ async def process_callback_view_keys(callback_query: types.CallbackQuery):
|
||||
else:
|
||||
response_message = NO_KEYS
|
||||
create_key_button = types.InlineKeyboardButton(
|
||||
text="➕ Создать ключ", callback_data="create_key"
|
||||
text="➕ Создать подписку", callback_data="create_key"
|
||||
)
|
||||
back_button = types.InlineKeyboardButton(
|
||||
text="🔙 Назад", callback_data="view_profile"
|
||||
|
||||
Reference in New Issue
Block a user