50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"local/args"
|
|
"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
|
|
return nil
|
|
}
|
|
|
|
func parseArgs() (*args.ArgSet, error) {
|
|
as := args.NewArgSet()
|
|
|
|
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, "r", "rate per second for requests", 100)
|
|
as.Append(args.INT, "b", "burst requests", 100)
|
|
as.Append(args.STRING, "crt", "path to crt for ssl", "")
|
|
as.Append(args.STRING, "key", "path to key for ssl", "")
|
|
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 from,scheme://to.tld:port,oauth,,", "")
|
|
as.Append(args.STRING, "oauth", "url for boauthz", "")
|
|
|
|
err := as.Parse()
|
|
return as, err
|
|
}
|