1
0
mirror of synced 2024-11-27 15:40:49 +01:00

Minor fixes and prepare for release

This commit is contained in:
asesidaa 2023-02-23 01:15:53 +08:00
parent eb4380b6d5
commit 7c5c2fafb7
11 changed files with 169 additions and 46 deletions

View File

@ -19,6 +19,7 @@
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.2" />
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
<PackageReference Include="Microsoft.NETCore.Targets" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Quartz.AspNetCore" Version="3.6.0" />
<PackageReference Include="Riok.Mapperly" Version="2.7.0-next.2" />
<PackageReference Include="Throw" Version="1.3.1" />

View File

@ -56,11 +56,11 @@ public static class DependencyInjection
});
});
q.AddJob<MaintainTenpoIdJob>(options => options.WithIdentity(MaintainTenpoIdJob.KEY));
q.AddJob<MaintainNullValuesJob>(options => options.WithIdentity(MaintainNullValuesJob.KEY));
q.AddTrigger(options =>
{
options.ForJob(MaintainTenpoIdJob.KEY)
.WithIdentity("MaintainTenpoIdJob-trigger")
options.ForJob(MaintainNullValuesJob.KEY)
.WithIdentity("MaintainNullValuesJob-trigger")
.StartNow()
.WithSimpleSchedule(x =>
{

View File

@ -25,7 +25,7 @@ public class ReadAvatarQueryHandler : RequestHandlerBase<ReadAvatarQuery, string
Created = "2013-01-01 08:00:00",
Modified = "2013-01-01 08:00:00",
NewFlag = 0,
UseFlag = i == 10 ? 0 : 1
UseFlag = 1
};
list.Add(avatar);
}

View File

@ -26,7 +26,7 @@ public class ReadNavigatorQueryHandler : RequestHandlerBase<ReadNavigatorQuery,
Created = "2013-01-01 08:00:00",
Modified = "2013-01-01 08:00:00",
NewFlag = 0,
UseFlag = i == 10 ? 0 : 1
UseFlag = 1
};
list.Add(navigator);
}

View File

@ -4,15 +4,15 @@ using Quartz;
namespace Application.Jobs;
public class MaintainTenpoIdJob : IJob
public class MaintainNullValuesJob : IJob
{
private readonly ILogger<MaintainTenpoIdJob> logger;
private readonly ILogger<MaintainNullValuesJob> logger;
private readonly ICardDbContext cardDbContext;
public static readonly JobKey KEY = new("MaintainTenpoIdJob");
public static readonly JobKey KEY = new("MaintainNullValuesJob");
public MaintainTenpoIdJob(ILogger<MaintainTenpoIdJob> logger, ICardDbContext cardDbContext)
public MaintainNullValuesJob(ILogger<MaintainNullValuesJob> logger, ICardDbContext cardDbContext)
{
this.logger = logger;
this.cardDbContext = cardDbContext;
@ -26,8 +26,13 @@ public class MaintainTenpoIdJob : IJob
logger.LogInformation("Starting changing null values in card detail table");
var details = await cardDbContext.CardDetails.Where(detail => detail.LastPlayTenpoId == null ||
detail.LastPlayTenpoId == "GC local server").ToListAsync();
details.ForEach(detail => detail.LastPlayTenpoId="1337");
detail.LastPlayTenpoId == "GC local server"
|| detail.LastPlayTime == null).ToListAsync();
details.ForEach(detail =>
{
detail.LastPlayTenpoId = "1337";
detail.LastPlayTime = DateTime.MinValue;
});
cardDbContext.CardDetails.UpdateRange(details);
var count = await cardDbContext.SaveChangesAsync(new CancellationToken());

View File

@ -7,8 +7,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GC-local-server-rewrite", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedProject", "SharedProject\SharedProject.csproj", "{C01D0576-9D4E-4535-8055-C4905433A1EB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudAdmin", "MudAdmin\MudAdmin.csproj", "{DC8E30E9-F81E-4E28-A4D2-F4576C77FFBE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GCRelayServer", "GCRelayServer\GCRelayServer.csproj", "{268178DF-6345-4D9E-A389-9E809CBF39C9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatchServer", "MatchServer\MatchServer.csproj", "{CB91C3D3-ED69-4DC6-A205-B262A08BEE49}"
@ -39,10 +37,6 @@ Global
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Release|Any CPU.Build.0 = Release|Any CPU
{DC8E30E9-F81E-4E28-A4D2-F4576C77FFBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC8E30E9-F81E-4E28-A4D2-F4576C77FFBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC8E30E9-F81E-4E28-A4D2-F4576C77FFBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC8E30E9-F81E-4E28-A4D2-F4576C77FFBE}.Release|Any CPU.Build.0 = Release|Any CPU
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Release|Any CPU.ActiveCfg = Release|Any CPU

View File

@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "7.0.3",
"commands": [
"dotnet-ef"
]
}
}
}

View File

@ -94,14 +94,14 @@
<ItemGroup>
<ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
<ProjectReference Include="..\WebUI\WebUI.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Logs" />
</ItemGroup>
<ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<ProjectReference Include="..\WebUI\WebUI.csproj" />
<_ContentIncludedByDefault Remove="wwwroot\_framework\blazor.boot.json" />
<_ContentIncludedByDefault Remove="wwwroot\_framework\blazor.webassembly.js" />
<_ContentIncludedByDefault Remove="wwwroot\_framework\blazor.webassembly.js.gz" />

