mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-22 16:13:31 +01:00
966661fe91
This PR is a part of an effort to use standard ports (443 or 80) that are usually allowed by default in most of the environments. Right now Management Service runs the Let'sEncrypt manager on port 443, HTTP API server on port 33071, and a gRPC server on port 33073. There are three separate listeners. This PR combines these listeners into one. With this change, the HTTP and gRPC server runs on either 443 with TLS or 80 without TLS by default (no --port specified). Let's Encrypt manager always runs on port 443 if enabled. The backward compatibility server runs on port 33073 (with TLS or without). HTTP port 33071 is obsolete and not used anymore. Newly installed agents will connect to port 443 by default instead of port 33073 if not specified otherwise.
87 lines
3.1 KiB
Go
87 lines
3.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/spf13/cobra"
|
|
"os"
|
|
"os/signal"
|
|
)
|
|
|
|
const (
|
|
// ExitSetupFailed defines exit code
|
|
ExitSetupFailed = 1
|
|
)
|
|
|
|
var (
|
|
defaultMgmtConfigDir string
|
|
defaultMgmtDataDir string
|
|
defaultMgmtConfig string
|
|
defaultLogDir string
|
|
defaultLogFile string
|
|
oldDefaultMgmtConfigDir string
|
|
oldDefaultMgmtDataDir string
|
|
oldDefaultMgmtConfig string
|
|
oldDefaultLogDir string
|
|
oldDefaultLogFile string
|
|
mgmtDataDir string
|
|
mgmtConfig string
|
|
logLevel string
|
|
logFile string
|
|
|
|
rootCmd = &cobra.Command{
|
|
Use: "netbird-mgmt",
|
|
Short: "",
|
|
Long: "",
|
|
}
|
|
|
|
// Execution control channel for stopCh signal
|
|
stopCh chan int
|
|
)
|
|
|
|
// Execute executes the root command.
|
|
func Execute() error {
|
|
return rootCmd.Execute()
|
|
}
|
|
|
|
func init() {
|
|
stopCh = make(chan int)
|
|
|
|
defaultMgmtDataDir = "/var/lib/netbird/"
|
|
defaultMgmtConfigDir = "/etc/netbird"
|
|
defaultLogDir = "/var/log/netbird"
|
|
|
|
oldDefaultMgmtDataDir = "/var/lib/wiretrustee/"
|
|
oldDefaultMgmtConfigDir = "/etc/wiretrustee"
|
|
oldDefaultLogDir = "/var/log/wiretrustee"
|
|
|
|
defaultMgmtConfig = defaultMgmtConfigDir + "/management.json"
|
|
defaultLogFile = defaultLogDir + "/management.log"
|
|
|
|
oldDefaultMgmtConfig = oldDefaultMgmtConfigDir + "/management.json"
|
|
oldDefaultLogFile = oldDefaultLogDir + "/management.log"
|
|
|
|
mgmtCmd.Flags().IntVar(&mgmtPort, "port", 80, "server port to listen on (defaults to 443 if TLS is enabled, 80 otherwise")
|
|
mgmtCmd.Flags().StringVar(&mgmtDataDir, "datadir", defaultMgmtDataDir, "server data directory location")
|
|
mgmtCmd.Flags().StringVar(&mgmtConfig, "config", defaultMgmtConfig, "Netbird config file location. Config params specified via command line (e.g. datadir) have a precedence over configuration from this file")
|
|
mgmtCmd.Flags().StringVar(&mgmtLetsencryptDomain, "letsencrypt-domain", "", "a domain to issue Let's Encrypt certificate for. Enables TLS using Let's Encrypt. Will fetch and renew certificate, and run the server with TLS")
|
|
mgmtCmd.Flags().StringVar(&certFile, "cert-file", "", "Location of your SSL certificate. Can be used when you have an existing certificate and don't want a new certificate be generated automatically. If letsencrypt-domain is specified this property has no effect")
|
|
mgmtCmd.Flags().StringVar(&certKey, "cert-key", "", "Location of your SSL certificate private key. Can be used when you have an existing certificate and don't want a new certificate be generated automatically. If letsencrypt-domain is specified this property has no effect")
|
|
rootCmd.MarkFlagRequired("config") //nolint
|
|
|
|
rootCmd.PersistentFlags().StringVar(&logLevel, "log-level", "info", "")
|
|
rootCmd.PersistentFlags().StringVar(&logFile, "log-file", defaultLogFile, "sets Netbird log path. If console is specified the the log will be output to stdout")
|
|
rootCmd.AddCommand(mgmtCmd)
|
|
}
|
|
|
|
// 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
|
|
}
|
|
}()
|
|
}
|