mirror of
https://github.com/yunginnanet/HellPot
synced 2024-06-28 08:40:48 +00:00
Broken: rebase changes from master
This commit is contained in:
parent
a8d38bbadd
commit
2735a76704
@ -5,14 +5,15 @@ import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
const (
|
||||
version = "0.3"
|
||||
title = "HellPot"
|
||||
Version = "0.3"
|
||||
Title = "HellPot"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -34,6 +35,7 @@ var (
|
||||
f *os.File
|
||||
err error
|
||||
|
||||
NoColor bool
|
||||
customconfig = false
|
||||
home string
|
||||
configLocations []string
|
||||
@ -58,7 +60,7 @@ func init() {
|
||||
if home, err = os.UserHomeDir(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
prefConfigLocation = home + "/.config/" + title
|
||||
prefConfigLocation = home + "/.config/" + Title
|
||||
Opt = make(map[string]map[string]interface{})
|
||||
snek = viper.New()
|
||||
}
|
||||
@ -83,34 +85,60 @@ func Init() {
|
||||
snek.AddConfigPath(loc)
|
||||
}
|
||||
|
||||
if err = snek.MergeInConfig(); err != nil {
|
||||
if err = snek.MergeInConfig(); err != nil && runtime.GOOS != "windows" {
|
||||
if _, err := os.Stat(prefConfigLocation); os.IsNotExist(err) {
|
||||
if err = os.Mkdir(prefConfigLocation, 0755); err != nil {
|
||||
println("error writing new config: " + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
newconfig := prefConfigLocation + "/" + "config.toml"
|
||||
|
||||
if err = snek.SafeWriteConfigAs(newconfig); err != nil {
|
||||
fmt.Println(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
Filename = newconfig
|
||||
}
|
||||
if err = snek.SafeWriteConfigAs(prefConfigLocation + "/" + "config.toml"); err != nil {
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
newconfig := "hellpot-config"
|
||||
snek.SetConfigName(newconfig)
|
||||
if err = snek.MergeInConfig(); err != nil {
|
||||
if err = snek.SafeWriteConfigAs(newconfig + ".toml"); err != nil {
|
||||
fmt.Println(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
Filename = newconfig
|
||||
}
|
||||
|
||||
if len(Filename) < 1 {
|
||||
Filename = snek.ConfigFileUsed()
|
||||
}
|
||||
|
||||
associate()
|
||||
}
|
||||
|
||||
func setDefaults() {
|
||||
var configSections = []string{"logger", "http"}
|
||||
var (
|
||||
configSections = []string{"logger", "http"}
|
||||
deflogdir = home + "/.config/" + Title + "/logs/"
|
||||
defNoColor = false
|
||||
)
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
deflogdir = "logs/"
|
||||
defNoColor = true
|
||||
}
|
||||
|
||||
Opt["logger"] = map[string]interface{}{
|
||||
"debug": true,
|
||||
"directory": home + "/.config/" + title + "/logs/",
|
||||
}
|
||||
Opt["data"] = map[string]interface{}{
|
||||
"directory": home + "/.config/" + title + "./.data/",
|
||||
"maxsizeobj": 20,
|
||||
"directory": deflogdir,
|
||||
"nocolor": defNoColor,
|
||||
"use_date_filename": true,
|
||||
}
|
||||
Opt["http"] = map[string]interface{}{
|
||||
"bind_addr": "127.0.0.1",
|
||||
@ -127,10 +155,14 @@ func setDefaults() {
|
||||
}
|
||||
|
||||
func acquireClue() {
|
||||
configLocations = append(configLocations, prefConfigLocation)
|
||||
configLocations = append(configLocations, "/etc/"+title+"/")
|
||||
configLocations = append(configLocations, "./")
|
||||
|
||||
if runtime.GOOS != "windows" {
|
||||
configLocations = append(configLocations, prefConfigLocation)
|
||||
configLocations = append(configLocations, "/etc/"+Title+"/")
|
||||
configLocations = append(configLocations, "../")
|
||||
configLocations = append(configLocations, "../../")
|
||||
}
|
||||
}
|
||||
|
||||
func loadCustomConfig(path string) {
|
||||
@ -155,6 +187,11 @@ func loadCustomConfig(path string) {
|
||||
func argParse() {
|
||||
for i, arg := range os.Args {
|
||||
switch arg {
|
||||
case "-h":
|
||||
println("HellPot: use -c <file.toml> to specify config file.")
|
||||
os.Exit(0)
|
||||
case "--config":
|
||||
fallthrough
|
||||
case "-c":
|
||||
if len(os.Args) <= i-1 {
|
||||
panic("syntax error! expected file after -c")
|
||||
@ -180,6 +217,7 @@ func associate() {
|
||||
Opt = newOpt
|
||||
Debug = snek.GetBool("logger.debug")
|
||||
logDir = snek.GetString("logger.directory")
|
||||
NoColor = snek.GetBool("logger.nocolor")
|
||||
BindAddr = snek.GetString("http.bind_addr")
|
||||
BindPort = snek.GetString("http.bind_port")
|
||||
Paths = snek.GetStringSlice("http.paths")
|
||||
|
@ -2,12 +2,14 @@ package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
var (
|
||||
CurrentLogFile string
|
||||
logFile *os.File
|
||||
logDir string
|
||||
logger zerolog.Logger
|
||||
@ -21,13 +23,23 @@ func StartLogger() zerolog.Logger {
|
||||
println("cannot create log directory: " + logDir + "(" + err.Error() + ")")
|
||||
os.Exit(1)
|
||||
}
|
||||
if logFile, err = os.OpenFile(logDir+time.Now().Format(time.RFC3339)+".log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666); err != nil {
|
||||
|
||||
tnow := "HellPot"
|
||||
|
||||
if snek.GetBool("logger.use_date_filename") {
|
||||
tnow = strings.Replace(time.Now().Format(time.RFC822), " ", "_", -1)
|
||||
tnow = strings.Replace(tnow, ":", "-", -1)
|
||||
}
|
||||
|
||||
CurrentLogFile = logDir + tnow + ".log"
|
||||
|
||||
if logFile, err = os.OpenFile(CurrentLogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666); err != nil {
|
||||
println("cannot create log file: " + err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
multi := zerolog.MultiLevelWriter(zerolog.ConsoleWriter{Out: os.Stderr}, logFile)
|
||||
logger = zerolog.New(multi).With().Timestamp().Logger()
|
||||
return logger
|
||||
|
||||
multi := zerolog.MultiLevelWriter(zerolog.ConsoleWriter{NoColor: NoColor, Out: os.Stdout}, logFile)
|
||||
return zerolog.New(multi).With().Timestamp().Logger()
|
||||
}
|
||||
|
||||
// GetLogger retrieves our global logger object
|
||||
|
File diff suppressed because one or more lines are too long
@ -33,16 +33,16 @@ func listenOnUnixSocket(addr string, srv *http.Server) error {
|
||||
func listen() {
|
||||
addr := config.BindAddr
|
||||
port := config.BindPort
|
||||
listenOnUnixDomain := true
|
||||
//listenOnUnixDomain := true
|
||||
|
||||
log.Info().Str("bind_addr", addr).Str("bind_port", port).
|
||||
Msg("Listening and serving HTTP...")
|
||||
|
||||
if !strings.HasPrefix(addr, "unix:") {
|
||||
/* if !strings.HasPrefix(addr, "unix:") {
|
||||
listenOnUnixDomain = false
|
||||
}
|
||||
|
||||
/* if listenOnUnixDomain {
|
||||
if listenOnUnixDomain {
|
||||
err = listenOnUnixSocket(addr, srv)
|
||||
} else {
|
||||
err = srv.ListenAndServe()
|
||||
|
Loading…
Reference in New Issue
Block a user