doggo/cmd/hub.go

66 lines
1.5 KiB
Go
Raw Normal View History

2020-12-09 18:11:09 +01:00
package main
import (
2020-12-10 17:14:04 +01:00
"github.com/miekg/dns"
2020-12-11 12:18:54 +01:00
"github.com/mr-karan/doggo/pkg/resolvers"
2020-12-09 18:11:09 +01:00
"github.com/sirupsen/logrus"
2020-12-10 10:39:05 +01:00
"github.com/urfave/cli/v2"
2020-12-09 18:11:09 +01:00
)
// Hub represents the structure for all app wide functions and structs.
type Hub struct {
2020-12-10 17:14:04 +01:00
Logger *logrus.Logger
Version string
QueryFlags QueryFlags
Questions []dns.Question
2020-12-11 12:18:54 +01:00
Resolver resolvers.Resolver
2020-12-10 17:14:04 +01:00
}
// QueryFlags is used store the value of CLI flags.
type QueryFlags struct {
2020-12-13 04:17:07 +01:00
QNames *cli.StringSlice
QTypes *cli.StringSlice
QClasses *cli.StringSlice
Nameservers *cli.StringSlice
IsDOH bool
IsDOT bool
IsUDP bool
UseTCP bool
UseIPv4 bool
UseIPv6 bool
DisplayTimeTaken bool
2020-12-09 18:11:09 +01:00
}
// NewHub initializes an instance of Hub which holds app wide configuration.
func NewHub(logger *logrus.Logger, buildVersion string) *Hub {
2020-12-10 17:14:04 +01:00
// Initialise Resolver
2020-12-09 18:11:09 +01:00
hub := &Hub{
Logger: logger,
Version: buildVersion,
2020-12-10 17:14:04 +01:00
QueryFlags: QueryFlags{
QNames: cli.NewStringSlice(),
QTypes: cli.NewStringSlice(),
QClasses: cli.NewStringSlice(),
Nameservers: cli.NewStringSlice(),
},
2020-12-09 18:11:09 +01:00
}
return hub
}
2020-12-13 04:17:07 +01:00
// initLogger initializes logger
func initLogger(verbose bool) *logrus.Logger {
logger := logrus.New()
logger.SetFormatter(&logrus.TextFormatter{
DisableTimestamp: true,
DisableLevelTruncation: true,
})
// Set logger level
if verbose {
logger.SetLevel(logrus.DebugLevel)
logger.Debug("verbose logging enabled")
} else {
logger.SetLevel(logrus.InfoLevel)
}
return logger
}