fix: encryption and compression didn't work in xtcp

This commit is contained in:
zhouwenfeng 2019-08-31 13:30:39 +08:00
parent e611c44dea
commit 6add3e3b9d

View File

@ -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