modified: src/frp/models/client/client.go

modified:   src/frp/models/server/server.go
	modified:   src/frp/utils/conn/conn.go
	modified:   src/frp/utils/pcrypto/pcrypto.go
	modified:   src/frp/utils/pcrypto/pcrypto_test.go
This commit is contained in:
Gogs
2016-03-22 17:18:05 +08:00
parent 90349a48b0
commit 20afe25ef1
6 changed files with 86 additions and 22 deletions

View File

@@ -22,6 +22,7 @@ import (
"sync"
"frp/utils/log"
"frp/utils/pcrypto"
)
type Listener struct {
@@ -127,6 +128,7 @@ func (c *Conn) ReadLine() (buff string, err error) {
func (c *Conn) Write(content string) (err error) {
_, err = c.TcpConn.Write([]byte(content))
return err
}
func (c *Conn) Close() {
@@ -161,3 +163,74 @@ func Join(c1 *Conn, c2 *Conn) {
wait.Wait()
return
}
// decrypto msg from reader, then write into writer
func PipeDecryptoReader(r net.Conn, w net.Conn, key string) {
defer r.Close()
defer w.Close()
laes := new(pcrypto.Pcrypto)
if err := laes.Init([]byte(key)); err != nil {
log.Error("Pcrypto Init error, [%v]", err)
return
}
log.Debug("PipeDecryptoReader")
buf := make([]byte, 10*1024)
for {
n, err := r.Read(buf)
if err != nil {
log.Error("Conn ReadLine error, [%v]", err)
return
}
res, err := laes.Decrypto(buf[:n])
if err != nil {
log.Error("Decrypto error, [%s] [%s]", err, string(buf[:n]))
return
}
_, err = w.Write(res)
if err != nil {
log.Error("net.Conn Write error, [%v]", err)
return
}
}
}
// recvive msg from reader, then encrypto msg into write
func PipeEncryptoWriter(r net.Conn, w net.Conn, key string) {
defer r.Close()
defer w.Close()
laes := new(pcrypto.Pcrypto)
if err := laes.Init([]byte(key)); err != nil {
log.Error("Pcrypto Init error, [%v]", err)
return
}
log.Debug("PipeEncryptoWriter")
buf := make([]byte, 10*1024)
for {
n, err := r.Read(buf)
if err != nil {
log.Error("Conn ReadLine error, [%v]", err)
return
}
res, err := laes.Encrypto(buf[:n])
if err != nil {
log.Error("Encrypto error, [%v]", err)
return
}
_, err = w.Write(res)
if err != nil {
log.Error("net.Conn Write error, [%v]", err)
return
}
}
}