63 lines
2.0 KiB
Go
Executable File
63 lines
2.0 KiB
Go
Executable File
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"gitea.inhome.blapointe.com/local/args"
|
|
"gitea.inhome.blapointe.com/local/logb"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
var conf *args.ArgSet
|
|
|
|
func init() {
|
|
if err := Refresh(); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func Refresh() error {
|
|
log.SetFlags(log.Ldate | log.Ltime | log.Llongfile)
|
|
log.SetFlags(log.Ltime | log.Lshortfile)
|
|
|
|
as, err := parseArgs()
|
|
if err != nil && !strings.Contains(fmt.Sprint(os.Args), "-test") {
|
|
return err
|
|
}
|
|
conf = as
|
|
logb.Set(logb.LevelFromString(as.GetString("level")))
|
|
return nil
|
|
}
|
|
|
|
func parseArgs() (*args.ArgSet, error) {
|
|
configFiles := []string{}
|
|
if v, ok := os.LookupEnv("CONFIG"); ok {
|
|
configFiles = strings.Split(v, ",")
|
|
}
|
|
as := args.NewArgSet(configFiles...)
|
|
|
|
as.Append(args.STRING, "user", "username for basic auth", "")
|
|
as.Append(args.STRING, "pass", "password for basic auth", "")
|
|
as.Append(args.INT, "p", "port for service", 51555)
|
|
as.Append(args.INT, "ap", "alt port for always http service", 51556)
|
|
as.Append(args.INT, "r", "rate per second for requests", 100)
|
|
as.Append(args.INT, "b", "burst requests", 100)
|
|
as.Append(args.BOOL, "compress", "enable compression", true)
|
|
as.Append(args.STRING, "crt", "path to crt for ssl", "")
|
|
as.Append(args.STRING, "key", "path to key for ssl", "")
|
|
as.Append(args.STRING, "trim", "path prefix to trim, like '/abc' to change '/abc/def' to '/def'", "")
|
|
as.Append(args.STRING, "tcp", "address for tcp only tunnel", "")
|
|
as.Append(args.DURATION, "timeout", "timeout for tunnel", time.Minute)
|
|
as.Append(args.STRING, "proxy", "double-comma separated (+ if auth)from,scheme://to.tld:port,,", "")
|
|
as.Append(args.STRING, "oauth", "url for boauthz", "")
|
|
as.Append(args.STRING, "authelia", "url for authelia", "")
|
|
as.Append(args.STRING, "cors", "json dict key:true for keys to set CORS permissive headers, like {\"from\":true}", "{}")
|
|
as.Append(args.STRING, "nopath", "json dict key:true for keys to remove all path info from forwarded request, like -cors", "{}")
|
|
as.Append(args.STRING, "level", "log level", "info")
|
|
|
|
err := as.Parse()
|
|
return as, err
|
|
}
|