From 29d8b52f63d55a52afc6c55b777a26a48b8e05df Mon Sep 17 00:00:00 2001 From: Jason Date: Sun, 6 Sep 2020 16:10:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20Client=20?= =?UTF-8?q?=E4=B8=BA=20Tunnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/{client.go => tunnel.go} | 2 +- dbus/{client.go => base.go} | 10 ++++++---- dbus/peer.go | 10 ++-------- dbus/plugin.go | 9 +++------ dbus/server.go | 2 +- dtu/link.go | 4 ++-- 6 files changed, 15 insertions(+), 22 deletions(-) rename base/{client.go => tunnel.go} (86%) rename dbus/{client.go => base.go} (80%) diff --git a/base/client.go b/base/tunnel.go similarity index 86% rename from base/client.go rename to base/tunnel.go index f6e239f..49c32eb 100644 --- a/base/client.go +++ b/base/tunnel.go @@ -2,7 +2,7 @@ package base import "github.com/zgwit/dtu-admin/packet" -type Client interface { +type Tunnel interface { CLose() error Send(msg *packet.Packet) error Write(b []byte) error diff --git a/dbus/client.go b/dbus/base.go similarity index 80% rename from dbus/client.go rename to dbus/base.go index 857f59e..3edd511 100644 --- a/dbus/client.go +++ b/dbus/base.go @@ -1,7 +1,6 @@ package dbus import ( - "github.com/zgwit/dtu-admin/base" "github.com/zgwit/dtu-admin/packet" "log" "net" @@ -41,7 +40,10 @@ func (p *baseClient) Write(b []byte) error { return nil } -func NewClient() base.Client { - //根据类型 - return nil +func (p *baseClient) SendError(err string) error { + return p.Send(&packet.Packet{ + Type: packet.TypeError, + Status: 0, + Data: []byte(err), + }) } \ No newline at end of file diff --git a/dbus/peer.go b/dbus/peer.go index c228f62..bfd4021 100644 --- a/dbus/peer.go +++ b/dbus/peer.go @@ -16,7 +16,8 @@ type Peer struct { func (p *Peer) Handle(msg *packet.Packet) { switch msg.Type { case packet.TypeConnect: - p.handleConnect(msg) + _ = p.SendError("duplicate register") + _ = p.CLose() case packet.TypeHeartBeak: case packet.TypePing: _ = p.Send(&packet.Packet{Type: packet.TypePong}) @@ -27,13 +28,6 @@ func (p *Peer) Handle(msg *packet.Packet) { } } -func (p *Peer) handleConnect(msg *packet.Packet) { - //p.Key = string(msg.Data) - //TODO 检查Key,获取对应的 通道,连接号 - //TODO 在link中设置peer - -} - func (p *Peer) handleTransfer(msg *packet.Packet) { //_, _ = p.link.Send(msg.Data) //TODO 判断link是否为空 diff --git a/dbus/plugin.go b/dbus/plugin.go index a39451d..0b3116e 100644 --- a/dbus/plugin.go +++ b/dbus/plugin.go @@ -12,7 +12,9 @@ type Plugin struct { func (p *Plugin) Handle(msg *packet.Packet) { switch msg.Type { case packet.TypeConnect: - p.handleConnect(msg) + _ = p.SendError("duplicate register") + _ = p.CLose() + //p.handleConnect(msg) case packet.TypeHeartBeak: case packet.TypePing: _ = p.Send(&packet.Packet{Type: packet.TypePong}) @@ -23,11 +25,6 @@ func (p *Plugin) Handle(msg *packet.Packet) { } } -func (p *Plugin) handleConnect(msg *packet.Packet) { - //TODO 根据appkey, secret校验身份,注册插件到对应通道和链接上 - -} - func (p *Plugin) handleTransfer(msg *packet.Packet) { //TODO 找到对应链接,发送之 //TODO 使用 int64 还是 int32 diff --git a/dbus/server.go b/dbus/server.go index 628d9a1..ae186ef 100644 --- a/dbus/server.go +++ b/dbus/server.go @@ -93,7 +93,7 @@ func (s *Server) receive(conn net.Conn) { _ = c.CLose() } -func (s *Server) createTunnel(p *packet.Packet) (base.Client, error) { +func (s *Server) createTunnel(p *packet.Packet) (base.Tunnel, error) { if p.Type != packet.TypeConnect { //告诉客户端,第一个包必须是注册包 return nil, errors.New("first packet must be connect") diff --git a/dtu/link.go b/dtu/link.go index 69a294e..e2813a2 100644 --- a/dtu/link.go +++ b/dtu/link.go @@ -24,9 +24,9 @@ type Link struct { cache [][]byte //透传链接 - peer base.Client + peer base.Tunnel - plugin base.Client + plugin base.Tunnel //监视器连接, monitor *Monitor -- GitLab