53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package system
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"zlh-agent/internal/state"
|
|
)
|
|
|
|
/*
|
|
autostart.go
|
|
Handles:
|
|
- Optional auto-start on LXC boot
|
|
- Optional crash backoff / retry
|
|
- Global control for enabling/disabling auto-start
|
|
|
|
NOTE:
|
|
- This file does NOT call StartServer automatically unless
|
|
AutoStartEnabled == true.
|
|
|
|
- The template can choose to enable auto-start by writing a small
|
|
JSON flag into the payload config, or the API can set it.
|
|
*/
|
|
|
|
var AutoStartEnabled = false // controlled by config or template
|
|
var AutoRestartOnCrash = true // can be disabled for debugging
|
|
|
|
/* --------------------------------------------------------------------------
|
|
InitAutoStart — called from main.go
|
|
----------------------------------------------------------------------------*/
|
|
|
|
func InitAutoStart() {
|
|
if !AutoStartEnabled {
|
|
log.Println("[autostart] disabled (ok)")
|
|
return
|
|
}
|
|
|
|
log.Println("[autostart] enabled: waiting for config...")
|
|
|
|
go func() {
|
|
// Wait until config is loaded
|
|
for {
|
|
cfg, err := state.LoadConfig()
|
|
if err == nil && cfg != nil {
|
|
log.Println("[autostart] config detected: boot-starting server")
|
|
_ = StartServerReady(cfg)
|
|
return
|
|
}
|
|
time.Sleep(3 * time.Second)
|
|
}
|
|
}()
|
|
}
|