Replace manual signal handling in runDaemon() with kardianos/service for cross-platform service lifecycle (Start/Stop/Run). Add daemon start/stop/restart subcommands using service.Control(), and improve status detection with s.Status() plus socket-check fallback. Custom macOS install logic (dscl, sudoers, pf, plist generation) is unchanged — only the runtime lifecycle is delegated to the library.
14 lines
358 B
Go
14 lines
358 B
Go
package daemon
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
// Logf writes a timestamped message to stderr with the [greywall:daemon] prefix.
|
|
func Logf(format string, args ...interface{}) {
|
|
ts := time.Now().Format("2006-01-02 15:04:05")
|
|
fmt.Fprintf(os.Stderr, ts+" [greywall:daemon] "+format+"\n", args...) //nolint:gosec // logging to stderr, not user-facing HTML
|
|
}
|