mirror of
https://github.com/safing/portmaster
synced 2025-09-04 19:49:15 +00:00
Add missing core CLI options for Windows
This commit is contained in:
parent
77d8e3818d
commit
8abe04cb07
1 changed files with 45 additions and 2 deletions
|
@ -1,7 +1,7 @@
|
||||||
//nolint:gci,nolintlint
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -23,7 +23,17 @@ import (
|
||||||
"github.com/safing/portmaster/spn/conf"
|
"github.com/safing/portmaster/spn/conf"
|
||||||
)
|
)
|
||||||
|
|
||||||
var sigUSR1 = syscall.Signal(0xa)
|
var (
|
||||||
|
printStackOnExit bool
|
||||||
|
enableInputSignals bool
|
||||||
|
|
||||||
|
sigUSR1 = syscall.Signal(0xa) // dummy for windows
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
flag.BoolVar(&printStackOnExit, "print-stack-on-exit", false, "prints the stack before of shutting down")
|
||||||
|
flag.BoolVar(&enableInputSignals, "input-signals", false, "emulate signals using stdin")
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
@ -80,12 +90,21 @@ func main() {
|
||||||
err = instance.Start()
|
err = instance.Start()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("instance start failed: %s\n", err)
|
fmt.Printf("instance start failed: %s\n", err)
|
||||||
|
|
||||||
|
// Print stack on start failure, if enabled.
|
||||||
|
if printStackOnExit {
|
||||||
|
printStackTo(os.Stdout, "PRINTING STACK ON START FAILURE")
|
||||||
|
}
|
||||||
|
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// Wait for signal.
|
// Wait for signal.
|
||||||
signalCh := make(chan os.Signal, 1)
|
signalCh := make(chan os.Signal, 1)
|
||||||
|
if enableInputSignals {
|
||||||
|
go inputSignals(signalCh)
|
||||||
|
}
|
||||||
signal.Notify(
|
signal.Notify(
|
||||||
signalCh,
|
signalCh,
|
||||||
os.Interrupt,
|
os.Interrupt,
|
||||||
|
@ -139,6 +158,12 @@ func main() {
|
||||||
slog.Error("failed to stop", "err", err)
|
slog.Error("failed to stop", "err", err)
|
||||||
}
|
}
|
||||||
log.Shutdown()
|
log.Shutdown()
|
||||||
|
|
||||||
|
// Print stack on shutdown, if enabled.
|
||||||
|
if printStackOnExit {
|
||||||
|
printStackTo(os.Stdout, "PRINTING STACK ON EXIT")
|
||||||
|
}
|
||||||
|
|
||||||
os.Exit(instance.ExitCode())
|
os.Exit(instance.ExitCode())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,3 +176,21 @@ func printStackTo(writer io.Writer, msg string) {
|
||||||
slog.Error("failed to write stack trace", "err", err)
|
slog.Error("failed to write stack trace", "err", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func inputSignals(signalCh chan os.Signal) {
|
||||||
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
|
for scanner.Scan() {
|
||||||
|
switch scanner.Text() {
|
||||||
|
case "SIGHUP":
|
||||||
|
signalCh <- syscall.SIGHUP
|
||||||
|
case "SIGINT":
|
||||||
|
signalCh <- syscall.SIGINT
|
||||||
|
case "SIGQUIT":
|
||||||
|
signalCh <- syscall.SIGQUIT
|
||||||
|
case "SIGTERM":
|
||||||
|
signalCh <- syscall.SIGTERM
|
||||||
|
case "SIGUSR1":
|
||||||
|
signalCh <- sigUSR1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue