Веб-панель управления сервером Project Zomboid
Менеджер запускает сервер PZ как дочерний процесс и держит его stdin/stdout: отсюда живая консоль без RCON, стриминг логов через SSE и корректная остановка по цепочке quit -> SIGTERM -> SIGKILL для всей группы процессов. Сам менеджер работает под systemd. Что входит: - управление жизненным циклом сервера, автозапуск и автоподъём после падения; - метрики процесса из /proc и состояние хоста, список игроков онлайн; - редакторы servertest.ini и SandboxVars.lua, сохраняющие исходное форматирование файлов; - моды: списки Workshop ID и Mod ID с порядком загрузки, названия из Steam; - бэкапы мира по расписанию и вручную, с ротацией и восстановлением; - установка и обновление сервера через SteamCMD; - вход по логину и паролю, первичная настройка по одноразовому коду. Веб-интерфейс без сборщика, вшит в бинарник через embed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
//go:build windows
|
||||
|
||||
package pzserver
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
// На Windows групп процессов в POSIX-смысле нет. Менеджер рассчитан на
|
||||
// Ubuntu; эти заглушки нужны лишь для сборки и отладки под Windows.
|
||||
func setProcessGroup(cmd *exec.Cmd) {}
|
||||
|
||||
func processGroupID(pid int) int { return pid }
|
||||
|
||||
func signalGroup(pgid int, sig syscall.Signal) error {
|
||||
p, err := syscall.OpenProcess(syscall.PROCESS_TERMINATE, false, uint32(pgid))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer syscall.CloseHandle(p)
|
||||
return syscall.TerminateProcess(p, 1)
|
||||
}
|
||||
|
||||
var (
|
||||
sigTerm = syscall.Signal(15)
|
||||
sigKill = syscall.Signal(9)
|
||||
)
|
||||
Reference in New Issue
Block a user