From 0d98dd3d6c611730e9c624e57455800d9c04467c Mon Sep 17 00:00:00 2001 From: "rui.zheng" Date: Wed, 10 Jun 2015 11:24:58 +0800 Subject: [PATCH] bug fix, connect failed when no forward proxy --- main.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/main.go b/main.go index 658a871..3b0d5fb 100644 --- a/main.go +++ b/main.go @@ -18,8 +18,10 @@ var ( Method, Password string CertFile, KeyFile string PrintVersion bool + Filter string proxyURL *url.URL + filters []string ) func init() { @@ -35,12 +37,14 @@ func init() { flag.BoolVar(&UseHttp, "http", false, "use http tunnel") flag.StringVar(&SMethod, "sm", "rc4-md5", "shadowsocks cipher method") flag.StringVar(&SPassword, "sp", "ginuerzh@gmail.com", "shadowsocks cipher password") + flag.StringVar(&Filter, "f", "", "comma separated host/url wildcard not go through tunnel") flag.BoolVar(&PrintVersion, "v", false, "print version") flag.Parse() log.SetFlags(log.LstdFlags | log.Lshortfile) proxyURL, _ = parseURL(Proxy) + filters = parseFilter(Filter) } var ( @@ -72,9 +76,22 @@ func main() { } func parseURL(rawurl string) (*url.URL, error) { + if len(rawurl) == 0 { + return nil, nil + } if !strings.HasPrefix(rawurl, "http://") && !strings.HasPrefix(rawurl, "socks://") { rawurl = "http://" + rawurl } return url.Parse(rawurl) } + +func parseFilter(rawfilter string) (filters []string) { + for _, s := range strings.Split(rawfilter, ",") { + s = strings.TrimSpace(s) + if len(s) > 0 { + filters = append(filters) + } + } + return +}