From 8d100b057847942af3345f92db8134ef4bae0196 Mon Sep 17 00:00:00 2001 From: SITSGRestia <1625016239@qq.com> Date: Thu, 16 Nov 2017 09:32:32 +0800 Subject: [PATCH 1/3] add authorization --- broker/server.go | 7 +++++++ packets/connect.go | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/broker/server.go b/broker/server.go index 4b0e264..58eb49b 100644 --- a/broker/server.go +++ b/broker/server.go @@ -142,6 +142,13 @@ func (h *Hrotti) Stop() { func (h *Hrotti) InitClient(conn net.Conn) { var sendSessionID bool + //////////////修改/////////////////////// + defer func() { + if err := recover(); err != nil { + ERROR.Println(err) + } + }() + //////////////修改/////////////////////// /*var cph fixedHeader //create a bufio conn from the network connection diff --git a/packets/connect.go b/packets/connect.go index 9df2230..e8d0414 100644 --- a/packets/connect.go +++ b/packets/connect.go @@ -29,7 +29,17 @@ type ConnectPacket struct { Password []byte uuid uuid.UUID } +//////////////////////修改////////////////////////// +var userName string +var password string +func SetUserName(name string) { + userName = name +} +func SetPassWord(pwd string) { + password = pwd +} +//////////////////////修改////////////////////////// func (c *ConnectPacket) String() string { str := fmt.Sprintf("%s\n", c.FixedHeader) str += fmt.Sprintf("protocolversion: %d protocolname: %s cleansession: %t willflag: %t WillQos: %d WillRetain: %t Usernameflag: %t Passwordflag: %t keepalivetimer: %d\nclientId: %s\nwilltopic: %s\nwillmessage: %s\nUsername: %s\nPassword: %s\n", c.ProtocolVersion, c.ProtocolName, c.CleanSession, c.WillFlag, c.WillQos, c.WillRetain, c.UsernameFlag, c.PasswordFlag, c.KeepaliveTimer, c.ClientIdentifier, c.WillTopic, c.WillMessage, c.Username, c.Password) @@ -89,6 +99,11 @@ func (c *ConnectPacket) Unpack(b io.Reader) { } func (c *ConnectPacket) Validate() byte { + //////////////////////修改////////////////////////// + if string(c.Password) != userName || c.Username != password{ + return CONN_REF_BAD_USER_PASS + } + //////////////////////修改////////////////////////// if c.PasswordFlag && !c.UsernameFlag { return CONN_REF_BAD_USER_PASS } From 1e3a762a7902eacf7593a15f78d9bdcc7e0c0900 Mon Sep 17 00:00:00 2001 From: SITSGRestia <1625016239@qq.com> Date: Thu, 16 Nov 2017 09:45:45 +0800 Subject: [PATCH 2/3] fix --- broker/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/broker/server.go b/broker/server.go index 58eb49b..1cb1700 100644 --- a/broker/server.go +++ b/broker/server.go @@ -10,6 +10,7 @@ import ( . "github.com/alsm/hrotti/packets" "github.com/google/uuid" "golang.org/x/net/websocket" + "fmt" ) type Hrotti struct { @@ -175,7 +176,9 @@ func (h *Hrotti) InitClient(conn net.Conn) { cp.fixedHeader = cph cp.unpack(body)*/ rp, _ := ReadPacket(conn) + fmt.Println("====") cp := rp.(*ConnectPacket) + fmt.Println("1111") //Validate the CONNECT, check fields, values etc. rc := cp.Validate() From 11f547a5fb428de756ee6083cb478ba251a631da Mon Sep 17 00:00:00 2001 From: SITSGRestia <1625016239@qq.com> Date: Thu, 16 Nov 2017 10:12:56 +0800 Subject: [PATCH 3/3] update authorization --- broker/server.go | 3 --- packets/connect.go | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/broker/server.go b/broker/server.go index 1cb1700..58eb49b 100644 --- a/broker/server.go +++ b/broker/server.go @@ -10,7 +10,6 @@ import ( . "github.com/alsm/hrotti/packets" "github.com/google/uuid" "golang.org/x/net/websocket" - "fmt" ) type Hrotti struct { @@ -176,9 +175,7 @@ func (h *Hrotti) InitClient(conn net.Conn) { cp.fixedHeader = cph cp.unpack(body)*/ rp, _ := ReadPacket(conn) - fmt.Println("====") cp := rp.(*ConnectPacket) - fmt.Println("1111") //Validate the CONNECT, check fields, values etc. rc := cp.Validate() diff --git a/packets/connect.go b/packets/connect.go index e8d0414..95c3401 100644 --- a/packets/connect.go +++ b/packets/connect.go @@ -100,7 +100,7 @@ func (c *ConnectPacket) Unpack(b io.Reader) { func (c *ConnectPacket) Validate() byte { //////////////////////修改////////////////////////// - if string(c.Password) != userName || c.Username != password{ + if string(c.Password) != password || c.Username != userName{ return CONN_REF_BAD_USER_PASS } //////////////////////修改//////////////////////////