signserver cleanup

This commit is contained in:
wish
2022-10-18 11:42:12 +11:00
parent c6c247b56b
commit 5e42402a3d
3 changed files with 17 additions and 38 deletions

View File

@@ -148,7 +148,7 @@ func (s *Server) getFriendsForCharacters(chars []character) []members {
if err != nil { if err != nil {
continue continue
} }
for i, _ := range charFriends { for i := range charFriends {
charFriends[i].CID = char.ID charFriends[i].CID = char.ID
} }
friends = append(friends, charFriends...) friends = append(friends, charFriends...)

View File

@@ -16,32 +16,19 @@ import (
type Session struct { type Session struct {
sync.Mutex sync.Mutex
logger *zap.Logger logger *zap.Logger
sid int
server *Server server *Server
rawConn *net.Conn rawConn net.Conn
cryptConn *network.CryptConn cryptConn *network.CryptConn
} }
func (s *Session) fail() {
s.server.Lock()
delete(s.server.sessions, s.sid)
s.server.Unlock()
}
func (s *Session) work() { func (s *Session) work() {
for { pkt, err := s.cryptConn.ReadPacket()
pkt, err := s.cryptConn.ReadPacket() if err != nil {
if err != nil { return
s.fail() }
return err = s.handlePacket(pkt)
} if err != nil {
return
err = s.handlePacket(pkt)
if err != nil {
s.fail()
return
}
} }
} }
@@ -61,6 +48,7 @@ func (s *Session) handlePacket(pkt []byte) error {
case "DELETE:100": case "DELETE:100":
loginTokenString := string(bf.ReadNullTerminatedBytes()) loginTokenString := string(bf.ReadNullTerminatedBytes())
characterID := int(bf.ReadUint32()) characterID := int(bf.ReadUint32())
_ = int(bf.ReadUint32()) // login_token_number
s.server.deleteCharacter(characterID, loginTokenString) s.server.deleteCharacter(characterID, loginTokenString)
sugar.Infof("Deleted character ID: %v\n", characterID) sugar.Infof("Deleted character ID: %v\n", characterID)
err := s.cryptConn.SendPacket([]byte{0x01}) // DEL_SUCCESS err := s.cryptConn.SendPacket([]byte{0x01}) // DEL_SUCCESS
@@ -78,13 +66,13 @@ func (s *Session) handleDSGNRequest(bf *byteframe.ByteFrame) error {
reqUsername := string(bf.ReadNullTerminatedBytes()) reqUsername := string(bf.ReadNullTerminatedBytes())
reqPassword := string(bf.ReadNullTerminatedBytes()) reqPassword := string(bf.ReadNullTerminatedBytes())
reqUnk := string(bf.ReadNullTerminatedBytes()) reqSkey := string(bf.ReadNullTerminatedBytes())
s.server.logger.Info( s.server.logger.Info(
"Got sign in request", "Got sign in request",
zap.String("reqUsername", reqUsername), zap.String("reqUsername", reqUsername),
zap.String("reqPassword", reqPassword), zap.String("reqPassword", reqPassword),
zap.String("reqUnk", reqUnk), zap.String("reqSkey", reqSkey),
) )
newCharaReq := false newCharaReq := false

View File

@@ -24,7 +24,6 @@ type Server struct {
sync.Mutex sync.Mutex
logger *zap.Logger logger *zap.Logger
erupeConfig *config.Config erupeConfig *config.Config
sid int
sessions map[int]*Session sessions map[int]*Session
db *sqlx.DB db *sqlx.DB
listener net.Listener listener net.Listener
@@ -36,8 +35,6 @@ func NewServer(config *Config) *Server {
s := &Server{ s := &Server{
logger: config.Logger, logger: config.Logger,
erupeConfig: config.ErupeConfig, erupeConfig: config.ErupeConfig,
sid: 0,
sessions: make(map[int]*Session),
db: config.DB, db: config.DB,
} }
return s return s
@@ -84,20 +81,19 @@ func (s *Server) acceptClients() {
} }
} }
go s.handleConnection(s.sid, conn) go s.handleConnection(conn)
s.sid++
} }
} }
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())) 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. // Client initalizes the connection with a one-time buffer of 8 NULL bytes.
nullInit := make([]byte, 8) nullInit := make([]byte, 8)
_, err := io.ReadFull(conn, nullInit) _, err := io.ReadFull(conn, nullInit)
if err != nil { if err != nil {
fmt.Println(err) s.logger.Error("Error initialising sign server connection", zap.Error(err))
conn.Close()
return return
} }
@@ -105,15 +101,10 @@ func (s *Server) handleConnection(sid int, conn net.Conn) {
session := &Session{ session := &Session{
logger: s.logger, logger: s.logger,
server: s, server: s,
rawConn: &conn, rawConn: conn,
cryptConn: network.NewCryptConn(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. // Do the session's work.
session.work() session.work()
} }