now supports some basic configuration
This commit is contained in:
		
							parent
							
								
									f36da8dde9
								
							
						
					
					
						commit
						e1fc2f11d7
					
				
							
								
								
									
										10
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								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 | ||||
|  | ||||
							
								
								
									
										29
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								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
 | ||||
|  | ||||
| @ -1,3 +1,4 @@ | ||||
| myhostname: irc.example.com | ||||
| network: ExampleNet | ||||
| admin: webmaster@example.com | ||||
| loglevel: info | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user