Fix server validation and add key renewal hooks

This commit is contained in:
Capybara-z
2025-10-23 21:54:40 +03:00
parent a7c4e06102
commit 050e4ae139
2 changed files with 40 additions and 2 deletions
+27 -2
View File
@@ -136,10 +136,19 @@ async def process_callback_delete_server(
if all_servers:
builder = InlineKeyboardBuilder()
for s_name, key_count in all_servers:
callback_data = f"transfer_to_server|{s_name}|{server_name}"
if len(callback_data.encode('utf-8')) > 64:
await callback_query.message.edit_text(
text=f"❌ Ошибка: название сервера '{s_name}' слишком длинное.\n\n"
f"Пожалуйста, переименуйте сервер в более короткое название и попробуйте снова.",
reply_markup=build_admin_back_kb("clusters"),
)
return
builder.row(
InlineKeyboardButton(
text=f"{s_name} ({key_count})",
callback_data=f"transfer_to_server|{s_name}|{server_name}",
callback_data=callback_data,
)
)
builder.row(
@@ -189,10 +198,19 @@ async def process_callback_delete_server(
builder = InlineKeyboardBuilder()
for cl_name, key_count in all_clusters:
callback_data = f"transfer_to_cluster|{cl_name}|{cluster_name}|{server_name}"
if len(callback_data.encode('utf-8')) > 64:
await callback_query.message.edit_text(
text=f"❌ Ошибка: название сервера '{server_name}' или кластера '{cl_name}' слишком длинное.\n\n"
f"Пожалуйста, переименуйте сервер в более короткое название и попробуйте снова.",
reply_markup=build_admin_back_kb("clusters"),
)
return
builder.row(
InlineKeyboardButton(
text=f"{cl_name} ({key_count})",
callback_data=f"transfer_to_cluster|{cl_name}|{cluster_name}|{server_name}",
callback_data=callback_data,
)
)
builder.row(
@@ -424,6 +442,13 @@ async def apply_field_edit(message: types.Message, state: FSMContext, session: A
value = message.text.strip()
if field == "server_name":
if len(value) > 12:
await message.answer(
text="❌ Имя сервера не должно превышать 12 символов. Попробуйте снова.",
reply_markup=build_admin_back_kb("clusters"),
)
return
success = await update_server_name_with_keys(session, server_name, value)
if success:
server_name = value
+13
View File
@@ -74,6 +74,19 @@ async def process_callback_renew_key(callback_query: CallbackQuery, state: FSMCo
dt_msk = available_from_utc.astimezone(moscow_tz).strftime("%d.%m.%Y %H:%M")
kb = InlineKeyboardBuilder()
kb.row(InlineKeyboardButton(text=BACK, callback_data=f"view_key|{key_name}"))
try:
hook_commands = await run_hooks(
"process_callback_renew_key",
callback_query=callback_query,
state=state,
session=session
)
if hook_commands:
kb = insert_hook_buttons(kb, hook_commands)
except Exception as e:
logger.warning(f"[RENEW] Ошибка при применении хуков: {e}")
await edit_or_send_message(
target_message=callback_query.message,
text=f"Продление доступно с {dt_msk}",