Skip to content

Commit

Permalink
more login server handler
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastian-heinz committed Jan 8, 2022
1 parent 55f45f5 commit 9276d23
Show file tree
Hide file tree
Showing 21 changed files with 417 additions and 213 deletions.
55 changes: 0 additions & 55 deletions Arrowgene.Ddon.Database/Sql/DdonMariaDb.cs

This file was deleted.

28 changes: 24 additions & 4 deletions Arrowgene.Ddon.GameServer/DdonGameServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ public class DdonGameServer
private readonly Consumer _authConsumer;
private readonly AsyncEventServer _authServer;

private readonly Consumer _gameConsumer;
private readonly AsyncEventServer _gameServer;


public DdonGameServer(GameServerSetting setting)
{
Expand All @@ -54,6 +57,17 @@ public DdonGameServer(GameServerSetting setting)
_authConsumer,
Setting.AuthServerSocketSettings
);

_gameConsumer = new Consumer(Setting, Setting.AuthServerSocketSettings, "Game");
_gameConsumer.ClientDisconnected += AuthClientDisconnected;
_gameConsumer.ClientConnected += AuthClientConnected;
_gameServer = new AsyncEventServer(
Setting.ListenIpAddress,
Setting.GameServerPort,
_gameConsumer,
Setting.AuthServerSocketSettings
);

LoadPacketHandler();
}

Expand All @@ -68,23 +82,29 @@ private void AuthClientDisconnected(Client client)

public void Start()
{
_gameServer.Start();
_authServer.Start();
}

public void Stop()
{
_authServer.Stop();
_gameServer.Stop();
}

private void LoadPacketHandler()
{
_authConsumer.AddHandler(new ClientChallengeHandler(this));
_authConsumer.AddHandler(new ClientSessionKeyHandler(this));
_authConsumer.AddHandler(new ClientX1Handler(this));
_authConsumer.AddHandler(new GetErrorMessageListReqHandler(this));
_authConsumer.AddHandler(new ClientX3Handler(this));
_authConsumer.AddHandler(new ClientX4Handler(this));
_authConsumer.AddHandler(new ClientX5Handler(this));
_authConsumer.AddHandler(new GetErrorMessageListHandler(this));
_authConsumer.AddHandler(new GetLoginSettingHandler(this));
_authConsumer.AddHandler(new GpCourseGetInfoHandler(this));
_authConsumer.AddHandler(new GetCharacterListHandler(this));
_authConsumer.AddHandler(new ClientX6Handler(this));
_authConsumer.AddHandler(new ClientX8Handler(this));
_authConsumer.AddHandler(new ClientX9Handler(this));
_authConsumer.AddHandler(new ClientX10Handler(this));
}
}
}
3 changes: 3 additions & 0 deletions Arrowgene.Ddon.GameServer/GameServerSetting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public string DataAuthIpAddress
}

[DataMember(Order = 2)] public ushort AuthServerPort { get; set; }
[DataMember(Order = 2)] public ushort GameServerPort { get; set; }
[DataMember(Order = 10)] public bool NeedRegistration { get; set; }
[DataMember(Order = 20)] public int LogLevel { get; set; }
[DataMember(Order = 21)] public bool LogUnknownIncomingPackets { get; set; }
Expand All @@ -46,6 +47,7 @@ public GameServerSetting()
ListenIpAddress = IPAddress.Any;
AuthServerIpAddress = IPAddress.Loopback;
AuthServerPort = 52100;
GameServerPort = 52000;
NeedRegistration = false;
LogLevel = 0;
LogUnknownIncomingPackets = true;
Expand All @@ -60,6 +62,7 @@ public GameServerSetting(GameServerSetting setting)
ListenIpAddress = setting.ListenIpAddress;
AuthServerIpAddress = setting.AuthServerIpAddress;
AuthServerPort = setting.AuthServerPort;
GameServerPort = setting.GameServerPort;
NeedRegistration = setting.NeedRegistration;
LogLevel = setting.LogLevel;
LogUnknownIncomingPackets = setting.LogUnknownIncomingPackets;
Expand Down
10 changes: 5 additions & 5 deletions Arrowgene.Ddon.GameServer/Handler/ClientSessionKeyHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public ClientSessionKeyHandler(DdonGameServer server) : base(server)
{
}

public override PacketId Id => PacketId.C2L_SESSION_KEY_REQ;
public override PacketId Id => PacketId.C2L_GET_GAME_SESSION_KEY_REQ;

