mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 01:15:41 +08:00
general: use string slice instead of custom arrFlags type.
This commit is contained in:
parent
085e6ba040
commit
ed788fd1c7
31
main.go
31
main.go
@ -19,9 +19,9 @@ var conf struct {
|
||||
Strategy string
|
||||
CheckWebSite string
|
||||
CheckDuration int
|
||||
Listen arrFlags
|
||||
Forward arrFlags
|
||||
RuleFile arrFlags
|
||||
Listen []string
|
||||
Forward []string
|
||||
RuleFile []string
|
||||
}
|
||||
|
||||
var flag = conflag.New()
|
||||
@ -108,34 +108,15 @@ func usage() {
|
||||
fmt.Fprintf(os.Stderr, "\n")
|
||||
}
|
||||
|
||||
type arrFlags []string
|
||||
|
||||
// implement flag.Value interface
|
||||
func (i *arrFlags) String() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// implement flag.Value interface
|
||||
func (i *arrFlags) Set(value string) error {
|
||||
// for _, v := range *i {
|
||||
// if v == value {
|
||||
// return nil
|
||||
// }
|
||||
// }
|
||||
|
||||
*i = append(*i, value)
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
flag.BoolVar(&conf.Verbose, "verbose", false, "verbose mode")
|
||||
flag.StringVar(&conf.Strategy, "strategy", "rr", "forward strategy, default: rr")
|
||||
flag.StringVar(&conf.CheckWebSite, "checkwebsite", "www.apple.com", "proxy check HTTP(NOT HTTPS) website address, format: HOST[:PORT], default port: 80")
|
||||
flag.IntVar(&conf.CheckDuration, "checkduration", 30, "proxy check duration(seconds)")
|
||||
flag.Var(&conf.Listen, "listen", "listen url, format: SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT")
|
||||
flag.Var(&conf.Forward, "forward", "forward url, format: SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT[,SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT]")
|
||||
flag.Var(&conf.RuleFile, "rulefile", "rule file path")
|
||||
flag.StringSliceVar(&conf.Listen, "listen", nil, "listen url, format: SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT")
|
||||
flag.StringSliceVar(&conf.Forward, "forward", nil, "forward url, format: SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT[,SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT]")
|
||||
flag.StringSliceVar(&conf.RuleFile, "rulefile", nil, "rule file path")
|
||||
|
||||
flag.Usage = usage
|
||||
err := flag.Parse()
|
||||
|
16
rule.go
16
rule.go
@ -11,14 +11,14 @@ import (
|
||||
|
||||
// ruleForwarder, every ruleForwarder points to a rule file
|
||||
type ruleForwarder struct {
|
||||
Forward arrFlags
|
||||
Forward []string
|
||||
Strategy string
|
||||
CheckWebSite string
|
||||
CheckDuration int
|
||||
|
||||
Domain arrFlags
|
||||
IP arrFlags
|
||||
CIDR arrFlags
|
||||
Domain []string
|
||||
IP []string
|
||||
CIDR []string
|
||||
|
||||
name string
|
||||
Proxy
|
||||
@ -29,14 +29,14 @@ func newRuleProxyFromFile(ruleFile string) (*ruleForwarder, error) {
|
||||
p := &ruleForwarder{name: ruleFile}
|
||||
|
||||
f := conflag.NewFromFile("rule", ruleFile)
|
||||
f.Var(&p.Forward, "forward", "forward url, format: SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT[,SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT]")
|
||||
f.StringSliceVar(&p.Forward, "forward", nil, "forward url, format: SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT[,SCHEMA://[USER|METHOD:PASSWORD@][HOST]:PORT]")
|
||||
f.StringVar(&p.Strategy, "strategy", "rr", "forward strategy, default: rr")
|
||||
f.StringVar(&p.CheckWebSite, "checkwebsite", "www.apple.com", "proxy check HTTP(NOT HTTPS) website address, format: HOST[:PORT], default port: 80")
|
||||
f.IntVar(&p.CheckDuration, "checkduration", 30, "proxy check duration(seconds)")
|
||||
|
||||
f.Var(&p.Domain, "domain", "domain")
|
||||
f.Var(&p.IP, "ip", "ip")
|
||||
f.Var(&p.CIDR, "cidr", "cidr")
|
||||
f.StringSliceVar(&p.Domain, "domain", nil, "domain")
|
||||
f.StringSliceVar(&p.IP, "ip", nil, "ip")
|
||||
f.StringSliceVar(&p.CIDR, "cidr", nil, "cidr")
|
||||
|
||||
err := f.Parse()
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user