From e1fc2f11d759dfbd615645e1cc79e8328b8caed6 Mon Sep 17 00:00:00 2001 From: sneak Date: Wed, 21 Aug 2019 10:31:57 +0200 Subject: [PATCH] now supports some basic configuration --- Makefile | 10 +++++++++- main.go | 29 ++++++++++++++++++++++++----- sircd.yaml | 1 + sircd/server.go | 2 +- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index b2d9530..661696d 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,19 @@ VERSION := $(shell git rev-parse --short HEAD) BUILDTIME := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') +BUILDUSER := $(shell whoami) +BUILDHOST := $(shell hostname -s) +BUILDARCH := $(shell uname -m) GOLDFLAGS += -X main.Version=$(VERSION) GOLDFLAGS += -X main.Buildtime=$(BUILDTIME) +GOLDFLAGS += -X main.Builduser=$(BUILDUSER)@$(BUILDHOST) +GOLDFLAGS += -X main.Buildarch=$(BUILDARCH) GOFLAGS = -ldflags "$(GOLDFLAGS)" -default: run +default: rundebug + +rundebug: build + DEBUG=1 ./ircd run: build ./ircd diff --git a/main.go b/main.go index 12f159d..38f2a6f 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,6 @@ package main +import "os" import "fmt" import "github.com/sirupsen/logrus" import "github.com/sneak/sircd/sircd" @@ -7,22 +8,22 @@ import "github.com/spf13/viper" var Version string var Buildtime string +var Builduser string +var Buildarch string func main() { - // set up logging - log := logrus.New() - log.SetLevel(logrus.DebugLevel) - log.SetReportCaller(true) - log.Println("sircd starting up") c := viper.New() // default config variables c.SetDefault("myhostname", "irc.example.com") c.SetDefault("network", "ExampleNet") c.SetDefault("admin", "webmaster@example.com") + c.SetDefault("loglevel", "info") c.SetDefault("version", Version) c.SetDefault("buildtime", Buildtime) + c.SetDefault("builduser", Builduser) + c.SetDefault("buildarch", Buildarch) // read config file c.SetConfigName("sircd") // name of config file (without extension) @@ -34,6 +35,24 @@ func main() { panic(fmt.Errorf("Fatal error config file: %s \n", err)) } + // this is the only config settable by env var by design + // do everything else in the config file + if os.Getenv("DEBUG") != "" { + c.Set("loglevel", "debug") + } + + // set up logging + log := logrus.New() + log.SetReportCaller(false) + switch c.GetString("loglevel") { + case "error": + log.SetLevel(logrus.ErrorLevel) + case "info": + log.SetLevel(logrus.InfoLevel) + default: + log.SetLevel(logrus.DebugLevel) + log.SetReportCaller(true) + } // instantiate server s := sircd.New(c) // give it our logger diff --git a/sircd.yaml b/sircd.yaml index 463ec90..5061f7b 100644 --- a/sircd.yaml +++ b/sircd.yaml @@ -1,3 +1,4 @@ myhostname: irc.example.com network: ExampleNet admin: webmaster@example.com +loglevel: info diff --git a/sircd/server.go b/sircd/server.go index 764ee97..1e227f3 100644 --- a/sircd/server.go +++ b/sircd/server.go @@ -43,7 +43,7 @@ func (s *ircd) SetServerName(name string) { } func (s *ircd) Start() { - s.log.Infof("sircd version=%s buildtime=%s starting.", s.c.GetString("version"), s.c.GetString("buildtime")) + s.log.Infof("sircd version %s (%s) built %s by %s starting.", s.c.GetString("version"), s.c.GetString("buildarch"), s.c.GetString("buildtime"), s.c.GetString("builduser")) s.newClients = make(chan *ircClient, 128) s.deadClients = make(chan *ircClient, 128) s.messageQueue = make(chan *ircMessage, 128)