From 536958b4c05162dc3b03d30b58ccbfa3c34b1bc7 Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 01:55:39 +0800 Subject: [PATCH 1/9] Update local.go fix less data --- cmd/shadowsocks-local/local.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 604bf9f7..9182c17f 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -310,7 +310,18 @@ func handleConnection(conn net.Conn) { return } + buf := make([]byte, 4096) + copy(buf, rawaddr) + ss.SetReadTimeout(conn) + if n, err = conn.Read(buf[len(rawaddr):cap(buf)]); err != nil { + return + } + rawaddr = buf[: n+len(rawaddr)] remote, err := createServerConn(rawaddr, addr) + buf = nil + rawaddr = nil + addr = "" + if err != nil { if len(servers.srvCipher) > 1 { log.Println("Failed connect to all available shadowsocks server") From 8f7d90ca649821256a845efa6f38b6ddbc8d087c Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 02:18:28 +0800 Subject: [PATCH 2/9] Update local.go --- cmd/shadowsocks-local/local.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 9182c17f..747113f8 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -320,7 +320,6 @@ func handleConnection(conn net.Conn) { remote, err := createServerConn(rawaddr, addr) buf = nil rawaddr = nil - addr = "" if err != nil { if len(servers.srvCipher) > 1 { From 847be730c4e719382e447c47180c7442c7a7c5ff Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 02:38:11 +0800 Subject: [PATCH 3/9] Update local.go --- cmd/shadowsocks-local/local.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 747113f8..4da47e30 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -411,9 +411,25 @@ func parseURI(u string, cfg *ss.Config) (string, error) { } +func logCount() { + var count uint64 = 0 + cur := 0 + for { + if ss.RecvCount != 0 { + cur = ss.RecvCount + ss.RecvCount = 0 + count += uint64(cur) + fmt.Printf("\nċ½“ċ‰ĉµé‡:%d ,%d", cur, count/1024/1024) + } + time.Sleep(time.Second * 5) + } +} + func main() { log.SetOutput(os.Stdout) - + if os.DevNull == "NUL" { + go logCount() + } var configFile, cmdServer, cmdURI string var cmdConfig ss.Config var printVer bool From c79edef51df7aa712f0f499c349ad177dbe69799 Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 02:46:02 +0800 Subject: [PATCH 4/9] Update local.go --- cmd/shadowsocks-local/local.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 4da47e30..6afc7c5e 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -332,11 +332,12 @@ func handleConnection(conn net.Conn) { remote.Close() } }() - + + remote.Flags = 1 go ss.PipeThenClose(conn, remote, nil) ss.PipeThenClose(remote, conn, nil) closed = true - debug.Println("closed connection to", addr) + //debug.Println("closed connection to", addr) } func run(listenAddr string) { From 99cbefce971845b856da2d994175f83d35657815 Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 02:48:28 +0800 Subject: [PATCH 5/9] Update conn.go --- shadowsocks/conn.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shadowsocks/conn.go b/shadowsocks/conn.go index bd8ff5b1..764c4425 100644 --- a/shadowsocks/conn.go +++ b/shadowsocks/conn.go @@ -17,6 +17,7 @@ type Conn struct { *Cipher readBuf []byte writeBuf []byte + Flags int } func NewConn(c net.Conn, cipher *Cipher) *Conn { @@ -114,6 +115,9 @@ func (c *Conn) Read(b []byte) (n int, err error) { n, err = c.Conn.Read(cipherData) if n > 0 { c.decrypt(b[0:n], cipherData[0:n]) + if (c.Flags & 1) != 0 { + RecvCount += n + } } return } From eba75ce8fcfd382a131609e879e4e276cf2483dd Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 02:49:25 +0800 Subject: [PATCH 6/9] Update local.go From 461c92e057474827c3ecd0e7e110717e591d6d77 Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 03:09:35 +0800 Subject: [PATCH 7/9] Update local.go --- cmd/shadowsocks-local/local.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 6afc7c5e..502c34d0 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -309,8 +309,9 @@ func handleConnection(conn net.Conn) { debug.Println("send connection confirmation:", err) return } - - buf := make([]byte, 4096) + + //need some data for wirte + buf := make([]byte, 4096) copy(buf, rawaddr) ss.SetReadTimeout(conn) if n, err = conn.Read(buf[len(rawaddr):cap(buf)]); err != nil { @@ -428,6 +429,7 @@ func logCount() { func main() { log.SetOutput(os.Stdout) + //for windows view if os.DevNull == "NUL" { go logCount() } From 0e141ccd317b683c23eb12c001627ebbfcf8ac48 Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 03:31:52 +0800 Subject: [PATCH 8/9] Update conn.go --- shadowsocks/conn.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shadowsocks/conn.go b/shadowsocks/conn.go index 764c4425..ca2b2dc2 100644 --- a/shadowsocks/conn.go +++ b/shadowsocks/conn.go @@ -12,6 +12,8 @@ const ( AddrMask byte = 0xf ) +var RecvCount int = 0 + type Conn struct { net.Conn *Cipher From 27e7386140d0dfccb6eaf44acb3d1662ff8e8990 Mon Sep 17 00:00:00 2001 From: koggle Date: Sun, 7 Oct 2018 03:41:20 +0800 Subject: [PATCH 9/9] Update local.go --- cmd/shadowsocks-local/local.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 502c34d0..5ba87a41 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -413,7 +413,7 @@ func parseURI(u string, cfg *ss.Config) (string, error) { } -func logCount() { +func logoForWindows() { var count uint64 = 0 cur := 0 for { @@ -431,7 +431,7 @@ func main() { log.SetOutput(os.Stdout) //for windows view if os.DevNull == "NUL" { - go logCount() + go logoForWindows() } var configFile, cmdServer, cmdURI string var cmdConfig ss.Config