1
4
mirror of https://github.com/yunginnanet/HellPot synced 2024-06-24 23:08:03 +00:00

Broken: rebase changes from master

This commit is contained in:
kayos@tcp.direct 2021-09-15 07:04:16 -07:00
parent a8d38bbadd
commit 2735a76704
4 changed files with 84 additions and 24 deletions

@ -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())
os.Exit(1)
}
}
if err = snek.SafeWriteConfigAs(prefConfigLocation + "/" + "config.toml"); err != nil {
newconfig := prefConfigLocation + "/" + "config.toml"
if err = snek.SafeWriteConfigAs(newconfig); err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
Filename = newconfig
}
Filename = snek.ConfigFileUsed()
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,
"debug": true,
"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, "./")
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()