Update to support custom shop name and id
Bump dependency
This commit is contained in:
parent
5997452412
commit
64da380363
@ -12,10 +12,9 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ChoETL" Version="1.2.1.52" />
|
<PackageReference Include="ChoETL" Version="1.2.1.64" />
|
||||||
<PackageReference Include="FlexLabs.EntityFrameworkCore.Upsert" Version="7.0.0" />
|
<PackageReference Include="FlexLabs.EntityFrameworkCore.Upsert" Version="7.0.0" />
|
||||||
<PackageReference Include="MediatR" Version="11.1.0" />
|
<PackageReference Include="MediatR" Version="12.1.1" />
|
||||||
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.2" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
|
||||||
|
@ -9,6 +9,7 @@ public static class XmlSerializationExtensions
|
|||||||
public static T DeserializeCardData<T>(this string source) where T : class
|
public static T DeserializeCardData<T>(this string source) where T : class
|
||||||
{
|
{
|
||||||
using var reader = new ChoXmlReader<T>(new StringReader(source)).WithXPath("/root/data");
|
using var reader = new ChoXmlReader<T>(new StringReader(source)).WithXPath("/root/data");
|
||||||
|
reader.Configuration.IgnoreFieldValueMode = ChoIgnoreFieldValueMode.Any;
|
||||||
|
|
||||||
var result = reader.Read();
|
var result = reader.Read();
|
||||||
result.ThrowIfNull();
|
result.ThrowIfNull();
|
||||||
|
@ -12,7 +12,7 @@ public static class DependencyInjection
|
|||||||
{
|
{
|
||||||
public static IServiceCollection AddApplication(this IServiceCollection services)
|
public static IServiceCollection AddApplication(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
services.AddMediatR(Assembly.GetExecutingAssembly());
|
services.AddMediatR(configuration => configuration.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()));
|
||||||
|
|
||||||
services.AddScoped<ICardDependencyAggregate, CardDependencyAggregate>();
|
services.AddScoped<ICardDependencyAggregate, CardDependencyAggregate>();
|
||||||
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(UnhandledExceptionBehaviour<,>));
|
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(UnhandledExceptionBehaviour<,>));
|
||||||
|
@ -12,11 +12,13 @@ public record CertifyCommand(string? Gid, string? Mac, string? Random, string? M
|
|||||||
public partial class CertifyCommandHandler : IRequestHandler<CertifyCommand, string>
|
public partial class CertifyCommandHandler : IRequestHandler<CertifyCommand, string>
|
||||||
{
|
{
|
||||||
private readonly RelayConfig relayConfig;
|
private readonly RelayConfig relayConfig;
|
||||||
|
|
||||||
|
|
||||||
public CertifyCommandHandler(IOptions<RelayConfig> relayOptions)
|
private readonly AuthConfig authConfig;
|
||||||
|
|
||||||
|
public CertifyCommandHandler(IOptions<RelayConfig> relayOptions, IOptions<AuthConfig> authOptions)
|
||||||
{
|
{
|
||||||
relayConfig = relayOptions.Value;
|
relayConfig = relayOptions.Value;
|
||||||
|
authConfig = authOptions.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<string> Handle(CertifyCommand request, CancellationToken cancellationToken)
|
public Task<string> Handle(CertifyCommand request, CancellationToken cancellationToken)
|
||||||
@ -41,7 +43,7 @@ public partial class CertifyCommandHandler : IRequestHandler<CertifyCommand, str
|
|||||||
return Task.FromResult(QuitWithError(ErrorCode.ErrorNoHash));
|
return Task.FromResult(QuitWithError(ErrorCode.ErrorNoHash));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!MacValid(request.Mac))
|
if (!MacValid(request.Mac) )
|
||||||
{
|
{
|
||||||
return Task.FromResult(QuitWithError(ErrorCode.ErrorInvalidMac));
|
return Task.FromResult(QuitWithError(ErrorCode.ErrorInvalidMac));
|
||||||
}
|
}
|
||||||
@ -50,15 +52,31 @@ public partial class CertifyCommandHandler : IRequestHandler<CertifyCommand, str
|
|||||||
{
|
{
|
||||||
return Task.FromResult(QuitWithError(ErrorCode.ErrorInvalidHash));
|
return Task.FromResult(QuitWithError(ErrorCode.ErrorInvalidHash));
|
||||||
}
|
}
|
||||||
|
var machine = new Machine
|
||||||
|
{
|
||||||
|
TenpoId = "1337",
|
||||||
|
TenpoName = "GCLocalServer",
|
||||||
|
Pref = "nesys",
|
||||||
|
Location = "Local",
|
||||||
|
Mac = request.Mac
|
||||||
|
};
|
||||||
|
if (authConfig.Enabled)
|
||||||
|
{
|
||||||
|
machine = authConfig.Machines.FirstOrDefault(m => m.Mac == request.Mac);
|
||||||
|
if (machine is null)
|
||||||
|
{
|
||||||
|
return Task.FromResult(QuitWithError(ErrorCode.ErrorInvalidMac));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var ticket = string.Join(string.Empty,
|
var ticket = string.Join(string.Empty,
|
||||||
MD5.HashData(Encoding.UTF8.GetBytes(request.Gid)).Select(b => b.ToString("x2")));
|
MD5.HashData(Encoding.UTF8.GetBytes(request.Gid)).Select(b => b.ToString("x2")));
|
||||||
|
|
||||||
var response = $"host=card_id=7020392000147361,relay_addr={relayConfig.RelayServer},relay_port={relayConfig.RelayPort}\n" +
|
var response = $"host=card_id=7020392000147361,relay_addr={relayConfig.RelayServer},relay_port={relayConfig.RelayPort}\n" +
|
||||||
"no=1337\n" +
|
$"no={machine.TenpoId}\n" +
|
||||||
"name=GCLocalServer\n" +
|
$"name={machine.TenpoName}\n" +
|
||||||
"pref=nesys\n" +
|
$"pref={machine.Pref}\n" +
|
||||||
"addr=Local\n" +
|
$"addr={machine.Location}\n" +
|
||||||
"x-next-time=15\n" +
|
"x-next-time=15\n" +
|
||||||
$"x-img=http://{request.Host}/news.png\n" +
|
$"x-img=http://{request.Host}/news.png\n" +
|
||||||
$"x-ranking=http://{request.Host}/ranking/ranking.php\n" +
|
$"x-ranking=http://{request.Host}/ranking/ranking.php\n" +
|
||||||
|
19
Domain/Config/AuthConfig.cs
Normal file
19
Domain/Config/AuthConfig.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
namespace Domain.Config;
|
||||||
|
|
||||||
|
public class AuthConfig
|
||||||
|
{
|
||||||
|
public const string AUTH_SECTION = "Auth";
|
||||||
|
|
||||||
|
public bool Enabled { get; set; }
|
||||||
|
|
||||||
|
public List<Machine> Machines { get; set; } = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Machine
|
||||||
|
{
|
||||||
|
public string TenpoId { get; set; } = string.Empty;
|
||||||
|
public string TenpoName { get; set; } = string.Empty;
|
||||||
|
public string Pref { get; set; } = string.Empty;
|
||||||
|
public string Location { get; set; } = string.Empty;
|
||||||
|
public string Mac { get; set; } = string.Empty;
|
||||||
|
}
|
@ -7,7 +7,9 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NetEscapades.EnumGenerators" Version="1.0.0-beta06" PrivateAssets="all" ExcludeAssets="runtime" />
|
<PackageReference Include="NetEscapades.EnumGenerators" Version="1.0.0-beta08" PrivateAssets="all" ExcludeAssets="runtime">
|
||||||
|
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
|
|
||||||
|
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ADDR/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=ADDR/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=BDATA/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=BDATA/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Fcol/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Fcol/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
14
MainServer/Configurations/auth.json
Normal file
14
MainServer/Configurations/auth.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"Auth": {
|
||||||
|
"Enabled": false,
|
||||||
|
"Machines": [
|
||||||
|
{
|
||||||
|
"TenpoId": "1",
|
||||||
|
"TenpoName": "店舗1",
|
||||||
|
"Pref": "東京都",
|
||||||
|
"Location": "渋谷区",
|
||||||
|
"Mac": "000000000000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using Application.Game.Server;
|
using System.Text;
|
||||||
|
using Application.Game.Server;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace MainServer.Controllers.Game;
|
namespace MainServer.Controllers.Game;
|
||||||
@ -24,12 +25,19 @@ public class ServerController : BaseController<ServerController>
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("certify.php")]
|
[HttpGet("certify.php")]
|
||||||
public async Task<ActionResult<string>> Certify(string? gid, string? mac,
|
public async Task<ContentResult> Certify(string? gid, string? mac,
|
||||||
[FromQuery(Name = "r")]string? random, [FromQuery(Name = "md")]string? md5)
|
[FromQuery(Name = "r")]string? random, [FromQuery(Name = "md")]string? md5)
|
||||||
{
|
{
|
||||||
var host = Request.Host.Value;
|
var host = Request.Host.Value;
|
||||||
var command = new CertifyCommand(gid, mac, random, md5, host);
|
var command = new CertifyCommand(gid, mac, random, md5, host);
|
||||||
return Ok(await Mediator.Send(command));
|
var result = await Mediator.Send(command);
|
||||||
|
var shiftJis = Encoding.GetEncoding(932);
|
||||||
|
var originalBytes = Encoding.UTF8.GetBytes(result);
|
||||||
|
var converted = Encoding.Convert(Encoding.Default, shiftJis, originalBytes);
|
||||||
|
result = shiftJis.GetString(converted);
|
||||||
|
//Response.ContentType = "text/plain; charset=shift_jis";
|
||||||
|
|
||||||
|
return Content(result, "text/plain", shiftJis);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("data.php")]
|
[HttpGet("data.php")]
|
||||||
|
@ -123,6 +123,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Formatters\" />
|
||||||
<Folder Include="Logs" />
|
<Folder Include="Logs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Security.Authentication;
|
using System.Security.Authentication;
|
||||||
|
using System.Text;
|
||||||
using Application;
|
using Application;
|
||||||
using Application.Interfaces;
|
using Application.Interfaces;
|
||||||
|
using ChoETL;
|
||||||
using Domain.Config;
|
using Domain.Config;
|
||||||
using Infrastructure;
|
using Infrastructure;
|
||||||
using Infrastructure.Common;
|
using Infrastructure.Common;
|
||||||
@ -25,6 +27,8 @@ Log.Information("Server starting up...");
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||||
|
ChoETLFrxBootstrap.IsSandboxEnvironment = true;
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
@ -35,6 +39,7 @@ try
|
|||||||
.AddJsonFile($"{configurationsDirectory}/logging.json", optional: false, reloadOnChange: false)
|
.AddJsonFile($"{configurationsDirectory}/logging.json", optional: false, reloadOnChange: false)
|
||||||
.AddJsonFile($"{configurationsDirectory}/events.json", optional: true, reloadOnChange: false)
|
.AddJsonFile($"{configurationsDirectory}/events.json", optional: true, reloadOnChange: false)
|
||||||
.AddJsonFile($"{configurationsDirectory}/matching.json", optional: true, reloadOnChange: false)
|
.AddJsonFile($"{configurationsDirectory}/matching.json", optional: true, reloadOnChange: false)
|
||||||
|
.AddJsonFile($"{configurationsDirectory}/auth.json", optional: true, reloadOnChange: false)
|
||||||
.AddJsonFile($"{configurationsDirectory}/server.json", optional: true, reloadOnChange: false);
|
.AddJsonFile($"{configurationsDirectory}/server.json", optional: true, reloadOnChange: false);
|
||||||
|
|
||||||
builder.Services.Configure<EventConfig>(
|
builder.Services.Configure<EventConfig>(
|
||||||
@ -42,7 +47,9 @@ try
|
|||||||
builder.Services.Configure<RelayConfig>(
|
builder.Services.Configure<RelayConfig>(
|
||||||
builder.Configuration.GetSection(RelayConfig.RELAY_SECTION));
|
builder.Configuration.GetSection(RelayConfig.RELAY_SECTION));
|
||||||
builder.Services.Configure<GameConfig>(
|
builder.Services.Configure<GameConfig>(
|
||||||
builder.Configuration.GetSection(GameConfig.GAME_SECTION));
|
builder.Configuration.GetSection(GameConfig.GAME_SECTION));
|
||||||
|
builder.Services.Configure<AuthConfig>(
|
||||||
|
builder.Configuration.GetSection(AuthConfig.AUTH_SECTION));
|
||||||
|
|
||||||
var serverIp = builder.Configuration["ServerIp"] ?? "127.0.0.1";
|
var serverIp = builder.Configuration["ServerIp"] ?? "127.0.0.1";
|
||||||
var certificateManager = new CertificateService(serverIp, new SerilogLoggerFactory(Log.Logger).CreateLogger(""));
|
var certificateManager = new CertificateService(serverIp, new SerilogLoggerFactory(Log.Logger).CreateLogger(""));
|
||||||
|
Loading…
Reference in New Issue
Block a user