From 5e42402a3d696a9f97358da4a58b78ab0f747863 Mon Sep 17 00:00:00 2001 From: wish Date: Tue, 18 Oct 2022 11:42:12 +1100 Subject: [PATCH] signserver cleanup --- server/signserver/dbutils.go | 2 +- server/signserver/session.go | 34 +++++++++++--------------------- server/signserver/sign_server.go | 19 +++++------------- 3 files changed, 17 insertions(+), 38 deletions(-) diff --git a/server/signserver/dbutils.go b/server/signserver/dbutils.go index 5e99d4c85..213a74a14 100644 --- a/server/signserver/dbutils.go +++ b/server/signserver/dbutils.go @@ -148,7 +148,7 @@ func (s *Server) getFriendsForCharacters(chars []character) []members { if err != nil { continue } - for i, _ := range charFriends { + for i := range charFriends { charFriends[i].CID = char.ID } friends = append(friends, charFriends...) diff --git a/server/signserver/session.go b/server/signserver/session.go index aef6508b1..f52ebb401 100644 --- a/server/signserver/session.go +++ b/server/signserver/session.go @@ -16,32 +16,19 @@ import ( type Session struct { sync.Mutex logger *zap.Logger - sid int server *Server - rawConn *net.Conn + rawConn net.Conn cryptConn *network.CryptConn } -func (s *Session) fail() { - s.server.Lock() - delete(s.server.sessions, s.sid) - s.server.Unlock() - -} - func (s *Session) work() { - for { - pkt, err := s.cryptConn.ReadPacket() - if err != nil { - s.fail() - return - } - - err = s.handlePacket(pkt) - if err != nil { - s.fail() - return - } + pkt, err := s.cryptConn.ReadPacket() + if err != nil { + return + } + err = s.handlePacket(pkt) + if err != nil { + return } } @@ -61,6 +48,7 @@ func (s *Session) handlePacket(pkt []byte) error { case "DELETE:100": loginTokenString := string(bf.ReadNullTerminatedBytes()) characterID := int(bf.ReadUint32()) + _ = int(bf.ReadUint32()) // login_token_number s.server.deleteCharacter(characterID, loginTokenString) sugar.Infof("Deleted character ID: %v\n", characterID) err := s.cryptConn.SendPacket([]byte{0x01}) // DEL_SUCCESS @@ -78,13 +66,13 @@ func (s *Session) handleDSGNRequest(bf *byteframe.ByteFrame) error { reqUsername := string(bf.ReadNullTerminatedBytes()) reqPassword := string(bf.ReadNullTerminatedBytes()) - reqUnk := string(bf.ReadNullTerminatedBytes()) + reqSkey := string(bf.ReadNullTerminatedBytes()) s.server.logger.Info( "Got sign in request", zap.String("reqUsername", reqUsername), zap.String("reqPassword", reqPassword), - zap.String("reqUnk", reqUnk), + zap.String("reqSkey", reqSkey), ) newCharaReq := false diff --git a/server/signserver/sign_server.go b/server/signserver/sign_server.go index 02bafb10d..6d567e126 100644 --- a/server/signserver/sign_server.go +++ b/server/signserver/sign_server.go @@ -24,7 +24,6 @@ type Server struct { sync.Mutex logger *zap.Logger erupeConfig *config.Config - sid int sessions map[int]*Session db *sqlx.DB listener net.Listener @@ -36,8 +35,6 @@ func NewServer(config *Config) *Server { s := &Server{ logger: config.Logger, erupeConfig: config.ErupeConfig, - sid: 0, - sessions: make(map[int]*Session), db: config.DB, } return s @@ -84,20 +81,19 @@ func (s *Server) acceptClients() { } } - go s.handleConnection(s.sid, conn) - s.sid++ + go s.handleConnection(conn) } } -func (s *Server) handleConnection(sid int, conn net.Conn) { +func (s *Server) handleConnection(conn net.Conn) { s.logger.Info("Got connection to sign server", zap.String("remoteaddr", conn.RemoteAddr().String())) + defer conn.Close() // Client initalizes the connection with a one-time buffer of 8 NULL bytes. nullInit := make([]byte, 8) _, err := io.ReadFull(conn, nullInit) if err != nil { - fmt.Println(err) - conn.Close() + s.logger.Error("Error initialising sign server connection", zap.Error(err)) return } @@ -105,15 +101,10 @@ func (s *Server) handleConnection(sid int, conn net.Conn) { session := &Session{ logger: s.logger, server: s, - rawConn: &conn, + rawConn: conn, cryptConn: network.NewCryptConn(conn), } - // Add the session to the server's sessions map. - s.Lock() - s.sessions[sid] = session - s.Unlock() - // Do the session's work. session.work() }