clean up code

This commit is contained in:
Mikhail
2024-07-05 14:08:05 -04:00
parent 5036097c9d
commit d08c293cd4
31 changed files with 105 additions and 337 deletions

View File

@@ -38,9 +38,6 @@ namespace nksrv.LobbyServer
}
public static async Task DispatchSingle(IHttpContext ctx)
{
//var x = new RedirectionHandler();
//await x.HandleAsync(ctx);
//return;
LobbyMsgHandler? handler = null;
foreach (var item in Handlers)
{
@@ -53,11 +50,9 @@ namespace nksrv.LobbyServer
if (handler == null)
{
ctx.Response.StatusCode = 404;
//Logger.Error("HTTPS: No handler for /v1/" + ctx.RequestedPath);
}
else
{
// todo move everClass1.csything to its own handler
handler.Reset();
await handler.HandleAsync(ctx);
return;
@@ -75,7 +70,6 @@ namespace nksrv.LobbyServer
var info = new GameClientInfo() { ClientPublicKey = publicKey.ToArray() };
var box = SodiumKeyExchange.CalculateServerSharedSecret(JsonDb.ServerPublicKey, JsonDb.ServerPrivateKey, publicKey.ToArray());
info.Keys = box;
@@ -157,19 +151,18 @@ namespace nksrv.LobbyServer
/// <summary>
/// Client public key generated by game client
/// </summary>
public byte[] ClientPublicKey;
public byte[] ClientPublicKey = [];
/// <summary>
/// Authentication token
/// </summary>
public string ClientAuthToken;
public string ClientAuthToken = "";
/// <summary>
/// Rx/Tx key pair
/// </summary>
public SodiumKeyExchangeSharedSecretBox Keys;
public SodiumKeyExchangeSharedSecretBox Keys = new();
/// <summary>
/// User ID of the user
/// </summary>
public ulong UserId;
}
}

View File

@@ -12,12 +12,11 @@ namespace nksrv.LobbyServer.Msgs.Antibot
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqBattleReportData>();
// I don't really care about reimplementing the server side anticheat, so return
var req = await ReadData<ReqBattleReportData>();
var response = new ResBattleReportData();
// this is responsible for server side anticheat
WriteData(response);
}
}

View File

@@ -12,7 +12,7 @@ namespace nksrv.LobbyServer.Msgs.Badge
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqDeleteBadge>();
var req = await ReadData<ReqDeleteBadge>();
var response = new ResDeleteBadge();

View File

@@ -12,12 +12,12 @@ namespace nksrv.LobbyServer.Msgs.Gacha
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqCheckDailyFreeGacha>();
var req = await ReadData<ReqCheckDailyFreeGacha>();
var response = new ResCheckDailyFreeGacha();
// TODO implement
response.FreeCount = 1000;
response.FreeCount = 0;
response.EventData = new NetEventData() { Id = 1 };
WriteData(response);

View File

@@ -12,7 +12,7 @@ namespace nksrv.LobbyServer.Msgs.Messenger
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqGetPickedMessageList>();
var req = await ReadData<ReqGetPickedMessageList>();
// TODO: get proper response
var response = new ResGetPickedMessageList();

View File

@@ -12,7 +12,7 @@ namespace nksrv.LobbyServer.Msgs.Messenger
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqForcePickTodayRandomMessage>();
var req = await ReadData<ReqForcePickTodayRandomMessage>();
// TODO: get proper response
var response = new ResForcePickTodayRandomMessage();

View File

@@ -7,7 +7,7 @@ namespace nksrv.LobbyServer.Msgs.Messenger
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqProceedMessage>();
var req = await ReadData<ReqProceedMessage>();
// TODO: save these things
var response = new ResProceedMessage();

View File

@@ -12,7 +12,7 @@ namespace nksrv.LobbyServer.Msgs.Mission.Rewards
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqGetDailyRewardedData>();
var req = await ReadData<ReqGetDailyRewardedData>();
// TODO: implement
var response = new ResGetDailyRewardedData();

View File

@@ -7,7 +7,7 @@ namespace nksrv.LobbyServer.Msgs.Outpost
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqGetJukeboxRewardedData>();
var req = await ReadData<ReqGetJukeboxRewardedData>();
// TODO: save these things
var response = new ResGetJukeboxRewardedData();

View File

@@ -1,69 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using EmbedIO;
using nksrv.Utils;
using Sodium;
using System.IO.Compression;
namespace nksrv.LobbyServer.Msgs
{
public class RedirectionHandler : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
byte[] reqBody = ctx == null ? Contents : (await DecryptOrReturnContentAsync(ctx)).Contents;
HttpClientHandler handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
AllowAutoRedirect = true // from gameassembly dll
};
HttpClient client = new(new LoggingHttpHandler(handler));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream+protobuf"));
client.BaseAddress = new Uri("https://global-lobby.nikke-kr.com");
client.DefaultRequestVersion = HttpVersion.Version20;
var systemContent = new ByteArrayContent(reqBody);
systemContent.Headers.Remove("Content-Type");
if (ctx.Request.ContentLength64 != 0)
systemContent.Headers.Add("Content-Type", "application/octet-stream+protobuf");
systemContent.Headers.Add("Content-Length", ctx.Request.ContentLength64.ToString());
// request.Content = systemContent;// CONTENT-TYPE header
var result = await client.PostAsync(ctx.Request.RawUrl, systemContent);
var bt = await result.Content.ReadAsByteArrayAsync();
ctx.Response.ContentEncoding = null;
ctx.Response.ContentType = result.Content.Headers.GetValues("Content-Type").First();
ctx.Response.ContentLength64 = bt.Length;
ctx.Response.OutputStream.Write(bt, 0, bt.Length);
ctx.Response.OutputStream.Flush();
}
public static async Task<PacketDecryptResponse> DecryptOrReturnContentAsync(IHttpContext ctx)
{
using MemoryStream buffer = new MemoryStream();
var stream = ctx.Request.InputStream;
var encoding = ctx.Request.Headers[HttpHeaderNames.ContentEncoding]?.Trim();
Stream decryptedStream = encoding switch
{
CompressionMethodNames.Gzip => new GZipStream(stream, CompressionMode.Decompress),
CompressionMethodNames.Deflate => new DeflateStream(stream, CompressionMode.Decompress),
CompressionMethodNames.None or null => stream,
"gzip,enc" => stream,
_ => throw HttpException.BadRequest($"Unsupported content encoding \"{encoding}\""),
};
await stream.CopyToAsync(buffer, 81920, ctx.CancellationToken).ConfigureAwait(continueOnCapturedContext: false);
return new PacketDecryptResponse() { Contents = buffer.ToArray() };
}
}
}

View File

@@ -12,7 +12,7 @@ namespace nksrv.LobbyServer.Msgs.Stage
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqEnterStage>();
var req = await ReadData<ReqEnterStage>();
var response = new ResEnterStage();