提交 4322e09c 编写于 作者: J Jason

小小优化

上级 6c9960c3
...@@ -46,4 +46,12 @@ func (p *baseClient) SendError(err string) error { ...@@ -46,4 +46,12 @@ func (p *baseClient) SendError(err string) error {
Status: 0, Status: 0,
Data: []byte(err), Data: []byte(err),
}) })
}
func (p *baseClient) Disconnect(info string) error {
return p.Send(&packet.Packet{
Type: packet.TypeDisconnect,
Status: 0,
Data: []byte(info),
})
} }
\ No newline at end of file
package dbus package dbus
import ( import (
"fmt"
"github.com/zgwit/dtu-admin/base" "github.com/zgwit/dtu-admin/base"
"github.com/zgwit/dtu-admin/dtu" "github.com/zgwit/dtu-admin/dtu"
"github.com/zgwit/dtu-admin/packet" "github.com/zgwit/dtu-admin/packet"
"log"
"sync" "sync"
"time" "time"
) )
...@@ -18,7 +18,7 @@ type Peer struct { ...@@ -18,7 +18,7 @@ type Peer struct {
func (p *Peer) Handle(msg *packet.Packet) { func (p *Peer) Handle(msg *packet.Packet) {
switch msg.Type { switch msg.Type {
case packet.TypeConnect: case packet.TypeConnect:
_ = p.SendError("duplicate register") _ = p.Disconnect("duplicate register")
_ = p.CLose() _ = p.CLose()
case packet.TypeHeartBeak: case packet.TypeHeartBeak:
case packet.TypePing: case packet.TypePing:
...@@ -26,7 +26,7 @@ func (p *Peer) Handle(msg *packet.Packet) { ...@@ -26,7 +26,7 @@ func (p *Peer) Handle(msg *packet.Packet) {
case packet.TypeTransfer: case packet.TypeTransfer:
p.handleTransfer(msg) p.handleTransfer(msg)
default: default:
log.Println("unknown command", msg) _ = p.SendError(fmt.Sprintf("unknown command %d", msg.Type))
} }
} }
......
...@@ -12,16 +12,15 @@ type Plugin struct { ...@@ -12,16 +12,15 @@ type Plugin struct {
func (p *Plugin) Handle(msg *packet.Packet) { func (p *Plugin) Handle(msg *packet.Packet) {
switch msg.Type { switch msg.Type {
case packet.TypeConnect: case packet.TypeConnect:
_ = p.SendError("duplicate register") _ = p.Disconnect("duplicate register")
_ = p.CLose() _ = p.CLose()
//p.handleConnect(msg)
case packet.TypeHeartBeak: case packet.TypeHeartBeak:
case packet.TypePing: case packet.TypePing:
_ = p.Send(&packet.Packet{Type: packet.TypePong}) _ = p.Send(&packet.Packet{Type: packet.TypePong})
case packet.TypeTransfer: case packet.TypeTransfer:
p.handleTransfer(msg) p.handleTransfer(msg)
default: default:
log.Println("unknown command", msg) _ = p.SendError(fmt.Sprintf("unknown command %d", msg.Type))
} }
} }
......
...@@ -66,13 +66,18 @@ func (s *Server) receive(conn net.Conn) { ...@@ -66,13 +66,18 @@ func (s *Server) receive(conn net.Conn) {
_ = conn.Close() _ = conn.Close()
return return
} }
//根据第一个包创建客户 //根据第一个包创建客户
c, e := s.createTunnel(conn, packs[0]) c, e := s.createTunnel(conn, packs[0])
if e != nil { if e != nil {
_, _ = conn.Write([]byte(e.Error())) p := packet.Packet{
Type: packet.TypeDisconnect,
Data: []byte(e.Error()),
}
_, _ = conn.Write(p.Encode())
_ = conn.Close() _ = conn.Close()
return return
} }
//处理第一次接收的剩余包(网络拥堵时,可能会发生) //处理第一次接收的剩余包(网络拥堵时,可能会发生)
for _, pack := range packs[1:] { for _, pack := range packs[1:] {
c.Handle(pack) c.Handle(pack)
...@@ -117,6 +122,8 @@ func (s *Server) createTunnel(conn net.Conn, p *packet.Packet) (base.Tunnel, err ...@@ -117,6 +122,8 @@ func (s *Server) createTunnel(conn net.Conn, p *packet.Packet) (base.Tunnel, err
link := v.(*dtu.Link) link := v.(*dtu.Link)
peer := &Peer{baseClient: baseClient{conn: conn}, link: link} peer := &Peer{baseClient: baseClient{conn: conn}, link: link}
link.Peer(peer) link.Peer(peer)
//TODO 回复ConnectAck,连接信息
return peer, nil return peer, nil
case "plugin": case "plugin":
//TODO 解析 plugin:key:secret //TODO 解析 plugin:key:secret
......
...@@ -128,5 +128,3 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= ...@@ -128,5 +128,3 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册