diff --git a/client/cmd/down.go b/client/cmd/down.go index d906059ca..fdd3786ae 100644 --- a/client/cmd/down.go +++ b/client/cmd/down.go @@ -2,15 +2,21 @@ package cmd import ( "context" - "github.com/netbirdio/netbird/util" "time" + "github.com/netbirdio/netbird/util" + log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/netbirdio/netbird/client/proto" ) +func init() { + downCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + downCmd.PersistentFlags().StringVar(&daemonAddr, "daemon-addr", defaultDaemonAddr, "Daemon service address to serve CLI requests [unix|tcp]://[path|host:port]") +} + var downCmd = &cobra.Command{ Use: "down", Short: "down netbird connections", diff --git a/client/cmd/login.go b/client/cmd/login.go index 83ed7f3b8..19d49c87a 100644 --- a/client/cmd/login.go +++ b/client/cmd/login.go @@ -19,6 +19,18 @@ import ( "github.com/netbirdio/netbird/client/system" ) +func init() { + loginCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") + loginCmd.PersistentFlags().StringVar(&adminURL, "admin-url", "", fmt.Sprintf("Admin Panel URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultAdminURL)) + loginCmd.PersistentFlags().StringVarP(&managementURL, "management-url", "m", "", fmt.Sprintf("Management Service URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultManagementURL)) + loginCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + loginCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") + loginCmd.PersistentFlags().StringVar(&daemonAddr, "daemon-addr", defaultDaemonAddr, "Daemon service address to serve CLI requests [unix|tcp]://[path|host:port]") + loginCmd.PersistentFlags().StringVarP(&hostName, "hostname", "n", "", "Sets a custom hostname for the device") + loginCmd.PersistentFlags().StringVar(&preSharedKey, "preshared-key", "", "Sets Wireguard PreSharedKey property. If set, then only peers that have the same key can communicate.") + loginCmd.PersistentFlags().StringVarP(&setupKey, "setup-key", "k", "", "Setup key obtained from the Management Service Dashboard (used to register peer)") +} + var loginCmd = &cobra.Command{ Use: "login", Short: "login to the Netbird Management Service (first run)", diff --git a/client/cmd/root.go b/client/cmd/root.go index 770bd21fa..8c343c7df 100644 --- a/client/cmd/root.go +++ b/client/cmd/root.go @@ -20,8 +20,6 @@ import ( "github.com/spf13/pflag" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" - - "github.com/netbirdio/netbird/client/internal" ) const ( @@ -49,6 +47,7 @@ var ( preSharedKey string natExternalIPs []string customDNSAddress string + defaultDaemonAddr string rootCmd = &cobra.Command{ Use: "netbird", Short: "", @@ -83,19 +82,14 @@ func init() { oldDefaultConfigPath = oldDefaultConfigPathDir + "config.json" oldDefaultLogFile = oldDefaultLogFileDir + "client.log" - defaultDaemonAddr := "unix:///var/run/netbird.sock" + defaultDaemonAddr = "unix:///var/run/netbird.sock" if runtime.GOOS == "windows" { defaultDaemonAddr = "tcp://127.0.0.1:41731" } - rootCmd.PersistentFlags().StringVar(&daemonAddr, "daemon-addr", defaultDaemonAddr, "Daemon service address to serve CLI requests [unix|tcp]://[path|host:port]") - rootCmd.PersistentFlags().StringVarP(&managementURL, "management-url", "m", "", fmt.Sprintf("Management Service URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultManagementURL)) - rootCmd.PersistentFlags().StringVar(&adminURL, "admin-url", "", fmt.Sprintf("Admin Panel URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultAdminURL)) - rootCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") - rootCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") - rootCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") - rootCmd.PersistentFlags().StringVarP(&setupKey, "setup-key", "k", "", "Setup key obtained from the Management Service Dashboard (used to register peer)") - rootCmd.PersistentFlags().StringVar(&preSharedKey, "preshared-key", "", "Sets Wireguard PreSharedKey property. If set, then only peers that have the same key can communicate.") - rootCmd.PersistentFlags().StringVarP(&hostName, "hostname", "n", "", "Sets a custom hostname for the device") + // rootCmd.PersistentFlags().StringVarP(&managementURL, "management-url", "m", "", fmt.Sprintf("Management Service URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultManagementURL)) + // rootCmd.PersistentFlags().StringVar(&adminURL, "admin-url", "", fmt.Sprintf("Admin Panel URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultAdminURL)) + // rootCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") + // rootCmd rootCmd.AddCommand(serviceCmd) rootCmd.AddCommand(upCmd) rootCmd.AddCommand(downCmd) @@ -103,21 +97,6 @@ func init() { rootCmd.AddCommand(loginCmd) rootCmd.AddCommand(versionCmd) rootCmd.AddCommand(sshCmd) - serviceCmd.AddCommand(runCmd, startCmd, stopCmd, restartCmd) // service control commands are subcommands of service - serviceCmd.AddCommand(installCmd, uninstallCmd) // service installer commands are subcommands of service - upCmd.PersistentFlags().StringSliceVar(&natExternalIPs, externalIPMapFlag, nil, - `Sets external IPs maps between local addresses and interfaces.`+ - `You can specify a comma-separated list with a single IP and IP/IP or IP/Interface Name. `+ - `An empty string "" clears the previous configuration. `+ - `E.g. --external-ip-map 12.34.56.78/10.0.0.1 or --external-ip-map 12.34.56.200,12.34.56.78/10.0.0.1,12.34.56.80/eth1 `+ - `or --external-ip-map ""`, - ) - upCmd.PersistentFlags().StringVar(&customDNSAddress, dnsResolverAddress, "", - `Sets a custom address for NetBird's local DNS resolver. `+ - `If set, the agent won't attempt to discover the best ip and port to listen on. `+ - `An empty string "" clears the previous configuration. `+ - `E.g. --dns-resolver-address 127.0.0.1:5053 or --dns-resolver-address ""`, - ) } // SetupCloseHandler handles SIGTERM signal and exits with success diff --git a/client/cmd/service.go b/client/cmd/service.go index 18fe5d621..b2a24fd0b 100644 --- a/client/cmd/service.go +++ b/client/cmd/service.go @@ -18,6 +18,11 @@ type program struct { serv *grpc.Server } +func init() { + serviceCmd.AddCommand(runCmd, startCmd, stopCmd, restartCmd) // service control commands are subcommands of service + serviceCmd.AddCommand(installCmd, uninstallCmd) // service installer commands are subcommands of service +} + func newProgram(ctx context.Context, cancel context.CancelFunc) *program { ctx = internal.CtxInitState(ctx) return &program{ctx: ctx, cancel: cancel} diff --git a/client/cmd/service_controller.go b/client/cmd/service_controller.go index b92e1cc05..fc48051cf 100644 --- a/client/cmd/service_controller.go +++ b/client/cmd/service_controller.go @@ -11,13 +11,29 @@ import ( "github.com/kardianos/service" log "github.com/sirupsen/logrus" + "github.com/spf13/cobra" + "google.golang.org/grpc" + "github.com/netbirdio/netbird/client/proto" "github.com/netbirdio/netbird/client/server" "github.com/netbirdio/netbird/util" - "github.com/spf13/cobra" - "google.golang.org/grpc" ) +func init() { + startCmd.PersistentFlags().StringVar(&daemonAddr, "daemon-addr", defaultDaemonAddr, "Daemon service address to serve CLI requests [unix|tcp]://[path|host:port]") + startCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") + startCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") + + runCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") + runCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + + stopCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") + stopCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + + restartCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") + restartCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") +} + func (p *program) Start(svc service.Service) error { // Start should not block. Do the actual work async. log.Info("starting Netbird service") //nolint diff --git a/client/cmd/service_installer.go b/client/cmd/service_installer.go index 9e8c3c623..200afe283 100644 --- a/client/cmd/service_installer.go +++ b/client/cmd/service_installer.go @@ -2,13 +2,23 @@ package cmd import ( "context" + "fmt" "os" "path/filepath" "runtime" "github.com/spf13/cobra" + + "github.com/netbirdio/netbird/client/internal" ) +func init() { + installCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + installCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") + installCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") + installCmd.PersistentFlags().StringVarP(&managementURL, "management-url", "m", "", fmt.Sprintf("Management Service URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultManagementURL)) +} + var installCmd = &cobra.Command{ Use: "install", Short: "installs Netbird service", diff --git a/client/cmd/ssh.go b/client/cmd/ssh.go index d0f506ff8..2f728311d 100644 --- a/client/cmd/ssh.go +++ b/client/cmd/ssh.go @@ -23,6 +23,12 @@ var ( host string ) +func init() { + sshCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + sshCmd.PersistentFlags().IntVarP(&port, "port", "p", nbssh.DefaultSSHPort, "Sets remote SSH port. Defaults to "+fmt.Sprint(nbssh.DefaultSSHPort)) + sshCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") +} + var sshCmd = &cobra.Command{ Use: "ssh", Args: func(cmd *cobra.Command, args []string) error { @@ -114,7 +120,3 @@ func runSSH(ctx context.Context, addr string, pemKey []byte, cmd *cobra.Command) return nil } - -func init() { - sshCmd.PersistentFlags().IntVarP(&port, "port", "p", nbssh.DefaultSSHPort, "Sets remote SSH port. Defaults to "+fmt.Sprint(nbssh.DefaultSSHPort)) -} diff --git a/client/cmd/status.go b/client/cmd/status.go index 119944d08..a3da45fd1 100644 --- a/client/cmd/status.go +++ b/client/cmd/status.go @@ -83,6 +83,8 @@ var statusCmd = &cobra.Command{ func init() { ipsFilterMap = make(map[string]struct{}) + statusCmd.PersistentFlags().StringVar(&daemonAddr, "daemon-addr", defaultDaemonAddr, "Daemon service address to serve CLI requests [unix|tcp]://[path|host:port]") + statusCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") statusCmd.PersistentFlags().BoolVarP(&detailFlag, "detail", "d", false, "display detailed status information in human-readable format") statusCmd.PersistentFlags().BoolVar(&jsonFlag, "json", false, "display detailed status information in json format") statusCmd.PersistentFlags().BoolVar(&yamlFlag, "yaml", false, "display detailed status information in yaml format") diff --git a/client/cmd/up.go b/client/cmd/up.go index 375832a78..a4dcd701d 100644 --- a/client/cmd/up.go +++ b/client/cmd/up.go @@ -35,7 +35,29 @@ var ( ) func init() { + upCmd.PersistentFlags().StringVarP(&configPath, "config", "c", defaultConfigPath, "Netbird config file location") + upCmd.PersistentFlags().StringVar(&adminURL, "admin-url", "", fmt.Sprintf("Admin Panel URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultAdminURL)) + upCmd.PersistentFlags().StringVarP(&managementURL, "management-url", "m", "", fmt.Sprintf("Management Service URL [http|https]://[host]:[port] (default \"%s\")", internal.DefaultManagementURL)) + upCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "sets Netbird log level") + upCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout") upCmd.PersistentFlags().BoolVarP(&foregroundMode, "foreground-mode", "F", false, "start service in foreground") + upCmd.PersistentFlags().StringVar(&daemonAddr, "daemon-addr", defaultDaemonAddr, "Daemon service address to serve CLI requests [unix|tcp]://[path|host:port]") + upCmd.PersistentFlags().StringVarP(&hostName, "hostname", "n", "", "Sets a custom hostname for the device") + upCmd.PersistentFlags().StringVar(&preSharedKey, "preshared-key", "", "Sets Wireguard PreSharedKey property. If set, then only peers that have the same key can communicate.") + upCmd.PersistentFlags().StringVarP(&setupKey, "setup-key", "k", "", "Setup key obtained from the Management Service Dashboard (used to register peer)") + upCmd.PersistentFlags().StringSliceVar(&natExternalIPs, externalIPMapFlag, nil, + `Sets external IPs maps between local addresses and interfaces.`+ + `You can specify a comma-separated list with a single IP and IP/IP or IP/Interface Name. `+ + `An empty string "" clears the previous configuration. `+ + `E.g. --external-ip-map 12.34.56.78/10.0.0.1 or --external-ip-map 12.34.56.200,12.34.56.78/10.0.0.1,12.34.56.80/eth1 `+ + `or --external-ip-map ""`, + ) + upCmd.PersistentFlags().StringVar(&customDNSAddress, dnsResolverAddress, "", + `Sets a custom address for NetBird's local DNS resolver. `+ + `If set, the agent won't attempt to discover the best ip and port to listen on. `+ + `An empty string "" clears the previous configuration. `+ + `E.g. --dns-resolver-address 127.0.0.1:5053 or --dns-resolver-address ""`, + ) } func upFunc(cmd *cobra.Command, args []string) error {