Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>
This commit is contained in:
@ -57,7 +57,13 @@ func (s *MuxBridge) Start(args interface{}) (err error) {
|
|||||||
}
|
}
|
||||||
switch connType {
|
switch connType {
|
||||||
case CONN_SERVER:
|
case CONN_SERVER:
|
||||||
log.Printf("server connection %s", key)
|
var serverID string
|
||||||
|
err = utils.ReadPacketData(reader, &serverID)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("read error,ERR:%s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Printf("server connection %s %s connected", serverID, key)
|
||||||
session, err := smux.Server(inConn, nil)
|
session, err := smux.Server(inConn, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.CloseConn(&inConn)
|
utils.CloseConn(&inConn)
|
||||||
@ -71,11 +77,11 @@ func (s *MuxBridge) Start(args interface{}) (err error) {
|
|||||||
utils.CloseConn(&inConn)
|
utils.CloseConn(&inConn)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
go s.callback(stream, key)
|
go s.callback(stream, serverID, key)
|
||||||
}
|
}
|
||||||
case CONN_CLIENT:
|
case CONN_CLIENT:
|
||||||
|
|
||||||
log.Printf("client connection %s", key)
|
log.Printf("client connection %s connected", key)
|
||||||
session, err := smux.Client(inConn, nil)
|
session, err := smux.Client(inConn, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.CloseConn(&inConn)
|
utils.CloseConn(&inConn)
|
||||||
@ -96,7 +102,7 @@ func (s *MuxBridge) Start(args interface{}) (err error) {
|
|||||||
func (s *MuxBridge) Clean() {
|
func (s *MuxBridge) Clean() {
|
||||||
s.StopService()
|
s.StopService()
|
||||||
}
|
}
|
||||||
func (s *MuxBridge) callback(inConn net.Conn, key string) {
|
func (s *MuxBridge) callback(inConn net.Conn, serverID, key string) {
|
||||||
try := 20
|
try := 20
|
||||||
for {
|
for {
|
||||||
try--
|
try--
|
||||||
@ -105,17 +111,17 @@ func (s *MuxBridge) callback(inConn net.Conn, key string) {
|
|||||||
}
|
}
|
||||||
session, ok := s.clientControlConns.Get(key)
|
session, ok := s.clientControlConns.Get(key)
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Printf("client %s session not exists", key)
|
log.Printf("client %s session not exists for server stream %s", key, serverID)
|
||||||
time.Sleep(time.Second * 3)
|
time.Sleep(time.Second * 3)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
stream, err := session.(*smux.Session).OpenStream()
|
stream, err := session.(*smux.Session).OpenStream()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("%s client session open stream fail, err: %s, retrying...", key, err)
|
log.Printf("%s client session open stream %s fail, err: %s, retrying...", key, serverID, err)
|
||||||
time.Sleep(time.Second * 3)
|
time.Sleep(time.Second * 3)
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
log.Printf("%s stream created", key)
|
log.Printf("%s server %s stream created", key, serverID)
|
||||||
die1 := make(chan bool, 1)
|
die1 := make(chan bool, 1)
|
||||||
die2 := make(chan bool, 1)
|
die2 := make(chan bool, 1)
|
||||||
go func() {
|
go func() {
|
||||||
@ -132,7 +138,7 @@ func (s *MuxBridge) callback(inConn net.Conn, key string) {
|
|||||||
}
|
}
|
||||||
stream.Close()
|
stream.Close()
|
||||||
inConn.Close()
|
inConn.Close()
|
||||||
log.Printf("%s stream released", key)
|
log.Printf("%s server %s stream released", key, serverID)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,7 +84,7 @@ func (s *MuxClient) Start(args interface{}) (err error) {
|
|||||||
stream.Close()
|
stream.Close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Printf("signal revecived:%s %s %s", serverID, ID, clientLocalAddr)
|
log.Printf("signal revecived,server %s stream %s %s", serverID, ID, clientLocalAddr)
|
||||||
protocol := clientLocalAddr[:3]
|
protocol := clientLocalAddr[:3]
|
||||||
localAddr := clientLocalAddr[4:]
|
localAddr := clientLocalAddr[4:]
|
||||||
if protocol == "udp" {
|
if protocol == "udp" {
|
||||||
@ -179,7 +179,7 @@ func (s *MuxClient) ServeConn(inConn *smux.Stream, localAddr, ID string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("conn %s created", ID)
|
log.Printf("stream %s created", ID)
|
||||||
if *s.cfg.IsCompress {
|
if *s.cfg.IsCompress {
|
||||||
die1 := make(chan bool, 1)
|
die1 := make(chan bool, 1)
|
||||||
die2 := make(chan bool, 1)
|
die2 := make(chan bool, 1)
|
||||||
@ -200,7 +200,7 @@ func (s *MuxClient) ServeConn(inConn *smux.Stream, localAddr, ID string) {
|
|||||||
log.Printf("%s stream %s released", *s.cfg.Key, ID)
|
log.Printf("%s stream %s released", *s.cfg.Key, ID)
|
||||||
} else {
|
} else {
|
||||||
utils.IoBind(inConn, outConn, func(err interface{}) {
|
utils.IoBind(inConn, outConn, func(err interface{}) {
|
||||||
log.Printf("conn %s released", ID)
|
log.Printf("stream %s released", ID)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -154,7 +154,7 @@ func (s *MuxServer) Start(args interface{}) (err error) {
|
|||||||
err = s.sc.ListenTCP(func(inConn net.Conn) {
|
err = s.sc.ListenTCP(func(inConn net.Conn) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := recover(); err != nil {
|
if err := recover(); err != nil {
|
||||||
log.Printf("server conn handler crashed with err : %s \nstack: %s", err, string(debug.Stack()))
|
log.Printf("connection handler crashed with err : %s \nstack: %s", err, string(debug.Stack()))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
var outConn net.Conn
|
var outConn net.Conn
|
||||||
@ -191,7 +191,7 @@ func (s *MuxServer) Start(args interface{}) (err error) {
|
|||||||
log.Printf("%s stream %s released", *s.cfg.Key, ID)
|
log.Printf("%s stream %s released", *s.cfg.Key, ID)
|
||||||
} else {
|
} else {
|
||||||
utils.IoBind(inConn, outConn, func(err interface{}) {
|
utils.IoBind(inConn, outConn, func(err interface{}) {
|
||||||
log.Printf("%s conn %s released", *s.cfg.Key, ID)
|
log.Printf("%s stream %s released", *s.cfg.Key, ID)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -218,7 +218,7 @@ func (s *MuxServer) GetOutConn() (outConn net.Conn, ID string, err error) {
|
|||||||
ID = utils.Uniqueid()
|
ID = utils.Uniqueid()
|
||||||
_, err = outConn.Write(utils.BuildPacketData(ID, remoteAddr, s.cfg.Mgr.serverID))
|
_, err = outConn.Write(utils.BuildPacketData(ID, remoteAddr, s.cfg.Mgr.serverID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("write connection data err: %s ,retrying...", err)
|
log.Printf("write stream data err: %s ,retrying...", err)
|
||||||
utils.CloseConn(&outConn)
|
utils.CloseConn(&outConn)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -242,7 +242,7 @@ func (s *MuxServer) GetConn() (conn net.Conn, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
c := net.Conn(&_conn)
|
c := net.Conn(&_conn)
|
||||||
_, err = c.Write(utils.BuildPacket(CONN_SERVER, *s.cfg.Key))
|
_, err = c.Write(utils.BuildPacket(CONN_SERVER, *s.cfg.Key, s.cfg.Mgr.serverID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Close()
|
c.Close()
|
||||||
s.session = nil
|
s.session = nil
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
rm -rf /usr/bin/proxy
|
rm -rf /usr/bin/proxy
|
||||||
rm -rf /usr/bin/proxyd
|
|
||||||
echo "uninstall done"
|
echo "uninstall done"
|
||||||
|
|||||||
Reference in New Issue
Block a user