mirror of
https://github.com/anten-ka/go_warp_pro.git
synced 2026-05-19 11:26:01 +00:00
Bot multi-container: container selector in cl, cc:* handler, rc restarts all, back to containers button
Made-with: Cursor
This commit is contained in:
60
warp.sh
60
warp.sh
@@ -1452,9 +1452,29 @@ bot_handle_callback() {
|
||||
fi ;;
|
||||
|
||||
cl)
|
||||
awg_discover_containers 2>/dev/null
|
||||
if [ ${#AWG_ALL_CONTAINERS[@]} -gt 1 ]; then
|
||||
local t="📦 <b>Выберите контейнер:</b>\n\n"
|
||||
local kbd="["
|
||||
local first=1
|
||||
for ci in "${!AWG_ALL_CONTAINERS[@]}"; do
|
||||
local cn="${AWG_ALL_CONTAINERS[$ci]}"
|
||||
local has_w="☐"
|
||||
docker exec "$cn" sh -c "[ -f '/opt/warp/warp.conf' ]" 2>/dev/null && has_w="✅"
|
||||
[ "$first" -eq 0 ] && kbd+=","
|
||||
kbd+="[{\"text\":\"${has_w} ${cn}\",\"callback_data\":\"cc:${ci}\"}]"
|
||||
t+="${has_w} <code>${cn}</code>\n"
|
||||
first=0
|
||||
done
|
||||
kbd+=",[{\"text\":\"⬅️ Меню\",\"callback_data\":\"m\"}]]"
|
||||
tg_edit "$chat_id" "$msg_id" "$t" "$kbd"
|
||||
return
|
||||
fi
|
||||
;&
|
||||
cl_show)
|
||||
awg_get_client_ips; awg_parse_clients_table; awg_load_clients
|
||||
local warp_set=" ${AWG_SELECTED_IPS[*]+"${AWG_SELECTED_IPS[*]}"} "
|
||||
local t="👥 <b>Клиенты WARP</b> (${#AWG_SELECTED_IPS[@]} из ${#AWG_CLIENT_IPS[@]})\n\n"
|
||||
local t="👥 <b>Клиенты WARP</b> — <code>${CONTAINER}</code>\n(${#AWG_SELECTED_IPS[@]} из ${#AWG_CLIENT_IPS[@]})\n\n"
|
||||
local kbd=""
|
||||
if [ ${#AWG_CLIENT_IPS[@]} -eq 0 ]; then
|
||||
t+="<i>Нет клиентов в конфиге VPN.</i>"
|
||||
@@ -1483,10 +1503,24 @@ bot_handle_callback() {
|
||||
first=0
|
||||
done
|
||||
kbd+=",[{\"text\":\"✅ Все\",\"callback_data\":\"ct:all\"},{\"text\":\"☐ Никого\",\"callback_data\":\"ct:none\"}]"
|
||||
kbd+=",[{\"text\":\"⬅️ Меню\",\"callback_data\":\"m\"}]]"
|
||||
if [ ${#AWG_ALL_CONTAINERS[@]} -gt 1 ]; then
|
||||
kbd+=",[{\"text\":\"📦 Контейнеры\",\"callback_data\":\"cl\"},{\"text\":\"⬅️ Меню\",\"callback_data\":\"m\"}]]"
|
||||
else
|
||||
kbd+=",[{\"text\":\"⬅️ Меню\",\"callback_data\":\"m\"}]]"
|
||||
fi
|
||||
fi
|
||||
tg_edit "$chat_id" "$msg_id" "$t" "$kbd" ;;
|
||||
|
||||
cc:*)
|
||||
local ci="${data#cc:}"
|
||||
awg_discover_containers 2>/dev/null
|
||||
if [[ "$ci" =~ ^[0-9]+$ ]] && (( ci < ${#AWG_ALL_CONTAINERS[@]} )); then
|
||||
CONTAINER="${AWG_ALL_CONTAINERS[$ci]}"
|
||||
save_config_val "CONTAINER" "$CONTAINER"
|
||||
awg_load_container_data 2>/dev/null
|
||||
fi
|
||||
bot_handle_callback "$chat_id" "$msg_id" "" "cl_show" ;;
|
||||
|
||||
ct:*)
|
||||
local idx="${data#ct:}"
|
||||
awg_get_client_ips; awg_load_clients
|
||||
@@ -1513,19 +1547,25 @@ bot_handle_callback() {
|
||||
docker restart "$CONTAINER" >/dev/null 2>&1
|
||||
local _a=0; while [ "$_a" -lt 15 ]; do docker exec "$CONTAINER" sh -c "true" 2>/dev/null && break; sleep 1; ((_a++)); done
|
||||
log_action "BOT AWG TOGGLE: ${#AWG_SELECTED_IPS[@]}, container restarted"
|
||||
bot_handle_callback "$chat_id" "$msg_id" "" "cl" ;;
|
||||
bot_handle_callback "$chat_id" "$msg_id" "" "cl_show" ;;
|
||||
|
||||
rc)
|
||||
if ! has_awg_mode; then
|
||||
tg_edit "$chat_id" "$msg_id" "ℹ️ Только для AmneziaWG." "$(kbd_back)"; return
|
||||
fi
|
||||
tg_edit "$chat_id" "$msg_id" "🔄 Перезапуск контейнера..." ""
|
||||
docker restart "$CONTAINER" >/dev/null 2>&1; sleep 5
|
||||
if docker exec "$CONTAINER" sh -c "true" 2>/dev/null; then
|
||||
tg_edit "$chat_id" "$msg_id" "✅ Контейнер перезапущен." "$(kbd_back)"; log_action "BOT AWG RESTART"
|
||||
else
|
||||
tg_edit "$chat_id" "$msg_id" "⚠️ Контейнер не отвечает." "$(kbd_back)"
|
||||
fi ;;
|
||||
awg_discover_containers 2>/dev/null
|
||||
local result=""
|
||||
for cn in "${AWG_ALL_CONTAINERS[@]}"; do
|
||||
tg_edit "$chat_id" "$msg_id" "🔄 Перезапуск ${cn}..." ""
|
||||
docker restart "$cn" >/dev/null 2>&1; sleep 5
|
||||
if docker exec "$cn" sh -c "true" 2>/dev/null; then
|
||||
result+="✅ ${cn} перезапущен\n"
|
||||
else
|
||||
result+="⚠️ ${cn} не отвечает\n"
|
||||
fi
|
||||
done
|
||||
tg_edit "$chat_id" "$msg_id" "🔄 <b>Перезапуск контейнеров</b>\n\n${result}" "$(kbd_back)"
|
||||
log_action "BOT AWG RESTART: ${#AWG_ALL_CONTAINERS[@]} containers" ;;
|
||||
|
||||
sys)
|
||||
local s; s=$(get_system_stats)
|
||||
|
||||
Reference in New Issue
Block a user