Настройка: состояние служб ядра и модулей с перезапуском из админки

Модули работают отдельными службами (bj-npr, bj-quikexport, bj-lk), и когда
служба лежит, раздел модуля отвечает ошибкой связи, а администратору
предлагалось идти в консоль за systemctl status. Теперь в разделе «Обновления»
карточка «Службы»: состояние каждой службы, с какого времени, причина отказа
и кнопка «Перезапустить».

Состояние читаем обычным systemctl show — прав не требует. Перезапуск делает
root-демон bj-keymedia (тот же канал, что у установки обновлений) по закрытому
списку служб: чужую службу и сам демон отсюда не тронуть.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
zuevav
2026-09-18 19:28:58 +03:00
parent 510a34b7bc
commit 414227796b
5 changed files with 1164 additions and 0 deletions
+3
View File
@@ -93,6 +93,7 @@ func registerSetup(mux *http.ServeMux, a *admin, rc *RuntimeConfig, svc *Service
mux.HandleFunc("/admin/setup/lk/relay-php.zip", h.lkPHPRelayDownload)
mux.HandleFunc("/admin/setup/lk/preview", h.lkPreviewSave)
mux.HandleFunc("/admin/setup/lk/data", h.lkDataSave)
mux.HandleFunc("/admin/setup/units/restart", h.unitRestart)
mux.HandleFunc("/admin/setup/lk-integration", h.saveLKIntegration)
mux.HandleFunc("/admin/setup/lk-check", h.checkLKConn)
mux.HandleFunc("/admin/setup/lk-simulate", h.lkSimulate)
@@ -324,6 +325,7 @@ type SetupData struct {
LKUsersError string
LKPreview LKPreviewStatus // кабинет на этом сервере для просмотра
LKData LKDataView // курсы валют и ежедневный срез стоимости
Units []UnitView // службы bj и её модулей
Versions SystemVersions // версии компонентов bj и внешних систем
Modules map[string]bool // какие лицензируемые модули разрешены (ключ = признак)
Features []LicenseFeatureView // признаки лицензии для карточки
@@ -391,6 +393,7 @@ func (h *setupHandlers) renderSetup(w http.ResponseWriter, req *http.Request, fl
LKAgent: lkAgentStatus(s),
LKPreview: lkPreviewStatus(h.rc, req),
LKData: lkDataView(h.rc),
Units: unitViews(h.rc),
LKKeyMask: lkKeyForPage(s.LK.APIKey),
Versions: systemVersions(h.rc),
Modules: modulesAllowed(h.rc),