public override void Handle(Client client, Packet packet)
{
Expand All @@ -32,12 +32,12 @@ public override void Handle(Client client, Packet packet)
buffer.WriteInt32(0); //n_result
buffer.WriteUInt16(0);
buffer.WriteUInt16(0);

// buffer.WriteByte(0x1F); //str len ??
// buffer.WriteString("F3829860AD5A421A87BD34C289147CB36"); // but it is longer..?
buffer.WriteByte((byte)client.State.SessionKey.Length);
buffer.WriteByte((byte) client.State.SessionKey.Length);
buffer.WriteString(client.State.SessionKey);

buffer.WriteByte(0);
buffer.WriteByte(0);
buffer.WriteByte(0);
Expand All @@ -47,7 +47,7 @@ public override void Handle(Client client, Packet packet)
buffer.WriteByte(0xFE);
buffer.WriteByte(0x7C);
buffer.WriteInt32(0);
client.Send(new Packet(PacketId.L2C_SESSION_KEY_RES, buffer.GetAllBytes(), PacketSource.Server));
client.Send(new Packet(PacketId.L2C_GET_GAME_SESSION_KEY_RES, buffer.GetAllBytes(), PacketSource.Server));
}
}
}
25 changes: 25 additions & 0 deletions Arrowgene.Ddon.GameServer/Handler/ClientX10Handler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.GameServer.Logging;
using Arrowgene.Ddon.GameServer.Network;
using Arrowgene.Logging;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class ClientX10Handler : PacketHandler
{
private static readonly DdonLogger Logger = LogProvider.Logger<DdonLogger>(typeof(ClientX10Handler));


public ClientX10Handler(DdonGameServer server) : base(server)
{
}

public override PacketId Id => PacketId.X10_REQ;

public override void Handle(Client client, Packet packet)
{
client.Send(LoginDump.Dump_36);
}
}
}
2 changes: 1 addition & 1 deletion Arrowgene.Ddon.GameServer/Handler/ClientX1Handler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public override void Handle(Client client, Packet packet)
// buffer.WriteString("F3829860AD5A4"); // but it is shorter?
buffer.WriteByte((byte) client.State.SessionKey.Length);
buffer.WriteString(client.State.SessionKey);

client.Send(new Packet(PacketId.X1_RES, buffer.GetAllBytes(), PacketSource.Server));
}
}
Expand Down
25 changes: 0 additions & 25 deletions Arrowgene.Ddon.GameServer/Handler/ClientX3Handler.cs

This file was deleted.

25 changes: 0 additions & 25 deletions Arrowgene.Ddon.GameServer/Handler/ClientX4Handler.cs

This file was deleted.

38 changes: 38 additions & 0 deletions Arrowgene.Ddon.GameServer/Handler/ClientX6Handler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.GameServer.Logging;
using Arrowgene.Ddon.GameServer.Network;
using Arrowgene.Logging;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class ClientX6Handler : PacketHandler
{
private static readonly DdonLogger Logger = LogProvider.Logger<DdonLogger>(typeof(ClientX6Handler));


public ClientX6Handler(DdonGameServer server) : base(server)
{
}

public override PacketId Id => PacketId.X60;

public override void Handle(Client client, Packet packet)
{
client.Send(LoginDump.Dump_28);
client.Send(LoginDump.Dump_31);


string ip = "127.0.0.1";
IBuffer buffer = new StreamBuffer(LoginDump.data_Dump_32);
buffer.SetPositionStart();
buffer.Position = 47;
buffer.WriteUInt16((ushort)ip.Length, Endianness.Big);
buffer.WriteString(ip);
buffer.WriteUInt16(52000, Endianness.Big);
buffer.WriteBytes(new byte[]{0x0 ,0x1 ,0x46 ,0xE9 ,0x1D});
byte[] data = buffer.GetBytes(0, buffer.Position);
client.Send(new Packet(PacketId.X8, data, PacketSource.Server));
}
}
}
24 changes: 24 additions & 0 deletions Arrowgene.Ddon.GameServer/Handler/ClientX8Handler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.GameServer.Logging;
using Arrowgene.Ddon.GameServer.Network;
using Arrowgene.Logging;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class ClientX8Handler : PacketHandler
{
private static readonly DdonLogger Logger = LogProvider.Logger<DdonLogger>(typeof(ClientX8Handler));


public ClientX8Handler(DdonGameServer server) : base(server)
{
}

public override PacketId Id => PacketId.X8;

public override void Handle(Client client, Packet packet)
{

}
}
}
24 changes: 24 additions & 0 deletions Arrowgene.Ddon.GameServer/Handler/ClientX9Handler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.GameServer.Logging;
using Arrowgene.Ddon.GameServer.Network;
using Arrowgene.Logging;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class ClientX9Handler : PacketHandler
{
private static readonly DdonLogger Logger = LogProvider.Logger<DdonLogger>(typeof(ClientX9Handler));


public ClientX9Handler(DdonGameServer server) : base(server)
{
}

public override PacketId Id => PacketId.X9_REQ;

public override void Handle(Client client, Packet packet)
{
client.Send(LoginDump.Dump_34);
}
}
}
33 changes: 33 additions & 0 deletions Arrowgene.Ddon.GameServer/Handler/GetCharacterListHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.GameServer.Logging;
using Arrowgene.Ddon.GameServer.Network;
using Arrowgene.Ddon.Shared.Entity;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Logging;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class GetCharacterListHandler : PacketHandler
{
private static readonly DdonLogger Logger = LogProvider.Logger<DdonLogger>(typeof(GetCharacterListHandler));


public GetCharacterListHandler(DdonGameServer server) : base(server)
{
}

public override PacketId Id => PacketId.C2L_GET_CHARACTER_LIST_REQ;

public override void Handle(Client client, Packet packet)
{
// IBuffer buffer = new StreamBuffer();
// CDataCharacterListInfo character = new CDataCharacterListInfo();
// EntitySerializer.Get<CDataCharacterListInfo>().Write(buffer, character);
// Packet response = new Packet(PacketId.L2C_CLIENT_CHALLENGE_RES, buffer.GetAllBytes(), PacketSource.Server);
// client.Send(response);

client.Send(LoginDump.Dump_24);
}
}
}
Loading

0 comments on commit 9276d23

Please sign in to comment.