View File

@ -17,5 +17,9 @@
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\sample-data\weather.json" />
</ItemGroup>
</Project>

View File

@ -1,27 +0,0 @@
[
{
"date": "2018-05-06",
"temperatureC": 1,
"summary": "Freezing"
},
{
"date": "2018-05-07",
"temperatureC": 14,
"summary": "Bracing"
},
{
"date": "2018-05-08",
"temperatureC": -13,
"summary": "Freezing"
},
{
"date": "2018-05-09",
"temperatureC": -16,
"summary": "Balmy"
},
{
"date": "2018-05-10",
"temperatureC": -2,
"summary": "Chilly"
}
]

134
doc/Certifications.md Normal file
View File

@ -0,0 +1,134 @@
# Run on Arcade Machine
Since the arcade is using some version XP, which does not support SHA256, the generated certification will not work.
To solve this issue, you have to generate a certification using weaker signature algorithm.
For certificate generation, I am using https://certificatetools.com/
## Generate Root CA
First generate a root CA, by choosing the Root Certificate Authority.
Under Subject Attributes, set Common Name to "Taito Arcade Machine CA", others are optional and can have any value.
Under CSR options, choose MD5 as hash algorithm, choose Self-Sign type, then input year number.
Submit and download "PKCS#12 Certificate and Key".
## Generate Server Certificate
Then generate server certificate, by choose Web Server as template.
Under Subject Attributes, change Common Name to "GC local server"
Under Subject Alternative Names, add DNS: cert.nesys.jp,data.nesys.jp,nesys.taito.co.jp,fjm170920zero.nesica.net
Under CSR options, choose MD5 as hash algorithm, choose Sign With Certificate Authority 0 (the one just generated), then input year number.
Submit and download "PKCS#12 Certificate and Key".
## Import to server side
In server side, import the certificates using mmc.exe. You can find a detailed guide at https://www.thesslstore.com/knowledgebase/ssl-install/how-to-import-intermediate-root-certificates-using-mmc/
Before import, first delete any old certificate Named "Taito Arcade Machine CA" or "GC local server" under Personal and "Trusted Root Certification Authorities"
The root certificate goes to "Personal" and "Trusted Root Certification Authorities"
The server certificate goes to "Personal"
## Import to game side
On the machine, first download and install http://outwardtruth.com/tools/win2k3tools/win2k3resourcetoolkit.htm
After that, you will get WinHttpCertCfg.exe in "C:\Program Files\Windows Resource Kits\Tools". Use the following cmd to import root certificate
```
WinHttpCertCfg -i "E:\0_GC_LOCAL_SERVER\root.pfx" -C LOCAL_MACHINE\Root -a SYSTEM
```
After that, using IE to install the 2 certificates to MY(Personal) tab
## Config the server
In server, the config file is GC-local-server-rewrite.exe.config
There, you will find an XML entry
```xml
<add key="ServerIp" value="127.0.0.1"/>
```
Change value to the real server Ip
Currently, there are two DB files, music.db3 and music4MAX.db3, which correspond to 4.52 and 4.61 data, change the following field according to your game version.
```xml
<add key="MusicDBName" value="music.db3"/>
```
## Config host file
In game side, change the host file, add the following entries
```
127.0.0.1 cert.nesys.jp
127.0.0.1 data.nesys.jp
127.0.0.1 nesys.taito.co.jp
127.0.0.1 fjm170920zero.nesica.net
```
You can now try to boot the game, it should be able to connect to the server.
## Troubleshooting
Import following to registry
```
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TAITO]
"DisableLocalServer"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\TAITO\TYPEX]
"UpdateStep"=dword:00000000
"LogLevel"=dword:00000003
"TrafficCount"=dword:00000002
"ConditionTime"=dword:0000012c
"EventNextTime"=dword:00000384
"LogPath"="D:\\\\system\\\\CmdFile\\\\log"
"NewsPath"="D:\\\\system\\\\DUA\\\\news"
"EventPath"="D:\\\\system\\\\DUA\\\\event"
"Resolution"=dword:00000000
"ScreenVertical"=dword:00000000
"EventModeEnable"=dword:00000000
"CoinCredit"=dword:00000001
"UserSelectEnable"=dword:00000000
"GameResult"=dword:00000000
"IOErrorCoin"=dword:00000000
"IOErrorCredit"=dword:00000000
"GameKind"=dword:0004A2B9
```
Then boot the game, log files should be under ``D:\system\CmdFile\log``
Open the one named `access*.log`, where * is the date.
You can find the communication log, if you see any errors other than 404, report at https://github.com/asesidaa/GC-local-server-rewrite or contact me @asesidaa in discord.
Some common errors:
0x00002F8F: Certificate error, either the root certificate is not imported (so not trusted), or the certificate is not correct/not recognized by XP
0x00002F9A: No private key, check if your certificate file is imported with private key.
# DAT files
Under game folder data/boot, there are all the dat files.
If you have a new version, contact @Javaguru to use his template to parse these, and send me the parsed data.
For music db, ask for a parsed json file for the new stage_param.dat. I can import these and make a new db file for the new version.