summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-09-19 13:22:59 +0300
committerPaul Buetow <paul@buetow.org>2021-10-02 12:26:29 +0300
commitfe3e68afd99d8ea246be52893730f987e138ec24 (patch)
tree726e0914730912e0a3b223f7b37facc05ba31140 /cmd
parentabeac87aec44249bf67f1b0eca471a31086265ca (diff)
move args to config package
logger package rewrite as dlog
Diffstat (limited to 'cmd')
-rw-r--r--cmd/dcat/main.go35
-rw-r--r--cmd/dgrep/main.go35
-rw-r--r--cmd/dmap/main.go39
-rw-r--r--cmd/dserver/main.go37
-rw-r--r--cmd/dtail/main.go47
5 files changed, 95 insertions, 98 deletions
diff --git a/cmd/dcat/main.go b/cmd/dcat/main.go
index 63b4b61..d5dfba4 100644
--- a/cmd/dcat/main.go
+++ b/cmd/dcat/main.go
@@ -4,10 +4,11 @@ import (
"context"
"flag"
"os"
+ "sync"
"github.com/mimecast/dtail/internal/clients"
"github.com/mimecast/dtail/internal/config"
- "github.com/mimecast/dtail/internal/io/logger"
+ "github.com/mimecast/dtail/internal/io/dlog"
"github.com/mimecast/dtail/internal/io/signal"
"github.com/mimecast/dtail/internal/user"
"github.com/mimecast/dtail/internal/version"
@@ -15,33 +16,28 @@ import (
// The evil begins here.
func main() {
- var args clients.Args
- var cfgFile string
- var debugEnable bool
+ var args config.Args
var displayVersion bool
- var sshPort int
userName := user.Name()
+ flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.BoolVar(&args.Quiet, "quiet", false, "Quiet output mode")
flag.BoolVar(&args.Spartan, "spartan", false, "Spartan output mode")
- flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Auto trust all unknown host keys")
- flag.BoolVar(&debugEnable, "debug", false, "Activate debug messages")
+ flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Trust all unknown host keys")
flag.BoolVar(&displayVersion, "version", false, "Display version")
- flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.IntVar(&args.ConnectionsPerCPU, "cpc", 10, "How many connections established per CPU core concurrently")
- flag.IntVar(&sshPort, "port", 2222, "SSH server port")
+ flag.IntVar(&args.SSHPort, "port", 2222, "SSH server port")
+ flag.StringVar(&args.ConfigFile, "cfg", "", "Config file path")
flag.StringVar(&args.Discovery, "discovery", "", "Server discovery method")
+ flag.StringVar(&args.LogLevel, "logLevel", "", "Log level")
flag.StringVar(&args.PrivateKeyPathFile, "key", "", "Path to private key")
flag.StringVar(&args.ServersStr, "servers", "", "Remote servers to connect")
flag.StringVar(&args.UserName, "user", userName, "Your system user name")
flag.StringVar(&args.What, "files", "", "File(s) to read")
- flag.StringVar(&cfgFile, "cfg", "", "Config file path")
flag.Parse()
- args.Transform(flag.Args())
- config.Read(cfgFile, sshPort, args.NoColor)
- args.TransformAfterConfigFile()
+ config.Setup(&args, flag.Args())
if displayVersion {
version.PrintAndExit()
@@ -50,11 +46,10 @@ func main() {
version.Print()
}
- ctx := context.TODO()
- logger.Start(ctx, logger.Modes{
- Debug: debugEnable || config.Common.DebugEnable,
- Quiet: args.Quiet,
- })
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ dlog.Start(ctx, &wg, dlog.CLIENT, config.Common.LogLevel)
client, err := clients.NewCatClient(args)
if err != nil {
@@ -62,6 +57,8 @@ func main() {
}
status := client.Start(ctx, signal.InterruptCh(ctx))
- logger.Flush()
+ cancel()
+
+ wg.Wait()
os.Exit(status)
}
diff --git a/cmd/dgrep/main.go b/cmd/dgrep/main.go
index 7b96472..c6bece0 100644
--- a/cmd/dgrep/main.go
+++ b/cmd/dgrep/main.go
@@ -4,10 +4,11 @@ import (
"context"
"flag"
"os"
+ "sync"
"github.com/mimecast/dtail/internal/clients"
"github.com/mimecast/dtail/internal/config"
- "github.com/mimecast/dtail/internal/io/logger"
+ "github.com/mimecast/dtail/internal/io/dlog"
"github.com/mimecast/dtail/internal/io/signal"
"github.com/mimecast/dtail/internal/user"
"github.com/mimecast/dtail/internal/version"
@@ -15,37 +16,32 @@ import (
// The evil begins here.
func main() {
- var args clients.Args
- var cfgFile string
- var debugEnable bool
+ var args config.Args
var displayVersion bool
var grep string
- var sshPort int
userName := user.Name()
+ flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.BoolVar(&args.Quiet, "quiet", false, "Quiet output mode")
flag.BoolVar(&args.RegexInvert, "invert", false, "Invert regex")
flag.BoolVar(&args.Spartan, "spartan", false, "Spartan output mode")
- flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Auto trust all unknown host keys")
- flag.BoolVar(&debugEnable, "debug", false, "Activate debug messages")
+ flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Trust all unknown host keys")
flag.BoolVar(&displayVersion, "version", false, "Display version")
- flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.IntVar(&args.ConnectionsPerCPU, "cpc", 10, "How many connections established per CPU core concurrently")
- flag.IntVar(&sshPort, "port", 2222, "SSH server port")
+ flag.IntVar(&args.SSHPort, "port", 2222, "SSH server port")
+ flag.StringVar(&args.ConfigFile, "cfg", "", "Config file path")
flag.StringVar(&args.Discovery, "discovery", "", "Server discovery method")
+ flag.StringVar(&args.LogLevel, "logLevel", "", "Log level")
flag.StringVar(&args.PrivateKeyPathFile, "key", "", "Path to private key")
flag.StringVar(&args.RegexStr, "regex", ".", "Regular expression")
flag.StringVar(&args.ServersStr, "servers", "", "Remote servers to connect")
flag.StringVar(&args.UserName, "user", userName, "Your system user name")
flag.StringVar(&args.What, "files", "", "File(s) to read")
- flag.StringVar(&cfgFile, "cfg", "", "Config file path")
flag.StringVar(&grep, "grep", "", "Alias for -regex")
flag.Parse()
- args.Transform(flag.Args())
- config.Read(cfgFile, sshPort, args.NoColor)
- args.TransformAfterConfigFile()
+ config.Setup(&args, flag.Args())
if displayVersion {
version.PrintAndExit()
@@ -54,11 +50,10 @@ func main() {
version.Print()
}
- ctx := context.TODO()
- logger.Start(ctx, logger.Modes{
- Debug: debugEnable || config.Common.DebugEnable,
- Quiet: args.Quiet,
- })
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ dlog.Start(ctx, &wg, dlog.CLIENT, args.LogLevel)
if grep != "" {
args.RegexStr = grep
@@ -70,6 +65,8 @@ func main() {
}
status := client.Start(ctx, signal.InterruptCh(ctx))
- logger.Flush()
+ cancel()
+
+ wg.Wait()
os.Exit(status)
}
diff --git a/cmd/dmap/main.go b/cmd/dmap/main.go
index 4525503..061d859 100644
--- a/cmd/dmap/main.go
+++ b/cmd/dmap/main.go
@@ -4,10 +4,11 @@ import (
"context"
"flag"
"os"
+ "sync"
"github.com/mimecast/dtail/internal/clients"
"github.com/mimecast/dtail/internal/config"
- "github.com/mimecast/dtail/internal/io/logger"
+ "github.com/mimecast/dtail/internal/io/dlog"
"github.com/mimecast/dtail/internal/io/signal"
"github.com/mimecast/dtail/internal/omode"
"github.com/mimecast/dtail/internal/user"
@@ -16,39 +17,36 @@ import (
// The evil begins here.
func main() {
- var cfgFile string
- var debugEnable bool
var displayVersion bool
var queryStr string
- var sshPort int
- args := clients.Args{
+ args := config.Args{
Mode: omode.MapClient,
}
userName := user.Name()
+ flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.BoolVar(&args.Quiet, "quiet", false, "Quiet output mode")
flag.BoolVar(&args.Spartan, "spartan", false, "Spartan output mode")
- flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Auto trust all unknown host keys")
- flag.BoolVar(&debugEnable, "debug", false, "Activate debug messages")
+ flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Trust all unknown host keys")
flag.BoolVar(&displayVersion, "version", false, "Display version")
- flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
+ // TODO: Make ConnectionsPerCPU default value as a constant in config package.
flag.IntVar(&args.ConnectionsPerCPU, "cpc", 10, "How many connections established per CPU core concurrently")
+ // TODO: make default ssh port a constant in the config package.
+ flag.IntVar(&args.SSHPort, "port", 2222, "SSH server port")
flag.IntVar(&args.Timeout, "timeout", 0, "Max time dtail server will collect data until disconnection")
- flag.IntVar(&sshPort, "port", 2222, "SSH server port")
+ flag.StringVar(&args.ConfigFile, "cfg", "", "Config file path")
flag.StringVar(&args.Discovery, "discovery", "", "Server discovery method")
+ flag.StringVar(&args.LogLevel, "logLevel", "", "Log level")
flag.StringVar(&args.PrivateKeyPathFile, "key", "", "Path to private key")
flag.StringVar(&args.ServersStr, "servers", "", "Remote servers to connect")
flag.StringVar(&args.UserName, "user", userName, "Your system user name")
flag.StringVar(&args.What, "files", "", "File(s) to read")
- flag.StringVar(&cfgFile, "cfg", "", "Config file path")
flag.StringVar(&queryStr, "query", "", "Map reduce query")
flag.Parse()
- args.Transform(flag.Args())
- config.Read(cfgFile, sshPort, args.NoColor)
- args.TransformAfterConfigFile()
+ config.Setup(&args, flag.Args())
if displayVersion {
version.PrintAndExit()
@@ -57,18 +55,19 @@ func main() {
version.Print()
}
- ctx := context.TODO()
- logger.Start(ctx, logger.Modes{
- Debug: debugEnable || config.Common.DebugEnable,
- Quiet: args.Quiet,
- })
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ dlog.Start(ctx, &wg, dlog.CLIENT, config.Common.LogLevel)
client, err := clients.NewMaprClient(args, queryStr, clients.DefaultMode)
if err != nil {
- logger.FatalExit(err)
+ dlog.Client.FatalPanic(err)
}
status := client.Start(ctx, signal.InterruptCh(ctx))
- logger.Flush()
+ cancel()
+
+ wg.Wait()
os.Exit(status)
}
diff --git a/cmd/dserver/main.go b/cmd/dserver/main.go
index bc3cb91..5788a87 100644
--- a/cmd/dserver/main.go
+++ b/cmd/dserver/main.go
@@ -9,11 +9,12 @@ import (
_ "net/http/pprof"
"os"
"os/signal"
+ "sync"
"syscall"
"time"
"github.com/mimecast/dtail/internal/config"
- "github.com/mimecast/dtail/internal/io/logger"
+ "github.com/mimecast/dtail/internal/io/dlog"
"github.com/mimecast/dtail/internal/server"
"github.com/mimecast/dtail/internal/user"
"github.com/mimecast/dtail/internal/version"
@@ -21,31 +22,31 @@ import (
// The evil begins here.
func main() {
- var cfgFile string
+ var args config.Args
var color bool
- var debugEnable bool
var displayVersion bool
var logDir string
var pprof int
var shutdownAfter int
- var sshPort int
user.NoRootCheck()
flag.BoolVar(&color, "color", false, "Enable ANSII terminal colors")
flag.BoolVar(&config.ServerRelaxedAuthEnable, "relaxedAuth", false, "Enable relaxced SSH auth mode (don't use in production!)")
- flag.BoolVar(&debugEnable, "debug", false, "Activate debug messages")
flag.BoolVar(&displayVersion, "version", false, "Display version")
+ flag.IntVar(&args.SSHPort, "port", 2222, "SSH server port")
flag.IntVar(&pprof, "pprof", -1, "Start PProf server this port")
- 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.IntVar(&shutdownAfter, "shutdownAfter", 0, "Shutdown after so many seconds")
+ flag.StringVar(&args.ConfigFile, "cfg", "", "Config file path")
+ flag.StringVar(&args.LogLevel, "logLevel", "", "Log level")
flag.StringVar(&logDir, "logDir", "", "Log dir path")
flag.Parse()
- config.Read(cfgFile, sshPort, !color)
+ args.NoColor = !color
+ config.Setup(&args, flag.Args())
if logDir != "" {
+ // TODO: Re-Implement log strategy support.
config.Common.LogDir = logDir
if config.Common.LogStrategy == "" {
config.Common.LogStrategy = "daily"
@@ -73,25 +74,25 @@ func main() {
}
}()
- if debugEnable {
- config.Common.DebugEnable = true
- }
-
- logger.Start(ctx, logger.Modes{Server: true, Debug: debugEnable || config.Common.DebugEnable})
+ var wg sync.WaitGroup
+ wg.Add(1)
+ dlog.Start(ctx, &wg, dlog.SERVER, config.Common.LogLevel)
if config.ServerRelaxedAuthEnable {
- logger.Fatal("SSH relaxed-auth mode enabled")
+ dlog.Server.Fatal("SSH relaxed-auth mode enabled")
}
if pprof > -1 {
- // For debugging purposes only
+ // Start of pprof server for development purposes only.
pprofArgs := fmt.Sprintf("0.0.0.0:%d", pprof)
- logger.Info("Starting PProf", pprofArgs)
+ dlog.Server.Info("Starting PProf", pprofArgs)
go http.ListenAndServe(pprofArgs, nil)
}
serv := server.New()
status := serv.Start(ctx)
- logger.Flush()
+ cancel()
+
+ wg.Wait()
os.Exit(status)
}
diff --git a/cmd/dtail/main.go b/cmd/dtail/main.go
index 5c2d393..dcf1fab 100644
--- a/cmd/dtail/main.go
+++ b/cmd/dtail/main.go
@@ -8,12 +8,13 @@ import (
_ "net/http"
_ "net/http/pprof"
"os"
+ "sync"
"time"
"github.com/mimecast/dtail/internal/clients"
"github.com/mimecast/dtail/internal/color"
"github.com/mimecast/dtail/internal/config"
- "github.com/mimecast/dtail/internal/io/logger"
+ "github.com/mimecast/dtail/internal/io/dlog"
"github.com/mimecast/dtail/internal/io/signal"
"github.com/mimecast/dtail/internal/omode"
"github.com/mimecast/dtail/internal/user"
@@ -22,41 +23,41 @@ import (
// The evil begins here.
func main() {
- var args clients.Args
- var cfgFile string
+ var args config.Args
var checkHealth bool
- var debugEnable bool
var displayColorTable bool
+ var displayWideColorTable bool
var displayVersion bool
var grep string
var pprof int
var queryStr string
var shutdownAfter int
- var sshPort int
userName := user.Name()
+ flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.BoolVar(&args.Quiet, "quiet", false, "Quiet output mode")
flag.BoolVar(&args.RegexInvert, "invert", false, "Invert regex")
flag.BoolVar(&args.Spartan, "spartan", false, "Spartan output mode")
- flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Auto trust all unknown host keys")
+ flag.BoolVar(&args.TrustAllHosts, "trustAllHosts", false, "Trust all unknown host keys")
+ // TODO: Check whether the health check still works.
flag.BoolVar(&checkHealth, "checkHealth", false, "Only check for server health")
- flag.BoolVar(&debugEnable, "debug", false, "Activate debug messages")
flag.BoolVar(&displayColorTable, "colorTable", false, "Show color table")
+ flag.BoolVar(&displayWideColorTable, "wideColorTable", false, "Show a large color table")
flag.BoolVar(&displayVersion, "version", false, "Display version")
- flag.BoolVar(&args.NoColor, "noColor", false, "Disable ANSII terminal colors")
flag.IntVar(&args.ConnectionsPerCPU, "cpc", 10, "How many connections established per CPU core concurrently")
+ flag.IntVar(&args.SSHPort, "port", 2222, "SSH server port")
flag.IntVar(&args.Timeout, "timeout", 0, "Max time dtail server will collect data until disconnection")
flag.IntVar(&pprof, "pprof", -1, "Start PProf server this port")
- flag.IntVar(&shutdownAfter, "shutdownAfter", 3600*24, "Automatically shutdown after so many seconds")
- flag.IntVar(&sshPort, "port", 2222, "SSH server port")
+ flag.IntVar(&shutdownAfter, "shutdownAfter", 3600*24, "Shutdown after so many seconds")
+ flag.StringVar(&args.ConfigFile, "cfg", "", "Config file path")
flag.StringVar(&args.Discovery, "discovery", "", "Server discovery method")
+ flag.StringVar(&args.LogLevel, "logLevel", "", "Log level")
flag.StringVar(&args.PrivateKeyPathFile, "key", "", "Path to private key")
flag.StringVar(&args.RegexStr, "regex", ".", "Regular expression")
flag.StringVar(&args.ServersStr, "servers", "", "Remote servers to connect")
flag.StringVar(&args.UserName, "user", userName, "Your system user name")
flag.StringVar(&args.What, "files", "", "File(s) to read")
- flag.StringVar(&cfgFile, "cfg", "", "Config file path")
flag.StringVar(&grep, "grep", "", "Alias for -regex")
flag.StringVar(&queryStr, "query", "", "Map reduce query")
@@ -64,22 +65,22 @@ func main() {
if grep != "" {
args.RegexStr = grep
}
- args.Transform(flag.Args())
- config.Read(cfgFile, sshPort, args.NoColor)
- args.TransformAfterConfigFile()
+ config.Setup(&args, flag.Args())
if displayVersion {
version.PrintAndExit()
}
if !args.Spartan {
version.Print()
+ if displayWideColorTable {
+ color.TablePrintAndExit(true)
+ }
if displayColorTable {
- color.TablePrintAndExit(debugEnable)
+ color.TablePrintAndExit(false)
}
}
ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
if shutdownAfter > 0 {
ctx, cancel = context.WithTimeout(ctx, time.Duration(shutdownAfter)*time.Second)
@@ -88,19 +89,19 @@ func main() {
if checkHealth {
healthClient, _ := clients.NewHealthClient(omode.HealthClient)
+ cancel()
os.Exit(healthClient.Start(ctx))
}
- logger.Start(ctx, logger.Modes{
- Debug: debugEnable || config.Common.DebugEnable,
- Quiet: args.Quiet,
- })
+ var wg sync.WaitGroup
+ wg.Add(1)
+ dlog.Start(ctx, &wg, dlog.CLIENT, config.Common.LogLevel)
if pprof > -1 {
// For debugging purposes only
pprofArgs := fmt.Sprintf("0.0.0.0:%d", pprof)
go http.ListenAndServe(pprofArgs, nil)
- logger.Info("Started PProf", pprofArgs)
+ dlog.Client.Info("Started PProf", pprofArgs)
}
var client clients.Client
@@ -119,6 +120,8 @@ func main() {
}
status := client.Start(ctx, signal.InterruptCh(ctx))
- logger.Flush()
+ cancel()
+
+ wg.Wait()
os.Exit(status)
}