From 8d74baf48cabcd40b490617804edb38e29e21636 Mon Sep 17 00:00:00 2001 From: "arraykeys@gmail.com" Date: Wed, 16 May 2018 15:59:53 +0800 Subject: [PATCH] Signed-off-by: arraykeys@gmail.com --- CHANGELOG | 3 ++- sdk/android-ios/sdk.go | 7 +++++++ services/http.go | 9 ++++++--- services/sps.go | 5 ++++- utils/structs.go | 3 +-- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 266a232..5352dbe 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,7 +6,8 @@ v4.8 --disable-socks:禁用socks代理 默认都是false(开启). 3.重构了部分代码的日志部分,保证了日志按着预期输出. - +4.修复了sps\http代理初始化服务的时机不正确,导致nil异常的bug. +5.优化了sps日志输出. v4.7 1.增加了基于gomobile的sdk,对android/ios/windows/linux/mac提供SDK支持. diff --git a/sdk/android-ios/sdk.go b/sdk/android-ios/sdk.go index 2bc6542..1efba28 100644 --- a/sdk/android-ios/sdk.go +++ b/sdk/android-ios/sdk.go @@ -238,6 +238,13 @@ func Start(serviceID, serviceArgsStr string) (errStr string) { spsArgs.ParentKey = sps.Flag("parent-key", "the password for auto encrypt/decrypt parent connection data").Short('Z').Default("").String() spsArgs.LocalCompress = sps.Flag("local-compress", "auto compress/decompress data on local connection").Short('m').Default("false").Bool() spsArgs.ParentCompress = sps.Flag("parent-compress", "auto compress/decompress data on parent connection").Short('M').Default("false").Bool() + spsArgs.SSMethod = sps.Flag("ss-method", "").Hidden().Short('h').Default("aes-256-cfb").String() + spsArgs.SSKey = sps.Flag("ss-key", "").Hidden().Short('j').Default("sspassword").String() + spsArgs.ParentSSMethod = sps.Flag("parent-ss-method", "").Hidden().Short('H').Default("aes-256-cfb").String() + spsArgs.ParentSSKey = sps.Flag("parent-ss-key", "").Hidden().Short('J').Default("sspassword").String() + spsArgs.DisableHTTP = sps.Flag("disable-http", "disable http(s) proxy").Default("false").Bool() + spsArgs.DisableSocks5 = sps.Flag("disable-socks", "disable socks proxy").Default("false").Bool() + spsArgs.DisableSS = sps.Flag("disable-ss", "").Hidden().Default("false").Bool() //parse args _args := strings.Fields(strings.Trim(serviceArgsStr, " ")) diff --git a/services/http.go b/services/http.go index 85e1862..42838de 100644 --- a/services/http.go +++ b/services/http.go @@ -167,13 +167,16 @@ func (s *HTTP) Start(args interface{}, log *logger.Logger) (err error) { if err = s.CheckArgs(); err != nil { return } + + if err = s.InitService(); err != nil { + return + } + if *s.cfg.Parent != "" { s.log.Printf("use %s parent %s", *s.cfg.ParentType, *s.cfg.Parent) s.InitOutConnPool() } - if err = s.InitService(); err != nil { - return - } + for _, addr := range strings.Split(*s.cfg.Local, ",") { if addr != "" { host, port, _ := net.SplitHostPort(addr) diff --git a/services/sps.go b/services/sps.go index f3d10ec..a034004 100644 --- a/services/sps.go +++ b/services/sps.go @@ -69,10 +69,13 @@ func (s *SPS) CheckArgs() (err error) { return } func (s *SPS) InitService() (err error) { - s.InitOutConnPool() + if *s.cfg.DNSAddress != "" { (*s).domainResolver = utils.NewDomainResolver(*s.cfg.DNSAddress, *s.cfg.DNSTTL, s.log) } + + s.InitOutConnPool() + err = s.InitBasicAuth() if *s.cfg.SSMethod != "" && *s.cfg.SSKey != "" { s.localCipher, err = ss.NewCipher(*s.cfg.SSMethod, *s.cfg.SSKey) diff --git a/utils/structs.go b/utils/structs.go index 8635367..95977fb 100644 --- a/utils/structs.go +++ b/utils/structs.go @@ -669,7 +669,6 @@ type DomainResolverItem struct { } func NewDomainResolver(dnsAddrress string, ttl int, log *logger.Logger) DomainResolver { - return DomainResolver{ ttl: ttl, dnsAddrress: dnsAddrress, @@ -751,7 +750,7 @@ func (a *DomainResolver) Resolve(address string) (ip string, err error) { func (a *DomainResolver) PrintData() { for k, item := range a.data.Items() { d := item.(*DomainResolverItem) - fmt.Printf("%s:ip[%s],domain[%s],expired at[%d]\n", k, (*d).ip, (*d).domain, (*d).expiredAt) + a.log.Printf("%s:ip[%s],domain[%s],expired at[%d]\n", k, (*d).ip, (*d).domain, (*d).expiredAt) } } func NewCompStream(conn net.Conn) *CompStream {