mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-14 07:55:01 +01:00
clean up code
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user