summary refs log tree commit diff stats
path: root/init.go
diff options
context:
space:
mode:
Diffstat (limited to 'init.go')
-rw-r--r--init.go80
1 files changed, 54 insertions, 26 deletions
diff --git a/init.go b/init.go
index f37968c..fdadca8 100644
--- a/init.go
+++ b/init.go
@@ -1,6 +1,7 @@
 package main
 
 import (
+	"fmt"
 	"log"
 	"os"
 	"time"
@@ -12,9 +13,10 @@ import (
 
 // command line flags
 var (
-	port      *int    = pflag.IntP("port", "p", 9001, "getwtxt will serve from this port")
-	logfile   *string = pflag.StringP("logfile", "l", "getwtxt.log", "File for logging output")
-	twtxtfile *string = pflag.StringP("twtxtfile", "f", "/var/twtxt/twtxt.txt", "Registry file for getwtxt")
+	port          *int    = pflag.IntP("port", "p", 9001, "getwtxt will serve from this port")
+	logfile       *string = pflag.StringP("logfile", "l", "getwtxt.log", "File for logging output")
+	twtxtfile     *string = pflag.StringP("twtxtfile", "f", "/var/twtxt/twtxt.txt", "Registry file for getwtxt")
+	stdoutLogging *bool   = pflag.BoolP("stdout", "o", true, "Log to stdout rather than to a file")
 )
 
 // config object
@@ -24,24 +26,23 @@ var confObj = &configuration{}
 var closelog = make(chan bool, 1)
 
 func init() {
-
+	titleScreen()
 	initConfig()
-
-	pflag.Parse()
-	viper.BindPFlags(pflag.CommandLine)
-
 	initLogging()
 }
 
 func initConfig() {
 
-	viper.SetConfigName("getwtxt")
+	pflag.Parse()
+	viper.BindPFlags(pflag.CommandLine)
 
+	viper.SetConfigName("getwtxt")
 	viper.AddConfigPath(".")
 	viper.AddConfigPath("/usr/local/getwtxt")
 	viper.AddConfigPath("/etc")
 	viper.AddConfigPath("/usr/local/etc")
 
+	log.Printf("Loading configuration ...\n")
 	if err := viper.ReadInConfig(); err != nil {
 		log.Printf("Error reading config file: %v\n", err)
 		log.Printf("Using defaults ...\n")
@@ -62,40 +63,67 @@ func initConfig() {
 	confObj.port = viper.GetInt("port")
 	confObj.logfile = viper.GetString("logfile")
 	confObj.twtxtfile = viper.GetString("twtxtfile")
+	confObj.stdoutLogging = viper.GetBool("stdoutLogging")
 }
 
 func initLogging() {
 
-	logfile, err := os.OpenFile(confObj.logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
-	if err != nil {
-		log.Printf("Could not open log file: %v\n", err)
-	}
+	// only open a log file if it's necessary
+	if !confObj.stdoutLogging {
 
-	// Listen for the signal to close the log file
-	// in a separate thread
-	go func() {
-		<-closelog
-		log.Printf("Closing log file ...\n")
-		err = logfile.Close()
+		logfile, err := os.OpenFile(confObj.logfile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
 		if err != nil {
-			log.Printf("Couldn't close log file: %v\n", err)
+			log.Printf("Could not open log file: %v\n", err)
 		}
-	}()
 
-	log.SetOutput(logfile)
+		// Listen for the signal to close the log file
+		// in a separate thread
+		go func() {
+			<-closelog
+			log.Printf("Closing log file ...\n")
+			err = logfile.Close()
+			if err != nil {
+				log.Printf("Couldn't close log file: %v\n", err)
+			}
+		}()
+
+		log.SetOutput(logfile)
+
+	} else {
+		log.SetOutput(os.Stdout)
+	}
 }
 
 func rebindConfig() {
 
+	// signal to close the log file then wait
+	if !confObj.stdoutLogging {
+		closelog <- true
+		time.Sleep(50 * time.Millisecond)
+	}
+
 	// reassign values to the config object
 	confObj.port = viper.GetInt("port")
 	confObj.logfile = viper.GetString("logfile")
 	confObj.twtxtfile = viper.GetString("twtxtfile")
-
-	// signal to close the log file then wait
-	closelog <- true
-	time.Sleep(50 * time.Millisecond)
+	confObj.stdoutLogging = viper.GetBool("stdoutLogging")
 
 	// reinitialize logging
 	initLogging()
 }
+
+func titleScreen() {
+	fmt.Printf(`
+	
+            _            _        _
+  __ _  ___| |___      _| |___  _| |_
+ / _  |/ _ \ __\ \ /\ / / __\ \/ / __|
+| (_| |  __/ |_ \ V  V /| |_ >  <| |_
+ \__, |\___|\__| \_/\_/  \__/_/\_\\__|
+ |___/
+             version ` + getwtxt + `
+      github.com/gbmor/getwtxt
+                GPL v3	
+			 
+`)
+}
id='n304' href='#n304'>304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350