From 6add3e3b9d27596e35f7eb5c473179ba33796107 Mon Sep 17 00:00:00 2001 From: zhouwenfeng Date: Sat, 31 Aug 2019 13:30:39 +0800 Subject: [PATCH] fix: encryption and compression didn't work in xtcp --- client/proxy/proxy.go | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/client/proxy/proxy.go b/client/proxy/proxy.go index bc230f40..28183188 100644 --- a/client/proxy/proxy.go +++ b/client/proxy/proxy.go @@ -332,12 +332,24 @@ func (pxy *XtcpProxy) InWorkConn(conn frpNet.Conn, m *msg.StartWorkConn) { lConn.WriteToUDP(sidBuf[:n], uAddr) - kcpConn, err := frpNet.NewKcpConnFromUdp(lConn, false, natHoleRespMsg.VisitorAddr) + var kcpConn io.ReadWriteCloser + kcpConn, err = frpNet.NewKcpConnFromUdp(lConn, false, natHoleRespMsg.VisitorAddr) if err != nil { pxy.Error("create kcp connection from udp connection error: %v", err) return } + if pxy.cfg.UseEncryption { + kcpConn, err = frpIo.WithEncryption(kcpConn, []byte(pxy.cfg.Sk)) + if err != nil { + pxy.Error("create decryption stream error: %v", err) + return + } + } + if pxy.cfg.UseCompression { + kcpConn = frpIo.WithCompression(kcpConn) + } + fmuxCfg := fmux.DefaultConfig() fmuxCfg.KeepAliveInterval = 5 * time.Second fmuxCfg.LogOutput = ioutil.Discard @@ -485,23 +497,7 @@ func (pxy *UdpProxy) InWorkConn(conn frpNet.Conn, m *msg.StartWorkConn) { func HandleTcpWorkConnection(localInfo *config.LocalSvrConf, proxyPlugin plugin.Plugin, baseInfo *config.BaseProxyConf, workConn frpNet.Conn, encKey []byte, m *msg.StartWorkConn) { - var ( - remote io.ReadWriteCloser - err error - ) - remote = workConn - - if baseInfo.UseEncryption { - remote, err = frpIo.WithEncryption(remote, encKey) - if err != nil { - workConn.Close() - workConn.Error("create encryption stream error: %v", err) - return - } - } - if baseInfo.UseCompression { - remote = frpIo.WithCompression(remote) - } + var remote io.ReadWriteCloser = workConn // check if we need to send proxy protocol info var extraInfo []byte