mirror of
https://github.com/fatedier/frp.git
synced 2025-07-27 15:45:39 +00:00
support more proxy type
This commit is contained in:
@@ -19,8 +19,6 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/fatedier/frp/utils/crypto"
|
||||
)
|
||||
|
||||
func TestJoin(t *testing.T) {
|
||||
@@ -67,63 +65,3 @@ func TestJoin(t *testing.T) {
|
||||
conn3.Close()
|
||||
conn4.Close()
|
||||
}
|
||||
|
||||
func TestJoinEncrypt(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
var (
|
||||
n int
|
||||
err error
|
||||
)
|
||||
text1 := "1234567890"
|
||||
text2 := "abcdefghij"
|
||||
key := "authkey"
|
||||
|
||||
// Forward enrypted bytes.
|
||||
pr, pw := io.Pipe()
|
||||
pr2, pw2 := io.Pipe()
|
||||
pr3, pw3 := io.Pipe()
|
||||
pr4, pw4 := io.Pipe()
|
||||
pr5, pw5 := io.Pipe()
|
||||
pr6, pw6 := io.Pipe()
|
||||
|
||||
conn1 := WrapReadWriteCloser(pr, pw2)
|
||||
conn2 := WrapReadWriteCloser(pr2, pw)
|
||||
conn3 := WrapReadWriteCloser(pr3, pw4)
|
||||
conn4 := WrapReadWriteCloser(pr4, pw3)
|
||||
conn5 := WrapReadWriteCloser(pr5, pw6)
|
||||
conn6 := WrapReadWriteCloser(pr6, pw5)
|
||||
|
||||
r1, err := crypto.NewReader(conn3, []byte(key))
|
||||
assert.NoError(err)
|
||||
w1, err := crypto.NewWriter(conn3, []byte(key))
|
||||
assert.NoError(err)
|
||||
|
||||
r2, err := crypto.NewReader(conn4, []byte(key))
|
||||
assert.NoError(err)
|
||||
w2, err := crypto.NewWriter(conn4, []byte(key))
|
||||
assert.NoError(err)
|
||||
|
||||
go Join(conn2, WrapReadWriteCloser(r1, w1))
|
||||
go Join(WrapReadWriteCloser(r2, w2), conn5)
|
||||
|
||||
buf := make([]byte, 128)
|
||||
|
||||
conn1.Write([]byte(text1))
|
||||
conn6.Write([]byte(text2))
|
||||
|
||||
n, err = conn6.Read(buf)
|
||||
assert.NoError(err)
|
||||
assert.Equal(text1, string(buf[:n]))
|
||||
|
||||
n, err = conn1.Read(buf)
|
||||
assert.NoError(err)
|
||||
assert.Equal(text2, string(buf[:n]))
|
||||
|
||||
conn1.Close()
|
||||
conn2.Close()
|
||||
conn3.Close()
|
||||
conn4.Close()
|
||||
conn5.Close()
|
||||
conn6.Close()
|
||||
}
|
||||
|
@@ -22,32 +22,16 @@ import (
|
||||
"github.com/fatedier/frp/utils/crypto"
|
||||
)
|
||||
|
||||
func WithEncryption(rwc io.ReadWriteCloser, key []byte) (res io.ReadWriteCloser, err error) {
|
||||
var (
|
||||
r io.Reader
|
||||
w io.Writer
|
||||
)
|
||||
r, err = crypto.NewReader(rwc, key)
|
||||
func WithEncryption(rwc io.ReadWriteCloser, key []byte) (io.ReadWriteCloser, error) {
|
||||
w, err := crypto.NewWriter(rwc, key)
|
||||
if err != nil {
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
w, err = crypto.NewWriter(rwc, key)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res = WrapReadWriteCloser(r, w)
|
||||
return
|
||||
return WrapReadWriteCloser(crypto.NewReader(rwc, key), w), nil
|
||||
}
|
||||
|
||||
func WithCompression(rwc io.ReadWriteCloser) (res io.ReadWriteCloser) {
|
||||
var (
|
||||
r io.Reader
|
||||
w io.Writer
|
||||
)
|
||||
r = snappy.NewReader(rwc)
|
||||
w = snappy.NewWriter(rwc)
|
||||
res = WrapReadWriteCloser(r, w)
|
||||
return
|
||||
func WithCompression(rwc io.ReadWriteCloser) io.ReadWriteCloser {
|
||||
return WrapReadWriteCloser(snappy.NewReader(rwc), snappy.NewWriter(rwc))
|
||||
}
|
||||
|
||||
func WrapReadWriteCloser(r io.Reader, w io.Writer) io.ReadWriteCloser {
|
||||
|
Reference in New Issue
Block a user