From e8457cc711e34f5d587cf8bff9945cd2cbacbcd5 Mon Sep 17 00:00:00 2001 From: Yrr0r Date: Thu, 17 May 2018 00:31:50 +1000 Subject: [PATCH] Initial commit --- .DS_Store | Bin 0 -> 12292 bytes .gitattributes | 2 + LICENSE | 21 +++++ client.go | 54 +++++++++++++ cmd/.DS_Store | Bin 0 -> 6148 bytes cmd/config.go | 103 +++++++++++++++++++++++++ core/cipher.go | 35 +++++++++ core/cipher_test.go | 54 +++++++++++++ core/password.go | 53 +++++++++++++ core/password_test.go | 43 +++++++++++ core/securesocket.go | 92 ++++++++++++++++++++++ goreleaser.yml | 21 +++++ local/.DS_Store | Bin 0 -> 6148 bytes local/local.go | 80 +++++++++++++++++++ server.go | 58 ++++++++++++++ server/.DS_Store | Bin 0 -> 6148 bytes server/server.go | 173 ++++++++++++++++++++++++++++++++++++++++++ 17 files changed, 789 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitattributes create mode 100644 LICENSE create mode 100755 client.go create mode 100644 cmd/.DS_Store create mode 100755 cmd/config.go create mode 100755 core/cipher.go create mode 100755 core/cipher_test.go create mode 100755 core/password.go create mode 100755 core/password_test.go create mode 100755 core/securesocket.go create mode 100755 goreleaser.yml create mode 100644 local/.DS_Store create mode 100755 local/local.go create mode 100755 server.go create mode 100644 server/.DS_Store create mode 100755 server/server.go diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f9fa231d97a46eadc55a181799c3b070b8234ce3 GIT binary patch literal 12292 zcmeHNYit}>6+XwW%)QQI9GvyW&ZgVC#;)Tew&TQ3VyEk8QuPs2JF)X9mm0Bnb66GcS@DQlHB9c}-#9Jy7p#A|QD4cum>}F@Z zwh~H1Ob$}F@aeKNy61O4?dV3Y#40tneHO)W?J&cIoGPy^=a>s8;A~F?^+3D8S3s_QG zR$j3}W4zKoSjG2F=xe8A=FI-7bj(WH2hEgC<%GV*p0s9eidxCxlquTBqE)5hvU zt?G={?Den(La+~xf(cXbAUp)8;1PHd&cF+B7QPAJfgivR;YaXecny9FzlT4-AK|a? zFZeeCB69R$4f^p~d^a}X4cLs^unTwLZtTWEycuuB+i*XQ<1vh26b($^G|u1&d;mX+ zAH$F1C-5o!9DW|3!DsPH_>y|665()S+oy``5x*{8XzvD}uee<~vvib(wZI-2g2NDn zB+QUu50h!9;c0jtUV?AHx8eKniZtz2GVSN^3o`95@K1PCn#ORQG%ZM`)#LSKT05Dx z9e0pv17zA>+()L3k!gqV2$>cq(~@M`JU)VtO4B}tpLI-o5x=TTSllpbFQw;9fI-+e zrLeK&_Jy&XEN#$HQ9=zA>Y=Skg?%!6X`~ z%h54N(}JmkG;QqIGI=sl~JaXDYy^R9Fh8#qlabn$ET^LYJM}-!js;j9eN`xIh!W zH!nN%Hl%Qi62_e07DJWG&FU_RDvM@yi=ql&fGWJ1FF+N(5LI|FRN?<4RAElm^E&8& zZWx9`V92cJWAHc#uJ>j58b$ak#P@ziQGNk_O>zD^O6dL>{zh?LLA*~R<`*E&ca2Qt zZo(F9ld0Su+(WGI7E0#s$KgD_cejk~X?!1k2tSEW2!4lW@OgXzzkpxFmoF*nS?GvM zY75GJ^2YzGBVH+7;r~6Z@TGBuyKsfOafNdiu2AbmT;X-R09TmAlVbk%47>>6B42wA zenlSkI=n$X2IONa2~9R)P-fH{a0_lF4{OH`6do4BUdPLBBQHBdS@k>cPSO^W_}*N0 z{UpxfeWWcuNFMiL{0M1_$MA8-_nuZ%c}Z>I^0tC?KaXj9r>+?&rz_{{#B#;MiyvQ{ zKPGs(N(!7HeQe9;#GbBtCw>3(G?gRW*fP>o&Qe!^e!2YavRvUk{jUIB{N1D2zakdV z|1?NoKW$Co`~TqL|NoPnyn{Cb-V7|y8NjlEk%2z4E&KhV&`j~IJxKd8+QlaN&8t!l zp@Z`|Ube|k@l@AJUF1gRA#pH1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 0 { + writeCount, errWrite := secureSocket.EncodeWrite(dst, buf[0:readCount]) + if errWrite != nil { + return errWrite + } + if readCount != writeCount { + return io.ErrShortWrite + } + } + } +} + +// 从src中源源不断的读取加密后的数据解密后写入到dst,直到src中没有数据可以再读取 +func (secureSocket *SecureSocket) DecodeCopy(dst *net.TCPConn, src *net.TCPConn) error { + buf := make([]byte, BufSize) + for { + readCount, errRead := secureSocket.DecodeRead(src, buf) + if errRead != nil { + if errRead != io.EOF { + return errRead + } else { + return nil + } + } + if readCount > 0 { + writeCount, errWrite := dst.Write(buf[0:readCount]) + if errWrite != nil { + return errWrite + } + if readCount != writeCount { + return io.ErrShortWrite + } + } + } +} + +// 和远程的socket建立连接,他们之间的数据传输会加密 +func (secureSocket *SecureSocket) DialRemote() (*net.TCPConn, error) { + remoteConn, err := net.DialTCP("tcp", nil, secureSocket.RemoteAddr) + if err != nil { + return nil, errors.New(fmt.Sprintf("连接到远程服务器 %s 失败:%s", secureSocket.RemoteAddr, err)) + } + return remoteConn, nil +} diff --git a/goreleaser.yml b/goreleaser.yml new file mode 100755 index 0000000..47a8fba --- /dev/null +++ b/goreleaser.yml @@ -0,0 +1,21 @@ +builds: + - binary: lightsocks-client + main: client.go + goos: + - windows + - darwin + - linux + goarch: + - amd64 + - 386 + - arm + - binary: lightsocks-server + main: server.go + goos: + - windows + - darwin + - linux + goarch: + - amd64 + - 386 + - arm diff --git a/local/.DS_Store b/local/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0