From 7567571210f9c8fc3e8db6f37bac268fab91ef34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Fri, 8 May 2026 19:10:01 +0900 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=20=D0=B8=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=20=D0=B2=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin-panel/src/main.jsx | 62 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/admin-panel/src/main.jsx b/admin-panel/src/main.jsx index cbde8fc..7871876 100644 --- a/admin-panel/src/main.jsx +++ b/admin-panel/src/main.jsx @@ -5,6 +5,7 @@ import { Bot, CheckCircle, Clock, + Database, KeyRound, MessageCircle, PlugZap, @@ -61,12 +62,14 @@ function App() { const [stats, setStats] = useState(null); const [messages, setMessages] = useState([]); const [telegramSettings, setTelegramSettings] = useState(emptyTelegramSettings); + const [telegramBridge, setTelegramBridge] = useState(null); const [telegramDirty, setTelegramDirty] = useState(false); const [loading, setLoading] = useState(false); const [savingTelegram, setSavingTelegram] = useState(false); const [testingProxy, setTestingProxy] = useState(false); const [lastUpdate, setLastUpdate] = useState(null); const [error, setError] = useState(''); + const [telegramError, setTelegramError] = useState(''); const [telegramNotice, setTelegramNotice] = useState(''); const [proxyTestResult, setProxyTestResult] = useState(null); @@ -104,10 +107,12 @@ function App() { async function loadTelegramSettings({ force = false } = {}) { if (telegramDirty && !force) return; + setTelegramError(''); const response = await fetch(API_URL + '/api/admin/telegram/settings'); const data = await response.json(); if (!data.ok) throw new Error(data.error || 'Telegram settings load failed'); setTelegramSettings(data.settings || emptyTelegramSettings); + setTelegramBridge(data.bridge || null); setTelegramDirty(false); } @@ -131,9 +136,15 @@ function App() { setHealth(healthData); setStats(statsData.stats || null); setMessages(Array.isArray(messagesData.messages) ? messagesData.messages : []); + if (healthData.telegram) setTelegramBridge(healthData.telegram); + if (statsData.telegram) setTelegramBridge(statsData.telegram); if (includeTelegram) { - await loadTelegramSettings({ force: false }); + try { + await loadTelegramSettings({ force: false }); + } catch (telegramRequestError) { + setTelegramError(telegramRequestError.message); + } } setLastUpdate(new Date()); @@ -149,6 +160,7 @@ function App() { event.preventDefault(); setSavingTelegram(true); setTelegramNotice(''); + setTelegramError(''); setProxyTestResult(null); try { @@ -171,8 +183,9 @@ function App() { const data = await response.json(); if (!data.ok) throw new Error(data.error || 'Save failed'); setTelegramSettings(data.settings || emptyTelegramSettings); + setTelegramBridge(data.bridge || telegramBridge); setTelegramDirty(false); - setTelegramNotice('Настройки Telegram/SOCKS5 сохранены.'); + setTelegramNotice(data.message || 'Настройки Telegram/SOCKS5 сохранены.'); } catch (saveError) { setTelegramNotice(`Ошибка сохранения: ${saveError.message}`); } finally { @@ -183,6 +196,7 @@ function App() { async function testProxy() { setTestingProxy(true); setTelegramNotice(''); + setTelegramError(''); try { const response = await fetch(API_URL + '/api/admin/telegram/test-proxy', { @@ -191,6 +205,7 @@ function App() { const data = await response.json(); setProxyTestResult(data); if (data.settings && !telegramDirty) setTelegramSettings(data.settings); + if (data.bridge) setTelegramBridge(data.bridge); } catch (testError) { setProxyTestResult({ ok: false, status: 'error', message: testError.message }); } finally { @@ -198,9 +213,31 @@ function App() { } } + async function restartBridge() { + setTestingProxy(true); + setTelegramNotice(''); + setTelegramError(''); + + try { + const response = await fetch(API_URL + '/api/admin/telegram/restart', { + method: 'POST' + }); + const data = await response.json(); + if (!data.ok) throw new Error(data.error || 'Bridge restart failed'); + setTelegramBridge(data.bridge || null); + setTelegramNotice(data.bridge?.running ? 'Telegram bridge перезапущен.' : `Bridge не запущен: ${data.bridge?.error || 'unknown error'}`); + await loadDashboard({ silent: true, includeTelegram: true }); + } catch (restartError) { + setTelegramError(restartError.message); + } finally { + setTestingProxy(false); + } + } + async function resetTelegramForm() { setTelegramDirty(false); setTelegramNotice(''); + setTelegramError(''); setProxyTestResult(null); await loadTelegramSettings({ force: true }); } @@ -225,6 +262,9 @@ function App() { SOCKS5: {telegramSettings.proxy.enabled ? 'включен' : 'выключен'} + + bridge: {telegramBridge?.running ? 'online' : 'offline'} + {telegramDirty ? ( есть несохранённые изменения @@ -235,13 +275,14 @@ function App() { - {error ?
Ошибка API: {error}
: null} + {telegramError ?
Ошибка Telegram settings API: {telegramError}
: null}
{statCards.map((card) => )} @@ -259,6 +300,13 @@ function App() { +
+ API: {API_URL} + DB: {health?.dbPath || 'неизвестно'} + Bot: {telegramBridge?.username || 'неизвестно'} + Error: {telegramBridge?.error || 'нет'} +
+