2021-08-13 08:46:30 +02:00
package cmd
import (
"fmt"
"os"
"os/signal"
2021-09-07 09:53:18 +02:00
"runtime"
2022-05-13 21:51:41 +02:00
"github.com/spf13/cobra"
2023-03-15 07:54:51 +01:00
"github.com/netbirdio/netbird/version"
2021-08-13 08:46:30 +02:00
)
const (
// ExitSetupFailed defines exit code
ExitSetupFailed = 1
)
var (
2021-09-07 09:53:18 +02:00
logLevel string
defaultLogFile string
logFile string
2021-08-13 08:46:30 +02:00
rootCmd = & cobra . Command {
2023-03-15 07:54:51 +01:00
Use : "netbird-signal" ,
Short : "" ,
Long : "" ,
Version : version . NetbirdVersion ( ) ,
2021-08-13 08:46:30 +02:00
}
// Execution control channel for stopCh signal
stopCh chan int
)
// Execute executes the root command.
func Execute ( ) error {
return rootCmd . Execute ( )
}
2022-05-13 21:51:41 +02:00
func init ( ) {
2021-08-13 08:46:30 +02:00
stopCh = make ( chan int )
2022-05-13 21:51:41 +02:00
defaultLogFile = "/var/log/netbird/signal.log"
defaultSignalSSLDir = "/var/lib/netbird/"
2021-09-07 09:53:18 +02:00
if runtime . GOOS == "windows" {
2022-05-13 21:51:41 +02:00
defaultLogFile = os . Getenv ( "PROGRAMDATA" ) + "\\Netbird\\" + "signal.log"
2021-09-07 09:53:18 +02:00
}
2021-08-13 08:46:30 +02:00
rootCmd . PersistentFlags ( ) . StringVar ( & logLevel , "log-level" , "info" , "" )
2022-05-13 21:51:41 +02:00
rootCmd . PersistentFlags ( ) . StringVar ( & logFile , "log-file" , defaultLogFile , "sets Netbird log path. If console is specified the the log will be output to stdout" )
2021-08-13 08:46:30 +02:00
rootCmd . AddCommand ( runCmd )
}
// SetupCloseHandler handles SIGTERM signal and exits with success
func SetupCloseHandler ( ) {
c := make ( chan os . Signal , 1 )
signal . Notify ( c , os . Interrupt )
go func ( ) {
for range c {
fmt . Println ( "\r- Ctrl+C pressed in Terminal" )
stopCh <- 0
}
} ( )
}