summaryrefslogtreecommitdiff
path: root/cmd/dserver
diff options
context:
space:
mode:
authorPaul Bütow <pbuetow@mimecast.com>2020-01-20 18:41:05 +0000
committerPaul Bütow <pbuetow@mimecast.com>2020-01-21 14:35:23 +0000
commitc128865c4c7411c29a59fca9a3a2f95537686d7b (patch)
tree193bccc70d942c8b70cc93fae2670263701e43aa /cmd/dserver
parent3755a9911ecb05886577095f2b8cc8b9e4066a3a (diff)
Move commands to cmd/ and move internal dependencies to internal/
Diffstat (limited to 'cmd/dserver')
-rw-r--r--cmd/dserver/main.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/cmd/dserver/main.go b/cmd/dserver/main.go
new file mode 100644
index 0000000..489910b
--- /dev/null
+++ b/cmd/dserver/main.go
@@ -0,0 +1,69 @@
+package main
+
+import (
+ "flag"
+ "os"
+ "time"
+
+ "github.com/mimecast/dtail/internal/color"
+ "github.com/mimecast/dtail/internal/config"
+ "github.com/mimecast/dtail/internal/logger"
+ "github.com/mimecast/dtail/internal/pprof"
+ "github.com/mimecast/dtail/internal/server"
+ "github.com/mimecast/dtail/internal/user"
+ "github.com/mimecast/dtail/internal/version"
+)
+
+// The evil begins here.
+func main() {
+ var cfgFile string
+ var debugEnable bool
+ var displayVersion bool
+ var noColor bool
+ var pprofEnable bool
+ var shutdownAfter int
+ var sshPort int
+
+ userName := user.Name()
+
+ flag.BoolVar(&debugEnable, "debug", false, "Activate debug messages")
+ flag.BoolVar(&displayVersion, "version", false, "Display version")
+ flag.BoolVar(&noColor, "noColor", false, "Disable ANSII terminal colors")
+ flag.BoolVar(&pprofEnable, "pprofEnable", false, "Enable pprof server")
+ flag.IntVar(&shutdownAfter, "shutdownAfter", 0, "Automatically shutdown after so many seconds")
+ flag.IntVar(&sshPort, "port", 2222, "SSH server port")
+ flag.StringVar(&cfgFile, "cfg", "", "Config file path")
+
+ flag.Parse()
+
+ config.Read(cfgFile, sshPort)
+ color.Colored = !noColor
+
+ if displayVersion {
+ version.PrintAndExit()
+ }
+
+ serverEnable := true
+ silentEnable := false
+ nothingEnable := false
+ logger.Start(serverEnable, debugEnable, silentEnable, nothingEnable)
+ defer logger.Stop()
+
+ if shutdownAfter > 0 {
+ go func() {
+ defer os.Exit(1)
+
+ logger.Info("Enabling auto shutdown timer", shutdownAfter)
+ time.Sleep(time.Duration(shutdownAfter) * time.Second)
+ logger.Info("Auto shutdown timer reached, shutting down now")
+ }()
+ }
+
+ if pprofEnable || config.Common.PProfEnable {
+ pprof.Start()
+ }
+
+ logger.Info("Launching server", version.String(), userName)
+ sshServer := server.New()
+ sshServer.Start()
+}