mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 23:44:52 +01:00
signserver cleanup
This commit is contained in:
@@ -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...)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user