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..95c3401 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) != password || c.Username != userName{ + return CONN_REF_BAD_USER_PASS + } + //////////////////////修改////////////////////////// if c.PasswordFlag && !c.UsernameFlag { return CONN_REF_BAD_USER_PASS }