mfproxy/config.go

42 lines
846 B
Go

package main
import (
"fmt"
"local/args"
"time"
"golang.org/x/time/rate"
)
type Config struct {
Listen string
Timeout time.Duration
TLSInsecure bool
Limiter *rate.Limiter
}
func NewConfig() *Config {
as := args.NewArgSet()
as.Append(args.INT, "p", "port to listen on", 61113)
as.Append(args.INT, "kbps", "kilobytes per sec limit", -1)
as.Append(args.BOOL, "tls-insecure", "permit tls insecure", false)
as.Append(args.DURATION, "t", "timeout", time.Minute)
if err := as.Parse(); err != nil {
panic(err)
}
var limiter *rate.Limiter
if kbps := as.GetInt("kbps"); kbps > 0 {
limiter = rate.NewLimiter(rate.Limit(kbps), 100*1024)
}
return &Config{
Listen: fmt.Sprintf(":%v", as.GetInt("p")),
Timeout: as.GetDuration("t"),
TLSInsecure: as.GetBool("tls-insecure"),
Limiter: limiter,
}
}