Https kcp

This commit is contained in:
刘河
2019-03-19 22:41:40 +08:00
parent 7ec3e82b0f
commit a66b465046
13 changed files with 129 additions and 74 deletions

View File

@@ -15,11 +15,11 @@ import (
type TRPClient struct {
svrAddr string
bridgeConnType string
stop chan bool
proxyUrl string
vKey string
tunnel *mux.Mux
signal *conn.Conn
ticker *time.Ticker
cnf *config.Config
}
@@ -29,7 +29,6 @@ func NewRPClient(svraddr string, vKey string, bridgeConnType string, proxyUrl st
svrAddr: svraddr,
vKey: vKey,
bridgeConnType: bridgeConnType,
stop: make(chan bool),
proxyUrl: proxyUrl,
cnf: cnf,
}
@@ -51,8 +50,9 @@ retry:
}
func (s *TRPClient) Close() {
s.stop <- true
s.tunnel.Close()
s.signal.Close()
s.ticker.Stop()
}
//处理
@@ -168,7 +168,7 @@ func (s *TRPClient) newUdpConn(rAddr string, md5Password string) {
if udpTunnel.RemoteAddr().String() == string(b) {
conn.SetUdpSession(udpTunnel)
//读取link,设置msgCh 设置msgConn消息回传响应机制
l := mux.NewMux(udpTunnel)
l := mux.NewMux(udpTunnel, s.bridgeConnType)
for {
connMux, err := l.Accept()
if err != nil {
@@ -187,18 +187,16 @@ func (s *TRPClient) dealChan() {
logs.Error("connect to ", s.svrAddr, "error:", err)
return
}
go func() {
s.tunnel = mux.NewMux(tunnel.Conn)
for {
src, err := s.tunnel.Accept()
if err != nil {
logs.Warn(err)
break
}
go s.srcProcess(src)
s.tunnel = mux.NewMux(tunnel.Conn, s.bridgeConnType)
for {
src, err := s.tunnel.Accept()
if err != nil {
logs.Warn(err)
s.Close()
break
}
}()
<-s.stop
go s.srcProcess(src)
}
}
func (s *TRPClient) srcProcess(src net.Conn) {
@@ -221,14 +219,14 @@ func (s *TRPClient) srcProcess(src net.Conn) {
}
func (s *TRPClient) ping() {
ticker := time.NewTicker(time.Second * 5)
s.ticker = time.NewTicker(time.Second * 5)
loop:
for {
select {
case <-ticker.C:
case <-s.ticker.C:
if s.tunnel.IsClose {
s.Close()
ticker.Stop()
s.ticker.Stop()
break loop
}
}

View File

@@ -39,7 +39,7 @@ func startLocalFileServer(config *config.CommonConfig, t *file.Tunnel, vkey stri
}
logs.Info("start local file system, local path %s, strip prefix %s ,remote port %s ", t.LocalPath, t.StripPre, t.Ports)
fileServer = append(fileServer, srv)
listener := mux.NewMux(remoteConn.Conn)
listener := mux.NewMux(remoteConn.Conn, common.CONN_TCP)
logs.Warn(srv.Serve(listener))
}
@@ -88,7 +88,7 @@ func processP2P(localTcpConn net.Conn, config *config.CommonConfig, l *config.Lo
if udpConn == nil {
return
}
muxSession = mux.NewMux(udpConn)
muxSession = mux.NewMux(udpConn, "kcp")
}
nowConn, err := muxSession.NewConn()
if err != nil {