diff --git a/sdk/CHANGELOG b/sdk/CHANGELOG index e2d614a..fd37799 100644 --- a/sdk/CHANGELOG +++ b/sdk/CHANGELOG @@ -1,5 +1,13 @@ SDK更新日志 +v5.3 +1.增加了支持日志输出回调的方法: + StartWithLog(serviceID, serviceArgsStr string, loggerCallback LogCallback) +2.优化了socks_client握手端口判断,避免了sstap测试UDP失败的问题.. +3.修复了HTTP(S)\SPS反向代理无法正常工作的问题. +4.优化了智能判断,减少不必要的DNS解析. +5.重构了SOCKS和SPS的UDP功能,基于UDP的游戏加速嗖嗖的. + v4.9 1.修复了HTTP Basic代理返回不合适的头部,导致浏览器不会弹框,个别代理插件无法认证的问题. 2.内网穿透切换smux到yamux. diff --git a/sdk/android-ios/sdk.go b/sdk/android-ios/sdk.go index fd5c898..67a6934 100644 --- a/sdk/android-ios/sdk.go +++ b/sdk/android-ios/sdk.go @@ -23,12 +23,31 @@ import ( kingpin "gopkg.in/alecthomas/kingpin.v2" ) -const SDK_VERSION = "5.2" +const SDK_VERSION = "5.3" var ( app *kingpin.Application ) +type LogCallback interface { + Write(line string) +} +type logCallback interface { + Write(line string) +} +type logWriter struct { + callback LogCallback +} + +func (s *logWriter) Write(p []byte) (n int, err error) { + s.callback.Write(string(p)) + return +} + +func Start(serviceID, serviceArgsStr string) (errStr string) { + return StartWithLog(serviceID, serviceArgsStr, nil) +} + //Start //serviceID : is service identify id,different service's id should be difference //serviceArgsStr: is the whole command line args string @@ -38,7 +57,7 @@ var ( //and so on. //if an error occured , errStr will be the error reason //if start success, errStr is empty. -func Start(serviceID, serviceArgsStr string) (errStr string) { +func StartWithLog(serviceID, serviceArgsStr string, loggerCallback LogCallback) (errStr string) { //define args tcpArgs := tcpx.TCPArgs{} httpArgs := httpx.HTTPArgs{} @@ -337,12 +356,19 @@ func Start(serviceID, serviceArgsStr string) (errStr string) { } log.SetFlags(flags) - if *logfile != "" { - f, e := os.OpenFile(*logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600) - if e != nil { - log.Fatal(e) + if loggerCallback == nil { + if *logfile != "" { + f, e := os.OpenFile(*logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600) + if e != nil { + log.Fatal(e) + } + log.SetOutput(f) } - log.SetOutput(f) + } else { + + log.SetOutput(&logWriter{ + callback: loggerCallback, + }) } //regist services and run service