From b5e47900a014ceb27fc0e93af505d511ef1007d2 Mon Sep 17 00:00:00 2001
From: asesidaa <1061472754@qq.com>
Date: Mon, 5 Sep 2022 00:52:58 +0800
Subject: [PATCH] Prepare for web ui
---
Shared/Shared.projitems | 14 ----------
Shared/Shared.shproj | 11 --------
.../Enums/CrownType.cs | 2 +-
.../Enums/DanClearState.cs | 2 +-
.../Enums/Difficulty.cs | 2 +-
.../Enums/PlayMode.cs | 2 +-
.../Enums/ScoreRank.cs | 2 +-
.../Models/Responses/DashboardResponse.cs | 6 +++++
SharedProject/Models/User.cs | 8 ++++++
SharedProject/SharedProject.csproj | 13 ++++++++++
TaikoLocalServer.sln | 6 ++++-
TaikoLocalServer/Common/Constants.cs | 2 +-
.../Common/Utils/FlagCalculator.cs | 2 +-
TaikoLocalServer/Context/TaikoDbContext.cs | 2 +-
.../Controllers/AmAuth/PowerOnController.cs | 16 +++++++++---
.../Controllers/AmUpdater/MuchaController.cs | 26 ++++++++++++-------
.../Controllers/Api/DashboardController.cs | 23 +++++++++++++++-
TaikoLocalServer/GlobalUsings.cs | 2 +-
TaikoLocalServer/Program.cs | 11 ++++++--
TaikoLocalServer/Settings/UrlSettings.cs | 8 ++++++
TaikoLocalServer/TaikoLocalServer.csproj | 4 +++
TaikoLocalServer/appsettings.json | 5 ++++
22 files changed, 118 insertions(+), 51 deletions(-)
delete mode 100644 Shared/Shared.projitems
delete mode 100644 Shared/Shared.shproj
rename {TaikoLocalServer/Common => SharedProject}/Enums/CrownType.cs (68%)
rename {TaikoLocalServer/Common => SharedProject}/Enums/DanClearState.cs (80%)
rename {TaikoLocalServer/Common => SharedProject}/Enums/Difficulty.cs (74%)
rename {TaikoLocalServer/Common => SharedProject}/Enums/PlayMode.cs (69%)
rename {TaikoLocalServer/Common => SharedProject}/Enums/ScoreRank.cs (73%)
create mode 100644 SharedProject/Models/Responses/DashboardResponse.cs
create mode 100644 SharedProject/Models/User.cs
create mode 100644 SharedProject/SharedProject.csproj
create mode 100644 TaikoLocalServer/Settings/UrlSettings.cs
diff --git a/Shared/Shared.projitems b/Shared/Shared.projitems
deleted file mode 100644
index 7bdad8b..0000000
--- a/Shared/Shared.projitems
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
- true
- 29FAECCD-4C19-44F3-963F-6535BE962E2E
-
-
- Shared
-
-
-
-
-
\ No newline at end of file
diff --git a/Shared/Shared.shproj b/Shared/Shared.shproj
deleted file mode 100644
index 933dfad..0000000
--- a/Shared/Shared.shproj
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- {739247D2-9B9B-45DE-A97F-216E0D97930C}
-
-
-
-
-
-
-
diff --git a/TaikoLocalServer/Common/Enums/CrownType.cs b/SharedProject/Enums/CrownType.cs
similarity index 68%
rename from TaikoLocalServer/Common/Enums/CrownType.cs
rename to SharedProject/Enums/CrownType.cs
index 986cdbf..531579e 100644
--- a/TaikoLocalServer/Common/Enums/CrownType.cs
+++ b/SharedProject/Enums/CrownType.cs
@@ -1,4 +1,4 @@
-namespace TaikoLocalServer.Common.Enums;
+namespace SharedProject.Enums;
public enum CrownType
{
diff --git a/TaikoLocalServer/Common/Enums/DanClearState.cs b/SharedProject/Enums/DanClearState.cs
similarity index 80%
rename from TaikoLocalServer/Common/Enums/DanClearState.cs
rename to SharedProject/Enums/DanClearState.cs
index 04ea517..e91dc43 100644
--- a/TaikoLocalServer/Common/Enums/DanClearState.cs
+++ b/SharedProject/Enums/DanClearState.cs
@@ -1,4 +1,4 @@
-namespace TaikoLocalServer.Common.Enums;
+namespace SharedProject.Enums;
public enum DanClearState
{
diff --git a/TaikoLocalServer/Common/Enums/Difficulty.cs b/SharedProject/Enums/Difficulty.cs
similarity index 74%
rename from TaikoLocalServer/Common/Enums/Difficulty.cs
rename to SharedProject/Enums/Difficulty.cs
index fdfdb20..8f8fd58 100644
--- a/TaikoLocalServer/Common/Enums/Difficulty.cs
+++ b/SharedProject/Enums/Difficulty.cs
@@ -1,4 +1,4 @@
-namespace TaikoLocalServer.Common.Enums;
+namespace SharedProject.Enums;
public enum Difficulty : uint
{
diff --git a/TaikoLocalServer/Common/Enums/PlayMode.cs b/SharedProject/Enums/PlayMode.cs
similarity index 69%
rename from TaikoLocalServer/Common/Enums/PlayMode.cs
rename to SharedProject/Enums/PlayMode.cs
index caaff47..0e90705 100644
--- a/TaikoLocalServer/Common/Enums/PlayMode.cs
+++ b/SharedProject/Enums/PlayMode.cs
@@ -1,4 +1,4 @@
-namespace TaikoLocalServer.Common.Enums;
+namespace SharedProject.Enums;
public enum PlayMode
{
diff --git a/TaikoLocalServer/Common/Enums/ScoreRank.cs b/SharedProject/Enums/ScoreRank.cs
similarity index 73%
rename from TaikoLocalServer/Common/Enums/ScoreRank.cs
rename to SharedProject/Enums/ScoreRank.cs
index 2b4cce0..a2b2042 100644
--- a/TaikoLocalServer/Common/Enums/ScoreRank.cs
+++ b/SharedProject/Enums/ScoreRank.cs
@@ -1,4 +1,4 @@
-namespace TaikoLocalServer.Common.Enums;
+namespace SharedProject.Enums;
public enum ScoreRank
{
diff --git a/SharedProject/Models/Responses/DashboardResponse.cs b/SharedProject/Models/Responses/DashboardResponse.cs
new file mode 100644
index 0000000..4cd1df3
--- /dev/null
+++ b/SharedProject/Models/Responses/DashboardResponse.cs
@@ -0,0 +1,6 @@
+namespace SharedProject.Models.Responses;
+
+public class DashboardResponse
+{
+ public List Users { get; set; } = new();
+}
\ No newline at end of file
diff --git a/SharedProject/Models/User.cs b/SharedProject/Models/User.cs
new file mode 100644
index 0000000..6633ee7
--- /dev/null
+++ b/SharedProject/Models/User.cs
@@ -0,0 +1,8 @@
+namespace SharedProject.Models;
+
+public class User
+{
+ public string AccessCode { get; set; } = string.Empty;
+
+ public uint Baid { get; set; }
+}
\ No newline at end of file
diff --git a/SharedProject/SharedProject.csproj b/SharedProject/SharedProject.csproj
new file mode 100644
index 0000000..4934f24
--- /dev/null
+++ b/SharedProject/SharedProject.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/TaikoLocalServer.sln b/TaikoLocalServer.sln
index 9488c02..353d155 100644
--- a/TaikoLocalServer.sln
+++ b/TaikoLocalServer.sln
@@ -5,7 +5,7 @@ VisualStudioVersion = 17.0.32112.339
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TaikoLocalServer", "TaikoLocalServer\TaikoLocalServer.csproj", "{98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}"
EndProject
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Shared", "Shared\Shared.shproj", "{739247D2-9B9B-45DE-A97F-216E0D97930C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedProject", "SharedProject\SharedProject.csproj", "{34BAE5CA-D46B-489B-8617-3CEB2C0C614F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,6 +17,10 @@ Global
{98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/TaikoLocalServer/Common/Constants.cs b/TaikoLocalServer/Common/Constants.cs
index f90810e..ca2e896 100644
--- a/TaikoLocalServer/Common/Constants.cs
+++ b/TaikoLocalServer/Common/Constants.cs
@@ -18,7 +18,7 @@ public static class Constants
public const int MIYABI_CORE_RANK_ARRAY_SIZE = MUSIC_ID_MAX + 1;
- public const string DB_NAME = "taiko.db3";
+ public const string DEFAULT_DB_NAME = "taiko.db3";
public const string MUSIC_ATTRIBUTE_FILE_NAME = "music_attribute.json";
diff --git a/TaikoLocalServer/Common/Utils/FlagCalculator.cs b/TaikoLocalServer/Common/Utils/FlagCalculator.cs
index 7b541a7..b967908 100644
--- a/TaikoLocalServer/Common/Utils/FlagCalculator.cs
+++ b/TaikoLocalServer/Common/Utils/FlagCalculator.cs
@@ -1,7 +1,7 @@
using System.Collections.Specialized;
using System.Runtime.InteropServices;
-namespace TaikoLocalServer.Common;
+namespace TaikoLocalServer.Common.Utils;
public static class FlagCalculator
{
diff --git a/TaikoLocalServer/Context/TaikoDbContext.cs b/TaikoLocalServer/Context/TaikoDbContext.cs
index 671cdbb..f6c80cb 100644
--- a/TaikoLocalServer/Context/TaikoDbContext.cs
+++ b/TaikoLocalServer/Context/TaikoDbContext.cs
@@ -22,7 +22,7 @@
{
return;
}
- var path = Path.Combine(PathHelper.GetDataPath(), Constants.DB_NAME);
+ var path = Path.Combine(PathHelper.GetDataPath(), Constants.DEFAULT_DB_NAME);
optionsBuilder.UseSqlite($"Data Source={path}");
}
diff --git a/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs b/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs
index 81b8164..2730518 100644
--- a/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs
+++ b/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs
@@ -1,10 +1,18 @@
-namespace TaikoLocalServer.Controllers.AmAuth;
+using Microsoft.Extensions.Options;
+using TaikoLocalServer.Settings;
+
+namespace TaikoLocalServer.Controllers.AmAuth;
[ApiController]
[Route("/sys/servlet/PowerOn")]
public class PowerOnController : BaseController
{
- private const string HOST_STARTUP = "vsapi.taiko-p.jp";
+ private readonly UrlSettings settings;
+
+ public PowerOnController(IOptions settings)
+ {
+ this.settings = settings.Value;
+ }
[HttpPost]
public ContentResult PowerOn([FromForm] PowerOnRequest request)
@@ -14,8 +22,8 @@ public class PowerOnController : BaseController
var response = new Dictionary
{
{"stat", "1"},
- {"uri", HOST_STARTUP},
- {"host", HOST_STARTUP},
+ {"uri", settings.GameUrl},
+ {"host", settings.GameUrl},
{"place_id", "JPN0123"},
{"name", "NAMCO"},
{"nickname", "NAMCO"},
diff --git a/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs b/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs
index 590b833..38125d2 100644
--- a/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs
+++ b/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs
@@ -1,8 +1,16 @@
-namespace TaikoLocalServer.Controllers.AmUpdater;
+using Microsoft.Extensions.Options;
+using TaikoLocalServer.Settings;
+
+namespace TaikoLocalServer.Controllers.AmUpdater;
public class MuchaController : BaseController
{
- private const string URL_BASE = "https://v402-front.mucha-prd.nbgi-amnet.jp:10122";
+ private readonly UrlSettings settings;
+
+ public MuchaController(IOptions settings)
+ {
+ this.settings = settings.Value;
+ }
[HttpPost("/mucha_front/boardauth.do")]
@@ -31,12 +39,12 @@ public class MuchaController : BaseController
{ "AREA_FULL_3", "" },
{ "AREA_FULL_3_EN", "" },
{ "AUTH_INTERVAL", "86400" },
- { "CHARGE_URL", $"{URL_BASE}/charge/" },
+ { "CHARGE_URL", $"{settings.MuchaUrl}/charge/" },
{ "CONSUME_TOKEN", "0" },
{ "COUNTRY_CD", "JPN" },
{ "DONGLE_FLG", "1" },
{ "EXPIRATION_DATE", "null" },
- { "FILE_URL", $"{URL_BASE}/file/" },
+ { "FILE_URL", $"{settings.MuchaUrl}/file/" },
{ "FORCE_BOOT", "0" },
{ "PLACE_ID", request.PlaceId ?? "" },
{ "PREFECTURE_ID", "14" },
@@ -46,9 +54,9 @@ public class MuchaController : BaseController
{ "SHOP_NAME_EN", "NAMCO" },
{ "SHOP_NICKNAME", "W" },
{ "SHOP_NICKNAME_EN", "W" },
- { "URL_1", $"{URL_BASE}/url1/" },
- { "URL_2", $"{URL_BASE}/url2/" },
- { "URL_3", $"{URL_BASE}/url3/" },
+ { "URL_1", $"{settings.MuchaUrl}/url1/" },
+ { "URL_2", $"{settings.MuchaUrl}/url2/" },
+ { "URL_3", $"{settings.MuchaUrl}/url3/" },
{ "USE_TOKEN", "0" }
};
var formOutput = FormOutputUtil.ToFormOutput(response);
@@ -63,10 +71,10 @@ public class MuchaController : BaseController
{
{ "RESULTS", "001" },
{ "UPDATE_VER_1", request.GameVersion ?? "S1210JPN08.18" },
- { "UPDATE_URL_1", $"{URL_BASE}/updUrl1/" },
+ { "UPDATE_URL_1", $"{settings.MuchaUrl}/updUrl1/" },
{ "UPDATE_SIZE_1", "0" },
{ "UPDATE_CRC_1", "0000000000000000" },
- { "CHECK_URL_1", $"{URL_BASE}/checkUrl/" },
+ { "CHECK_URL_1", $"{settings.MuchaUrl}/checkUrl/" },
{ "EXE_VER_1", request.GameVersion ?? "S1210JPN08.18" },
{ "INFO_SIZE_1", "0" },
{ "COM_SIZE_1", "0" },
diff --git a/TaikoLocalServer/Controllers/Api/DashboardController.cs b/TaikoLocalServer/Controllers/Api/DashboardController.cs
index 5280d80..1dddd88 100644
--- a/TaikoLocalServer/Controllers/Api/DashboardController.cs
+++ b/TaikoLocalServer/Controllers/Api/DashboardController.cs
@@ -1,8 +1,29 @@
-namespace TaikoLocalServer.Controllers.Api;
+using SharedProject.Models;
+using SharedProject.Models.Responses;
+using Swan.Mapping;
+
+namespace TaikoLocalServer.Controllers.Api;
[ApiController]
[Route("/api/[controller]")]
public class DashboardController : BaseController
{
+ private readonly TaikoDbContext context;
+
+ public DashboardController(TaikoDbContext context)
+ {
+ this.context = context;
+ }
+
+ [HttpGet]
+ public DashboardResponse GetDashboard()
+ {
+ var cards = context.Cards.AsEnumerable();
+ var users = cards.Select(card => card.CopyPropertiesToNew()).ToList();
+ return new DashboardResponse
+ {
+ Users = users
+ };
+ }
}
\ No newline at end of file
diff --git a/TaikoLocalServer/GlobalUsings.cs b/TaikoLocalServer/GlobalUsings.cs
index 13e9bfb..e0ed717 100644
--- a/TaikoLocalServer/GlobalUsings.cs
+++ b/TaikoLocalServer/GlobalUsings.cs
@@ -3,9 +3,9 @@ global using Microsoft.AspNetCore.Mvc;
global using Microsoft.EntityFrameworkCore;
global using ProtoBuf;
global using Swan.Formatters;
+global using SharedProject.Enums;
global using taiko.game;
global using TaikoLocalServer.Common;
-global using TaikoLocalServer.Common.Enums;
global using TaikoLocalServer.Common.Utils;
global using TaikoLocalServer.Context;
global using TaikoLocalServer.Entities;
diff --git a/TaikoLocalServer/Program.cs b/TaikoLocalServer/Program.cs
index a375d74..4116e29 100644
--- a/TaikoLocalServer/Program.cs
+++ b/TaikoLocalServer/Program.cs
@@ -2,6 +2,7 @@ using System.Security.Authentication;
using Microsoft.AspNetCore.HttpLogging;
using Microsoft.AspNetCore.HttpOverrides;
using TaikoLocalServer.Middlewares;
+using TaikoLocalServer.Settings;
var builder = WebApplication.CreateBuilder(args);
// Manually enable tls 1.0
@@ -14,11 +15,17 @@ builder.WebHost.UseKestrel(kestrelOptions =>
});
// Add services to the container.
-
+builder.Services.AddOptions();
+builder.Services.Configure(builder.Configuration.GetSection(nameof(UrlSettings)));
builder.Services.AddControllers().AddProtoBufNet();
builder.Services.AddDbContext(option =>
{
- var path = Path.Combine(PathHelper.GetDataPath(), Constants.DB_NAME);
+ var dbName = builder.Configuration["DbFileName"];
+ if (string.IsNullOrEmpty(dbName))
+ {
+ dbName = Constants.DEFAULT_DB_NAME;
+ }
+ var path = Path.Combine(PathHelper.GetDataPath(), dbName);
option.UseSqlite($"Data Source={path}");
});
builder.Services.AddHttpLogging(options =>
diff --git a/TaikoLocalServer/Settings/UrlSettings.cs b/TaikoLocalServer/Settings/UrlSettings.cs
new file mode 100644
index 0000000..d024cda
--- /dev/null
+++ b/TaikoLocalServer/Settings/UrlSettings.cs
@@ -0,0 +1,8 @@
+namespace TaikoLocalServer.Settings;
+
+public class UrlSettings
+{
+ public string MuchaUrl { get; set; } = string.Empty;
+
+ public string GameUrl { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/TaikoLocalServer/TaikoLocalServer.csproj b/TaikoLocalServer/TaikoLocalServer.csproj
index bcc6b1e..3307e95 100644
--- a/TaikoLocalServer/TaikoLocalServer.csproj
+++ b/TaikoLocalServer/TaikoLocalServer.csproj
@@ -42,4 +42,8 @@
+
+
+
+
diff --git a/TaikoLocalServer/appsettings.json b/TaikoLocalServer/appsettings.json
index f990d7c..d54a8f7 100644
--- a/TaikoLocalServer/appsettings.json
+++ b/TaikoLocalServer/appsettings.json
@@ -1,4 +1,9 @@
{
+ "UrlSettings": {
+ "MuchaUrl": "https://v402-front.mucha-prd.nbgi-amnet.jp:10122",
+ "GameUrl": "vsapi.taiko-p.jp"
+ },
+ "DbFileName" : "taiko.db3",
"Logging": {
"LogLevel": {
"Default": "Information",