feat(webui): режим console (только RS232-консоль, питание отключено)

- ATXPI_MODE=console: /api/power/* → 403, кнопки питания скрыты в UI
- /api/status отдаёт mode; env-шаблон и install.sh учитывают ATXPI_MODE
- нужно для безопасного запуска панели на серверах-«управленцах» без риска питания
This commit is contained in:
toros
2026-09-08 23:34:23 +05:00
parent e3f7865ce6
commit 49b6cf89f4
5 changed files with 30 additions and 6 deletions
+4 -1
View File
@@ -28,7 +28,10 @@ async function refresh() {
document.getElementById('powerState').textContent =
s.power === 'on' ? '🟢 ON' : '🔴 OFF';
document.getElementById('status').textContent =
`driver=${s.driver} · serial=${s.serial_port}@${s.serial_baud}`;
`driver=${s.driver} · serial=${s.serial_port}@${s.serial_baud}` +
(s.mode === 'console' ? ' · режим: только консоль' : '');
const pc = document.getElementById('powerControls');
if (pc) pc.style.display = (s.mode === 'console') ? 'none' : '';
} catch (e) { /* уже обработано в api() */ }
}
+6 -4
View File
@@ -25,10 +25,12 @@
<h1>⚡ atxpi</h1>
<span id="powerState" class="badge"></span>
<span class="spacer"></span>
<button class="btn" onclick="doPower('on')" title="Нажать кнопку питания">⏻ ON</button>
<button class="btn" onclick="doPower('off')" title="Принудительно выключить (долгое нажатие)"> OFF</button>
<button class="btn" onclick="doPower('reset')" title="Аппаратный сброс">↻ Reset</button>
<button class="btn" onclick="doPower('cycle')" title="Жёсткий перезапуск">⟳ Cycle</button>
<span id="powerControls">
<button class="btn" onclick="doPower('on')" title="Нажать кнопку питания"> ON</button>
<button class="btn" onclick="doPower('off')" title="Принудительно выключить (долгое нажатие)">⭘ OFF</button>
<button class="btn" onclick="doPower('reset')" title="Аппаратный сброс">↻ Reset</button>
<button class="btn" onclick="doPower('cycle')" title="Жёсткий перезапуск">⟳ Cycle</button>
</span>
</header>
<section id="status" class="status-line"></section>