From b41532d5af934a1b0dff734682242bb89083cede Mon Sep 17 00:00:00 2001 From: t0w0bi Date: Tue, 26 Aug 2025 21:42:00 +0100 Subject: [PATCH] - Change Loporrit Branding to CLUBPENGUIN - Update submodules - Update to latest Penumbra API --- MareSynchronos.sln | 34 +++++++++++++++++++ MareSynchronos/FileCache/CacheMonitor.cs | 2 +- MareSynchronos/FileCache/FileCacheManager.cs | 2 +- .../Interop/Ipc/IpcCallerGlamourer.cs | 2 +- .../Interop/Ipc/IpcCallerPenumbra.cs | 30 ++++++++++++---- MareSynchronos/Interop/Ipc/IpcProvider.cs | 6 ++-- MareSynchronos/LoporritSync.json | 14 -------- .../Configurations/ServerConfig.cs | 2 +- MareSynchronos/MarePlugin.cs | 8 ++--- MareSynchronos/MareSynchronos.csproj | 26 ++++---------- .../PlayerData/Handlers/PairHandler.cs | 1 + MareSynchronos/PlayerData/Pairs/Pair.cs | 4 +-- MareSynchronos/Plugin.cs | 6 ++-- MareSynchronos/Services/ChatService.cs | 4 +-- .../Services/CommandManagerService.cs | 8 ++--- MareSynchronos/Services/DalamudUtilService.cs | 6 ++-- MareSynchronos/Services/NoSnapService.cs | 6 ++-- .../Services/NotificationService.cs | 6 ++-- .../Services/RemoteConfigurationService.cs | 13 +++++-- .../ServerConfigurationManager.cs | 6 ++-- MareSynchronos/UI/CharaDataHubUi.cs | 2 +- MareSynchronos/UI/CompactUI.cs | 14 ++++---- MareSynchronos/UI/DataAnalysisUi.cs | 12 +++---- MareSynchronos/UI/DownloadUi.cs | 2 +- MareSynchronos/UI/DtrEntry.cs | 8 ++--- MareSynchronos/UI/EditProfileUi.cs | 4 +-- MareSynchronos/UI/IntroUI.cs | 22 ++++++------ MareSynchronos/UI/PermissionWindowUI.cs | 2 +- MareSynchronos/UI/PlayerAnalysisUI.cs | 2 +- MareSynchronos/UI/PopoutProfileUi.cs | 2 +- MareSynchronos/UI/SettingsUi.cs | 26 +++++++------- MareSynchronos/UI/StandaloneProfileUi.cs | 2 +- MareSynchronos/UI/UISharedService.cs | 10 +++--- .../WebAPI/AccountRegistrationService.cs | 4 +-- .../WebAPI/SignalR/ApiController.cs | 12 +++---- MareSynchronos/WebAPI/SignalR/HubFactory.cs | 6 ++-- .../WebAPI/SignalR/TokenProvider.cs | 4 +-- Penumbra.Api | 2 +- 38 files changed, 176 insertions(+), 146 deletions(-) delete mode 100644 MareSynchronos/LoporritSync.json diff --git a/MareSynchronos.sln b/MareSynchronos.sln index ec5ad79..928c22c 100644 --- a/MareSynchronos.sln +++ b/MareSynchronos.sln @@ -4,6 +4,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00 VisualStudioVersion = 17.1.32328.378 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MareSynchronos", "MareSynchronos\MareSynchronos.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" + ProjectSection(ProjectDependencies) = postProject + {7A858094-ABEF-424B-9133-7CFC9B03B9E4} = {7A858094-ABEF-424B-9133-7CFC9B03B9E4} + {8A8069A2-31D7-4158-B29C-479F17FEFBB7} = {8A8069A2-31D7-4158-B29C-479F17FEFBB7} + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MareSynchronos.API", "MareAPI\MareSynchronosAPI\MareSynchronos.API.csproj", "{5A0B7434-8D89-4E90-B55C-B4A7AE1A6ADE}" EndProject @@ -12,6 +16,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .editorconfig = .editorconfig EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Glamourer.Api", "Glamourer.Api\Glamourer.Api.csproj", "{8A8069A2-31D7-4158-B29C-479F17FEFBB7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Penumbra.Api", "Penumbra.Api\Penumbra.Api.csproj", "{7A858094-ABEF-424B-9133-7CFC9B03B9E4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chaos.NaCl", "BunnyWhispers\Chaos.NaCl\Chaos.NaCl.csproj", "{C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -36,6 +46,30 @@ Global {5A0B7434-8D89-4E90-B55C-B4A7AE1A6ADE}.Release|Any CPU.Build.0 = Release|Any CPU {5A0B7434-8D89-4E90-B55C-B4A7AE1A6ADE}.Release|x64.ActiveCfg = Release|Any CPU {5A0B7434-8D89-4E90-B55C-B4A7AE1A6ADE}.Release|x64.Build.0 = Release|Any CPU + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Debug|Any CPU.ActiveCfg = Debug|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Debug|Any CPU.Build.0 = Debug|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Debug|x64.ActiveCfg = Debug|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Debug|x64.Build.0 = Debug|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Release|Any CPU.ActiveCfg = Release|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Release|Any CPU.Build.0 = Release|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Release|x64.ActiveCfg = Release|x64 + {8A8069A2-31D7-4158-B29C-479F17FEFBB7}.Release|x64.Build.0 = Release|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Debug|Any CPU.ActiveCfg = Debug|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Debug|Any CPU.Build.0 = Debug|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Debug|x64.ActiveCfg = Debug|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Debug|x64.Build.0 = Debug|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Release|Any CPU.ActiveCfg = Release|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Release|Any CPU.Build.0 = Release|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Release|x64.ActiveCfg = Release|x64 + {7A858094-ABEF-424B-9133-7CFC9B03B9E4}.Release|x64.Build.0 = Release|x64 + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Debug|x64.ActiveCfg = Debug|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Debug|x64.Build.0 = Debug|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Release|Any CPU.Build.0 = Release|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Release|x64.ActiveCfg = Release|Any CPU + {C4E4A934-A1CD-4CF7-B31E-4F0782BA8458}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MareSynchronos/FileCache/CacheMonitor.cs b/MareSynchronos/FileCache/CacheMonitor.cs index 4b8fa20..586701b 100644 --- a/MareSynchronos/FileCache/CacheMonitor.cs +++ b/MareSynchronos/FileCache/CacheMonitor.cs @@ -631,7 +631,7 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase if (string.IsNullOrEmpty(_configService.Current.CacheFolder) || !Directory.Exists(_configService.Current.CacheFolder)) { cacheDirExists = false; - Logger.LogWarning("Loporrit Cache directory is not set or does not exist."); + Logger.LogWarning("Club Penguin Cache directory is not set or does not exist."); } if (!penDirExists || !cacheDirExists) { diff --git a/MareSynchronos/FileCache/FileCacheManager.cs b/MareSynchronos/FileCache/FileCacheManager.cs index f7c3d11..91b22cf 100644 --- a/MareSynchronos/FileCache/FileCacheManager.cs +++ b/MareSynchronos/FileCache/FileCacheManager.cs @@ -465,7 +465,7 @@ public sealed class FileCacheManager : IHostedService if (!_ipcManager.Penumbra.APIAvailable || string.IsNullOrEmpty(_ipcManager.Penumbra.ModDirectory)) { _mareMediator.Publish(new NotificationMessage("Penumbra not connected", - "Could not load local file cache data. Penumbra is not connected or not properly set up. Please enable and/or configure Penumbra properly to use Loporrit. After, reload Loporrit in the Plugin installer.", + "Could not load local file cache data. Penumbra is not connected or not properly set up. Please enable and/or configure Penumbra properly to use Club Penguin Sync. After, reload Club Penguin Sync in the Plugin installer.", MareConfiguration.Models.NotificationType.Error)); } diff --git a/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs b/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs index 50d263f..d640782 100644 --- a/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs +++ b/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs @@ -109,7 +109,7 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC if (!apiAvailable && !_shownGlamourerUnavailable) { _shownGlamourerUnavailable = true; - _mareMediator.Publish(new NotificationMessage("Glamourer inactive", "Your Glamourer installation is not active or out of date. Update Glamourer to continue to use Loporrit. If you just updated Glamourer, ignore this message.", + _mareMediator.Publish(new NotificationMessage("Glamourer inactive", "Your Glamourer installation is not active or out of date. Update Glamourer to continue to use Club Penguin Sync. If you just updated Glamourer, ignore this message.", NotificationType.Error)); } } diff --git a/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs b/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs index c0df819..258504c 100644 --- a/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs +++ b/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs @@ -8,6 +8,7 @@ using Penumbra.Api.Enums; using Penumbra.Api.Helpers; using Penumbra.Api.IpcSubscribers; using System.Collections.Concurrent; +using System.Security.Principal; namespace MareSynchronos.Interop.Ipc; @@ -91,9 +92,9 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa Mediator.SubscribeKeyed(this, "Penumbra", (msg) => { - _pluginLoaded = msg.IsLoaded; - _pluginVersion = msg.Version; - CheckAPI(); + _pluginLoaded = msg.IsLoaded; + _pluginVersion = msg.Version; + CheckAPI(); }); CheckAPI(); @@ -114,7 +115,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa bool penumbraAvailable = false; try { - penumbraAvailable = _pluginLoaded && _pluginVersion >= new Version(1, 0, 1, 0); + penumbraAvailable = _pluginLoaded && _pluginVersion >= new Version(1, 5, 1, 0); try { penumbraAvailable &= _penumbraEnabled.Invoke(); @@ -136,7 +137,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { _shownPenumbraUnavailable = true; _mareMediator.Publish(new NotificationMessage("Penumbra inactive", - "Your Penumbra installation is not active or out of date. Update Penumbra and/or the Enable Mods setting in Penumbra to continue to use Loporrit. If you just updated Penumbra, ignore this message.", + "Your Penumbra installation is not active or out of date. Update Penumbra and/or the Enable Mods setting in Penumbra to continue to use Club Penguin Sync. If you just updated Penumbra, ignore this message.", NotificationType.Error)); } } @@ -219,14 +220,29 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa }).ConfigureAwait(false); } + private static Random rng = new(); + public async Task CreateTemporaryCollectionAsync(ILogger logger, string uid) { if (!APIAvailable) return Guid.Empty; + var identity = "ClubPenguin"; + return await _dalamudUtil.RunOnFrameworkThread(() => { - var collName = "Loporrit_" + uid; - var collId = _penumbraCreateNamedTemporaryCollection.Invoke(collName); + var collName = identity + "_" + uid; + var ec = _penumbraCreateNamedTemporaryCollection.Invoke(identity, collName, out var collId); + if (ec == PenumbraApiEc.InvalidCredentials) + { + for (int i = 0; i < 5; ++i) + { + var tmp = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 8 + rng.Next() % 6); + logger.LogWarning("Identity = {identity}", identity); + ec = _penumbraCreateNamedTemporaryCollection.Invoke(tmp, collName, out collId); + if (ec != PenumbraApiEc.InvalidCredentials) + break; + } + } logger.LogTrace("Creating Temp Collection {collName}, GUID: {collId}", collName, collId); return collId; diff --git a/MareSynchronos/Interop/Ipc/IpcProvider.cs b/MareSynchronos/Interop/Ipc/IpcProvider.cs index 44f3507..5cd5fb7 100644 --- a/MareSynchronos/Interop/Ipc/IpcProvider.cs +++ b/MareSynchronos/Interop/Ipc/IpcProvider.cs @@ -69,11 +69,11 @@ public class IpcProvider : IHostedService, IMediatorSubscriber public Task StartAsync(CancellationToken cancellationToken) { _logger.LogDebug("Starting IpcProvider Service"); - _loadFileProvider = _pi.GetIpcProvider("LoporritSync.LoadMcdf"); + _loadFileProvider = _pi.GetIpcProvider("ClubPenguinSync.LoadMcdf"); _loadFileProvider.RegisterFunc(LoadMcdf); - _loadFileAsyncProvider = _pi.GetIpcProvider>("LoporritSync.LoadMcdfAsync"); + _loadFileAsyncProvider = _pi.GetIpcProvider>("ClubPenguinSync.LoadMcdfAsync"); _loadFileAsyncProvider.RegisterFunc(LoadMcdfAsync); - _handledGameAddresses = _pi.GetIpcProvider>("LoporritSync.GetHandledAddresses"); + _handledGameAddresses = _pi.GetIpcProvider>("ClubPenguinSync.GetHandledAddresses"); _handledGameAddresses.RegisterFunc(GetHandledAddresses); _loadFileProviderMare = _pi.GetIpcProvider("MareSynchronos.LoadMcdf"); diff --git a/MareSynchronos/LoporritSync.json b/MareSynchronos/LoporritSync.json deleted file mode 100644 index 109f7ab..0000000 --- a/MareSynchronos/LoporritSync.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Author": "Huggingway", - "Name": "Loporrit Sync", - "Punchline": "Social modding for everyone!", - "Description": "This plugin will synchronize your Penumbra mods and current Glamourer state with other paired clients automatically.", - "InternalName": "LoporritSync", - "ApplicableVersion": "any", - "Tags": [ - "customization" - ], - "IconUrl": "https://raw.githubusercontent.com/loporrit/MareClient/way4/MareSynchronos/images/icon.png", - "RepoUrl": "https://github.com/loporrit/MareClient/", - "CanUnloadAsync": true -} diff --git a/MareSynchronos/MareConfiguration/Configurations/ServerConfig.cs b/MareSynchronos/MareConfiguration/Configurations/ServerConfig.cs index eae2f16..27b7d14 100644 --- a/MareSynchronos/MareConfiguration/Configurations/ServerConfig.cs +++ b/MareSynchronos/MareConfiguration/Configurations/ServerConfig.cs @@ -10,7 +10,7 @@ public class ServerConfig : IMareConfiguration public List ServerStorage { get; set; } = new() { - { new ServerStorage() { ServerName = ApiController.LoporritServer, ServerUri = ApiController.LoporritServiceUri } }, + { new ServerStorage() { ServerName = ApiController.ClubPenguinServer, ServerUri = ApiController.ClubPenguinServiceUri } }, }; public int Version { get; set; } = 1; diff --git a/MareSynchronos/MarePlugin.cs b/MareSynchronos/MarePlugin.cs index 99871a9..eb7dc0a 100644 --- a/MareSynchronos/MarePlugin.cs +++ b/MareSynchronos/MarePlugin.cs @@ -89,9 +89,9 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService public Task StartAsync(CancellationToken cancellationToken) { var version = Assembly.GetExecutingAssembly().GetName().Version!; - Logger.LogInformation("Launching {name} {major}.{minor}.{build}.{rev}", "Loporrit Sync", version.Major, version.Minor, version.Build, version.Revision); + Logger.LogInformation("Launching {name} {major}.{minor}.{build}.{rev}", "Club Penguin Sync", version.Major, version.Minor, version.Build, version.Revision); Mediator.Publish(new EventMessage(new Services.Events.Event(nameof(MarePlugin), Services.Events.EventSeverity.Informational, - $"Starting Loporrit Sync {version.Major}.{version.Minor}.{version.Build}.{version.Revision}"))); + $"Starting Club Penguin Sync {version.Major}.{version.Minor}.{version.Build}.{version.Revision}"))); Mediator.Subscribe(this, (msg) => { if (_launchTask == null || _launchTask.IsCompleted) _launchTask = Task.Run(WaitForPlayerAndLaunchCharacterManager); }); Mediator.Subscribe(this, (_) => DalamudUtilOnLogIn()); @@ -115,7 +115,7 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService private void DalamudUtilOnLogIn() { - LoporritSync.Plugin.Self.ToggleFileLogging(_mareConfigService.Current.LogTraceLog, "Login"); + ClubPenguinSync.Plugin.Self.ToggleFileLogging(_mareConfigService.Current.LogTraceLog, "Login"); Logger?.LogDebug("Client login"); if (_launchTask == null || _launchTask.IsCompleted) _launchTask = Task.Run(WaitForPlayerAndLaunchCharacterManager); } @@ -125,7 +125,7 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService Logger?.LogDebug("Client logout"); _runtimeServiceScope?.Dispose(); - LoporritSync.Plugin.Self.ToggleFileLogging(true, "Logout"); + ClubPenguinSync.Plugin.Self.ToggleFileLogging(true, "Logout"); } private async Task WaitForPlayerAndLaunchCharacterManager() diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index 41b93ce..e4e6f60 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -1,9 +1,9 @@  - LoporritSync - 9.9.0 - https://github.com/loporrit/MareClient/ + ClubPenguinSync + 1.7.0.0 + https://github.com/Rawrington/ClubPenguinSync/ @@ -30,23 +30,7 @@ - - - - - - - - - - - - - - - - - + build$([System.DateTime]::UtcNow.ToString("yyyy-MM-ddTHH:mm:ss:fffZ")) enable @@ -55,6 +39,8 @@ + + diff --git a/MareSynchronos/PlayerData/Handlers/PairHandler.cs b/MareSynchronos/PlayerData/Handlers/PairHandler.cs index 46934fd..3ab1f04 100644 --- a/MareSynchronos/PlayerData/Handlers/PairHandler.cs +++ b/MareSynchronos/PlayerData/Handlers/PairHandler.cs @@ -729,6 +729,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase if (_deferred != Guid.Empty) { _isVisible = true; + Mediator.Publish(new PairHandlerVisibleMessage(this)); _ = Task.Run(() => { ApplyCharacterData(_deferred, _cachedData!, forceApplyCustomization: true); diff --git a/MareSynchronos/PlayerData/Pairs/Pair.cs b/MareSynchronos/PlayerData/Pairs/Pair.cs index 07bbf0b..66e3b2e 100644 --- a/MareSynchronos/PlayerData/Pairs/Pair.cs +++ b/MareSynchronos/PlayerData/Pairs/Pair.cs @@ -133,8 +133,8 @@ public class Pair : DisposableMediatorSubscriberBase { Name = name, OnClicked = action, - PrefixColor = 559, - PrefixChar = 'L' + PrefixColor = 529, + PrefixChar = 'C' }); } diff --git a/MareSynchronos/Plugin.cs b/MareSynchronos/Plugin.cs index d07bee3..ddbd5ea 100644 --- a/MareSynchronos/Plugin.cs +++ b/MareSynchronos/Plugin.cs @@ -29,7 +29,7 @@ using NReco.Logging.File; using MareSynchronos; -namespace LoporritSync; +namespace ClubPenguinSync; public sealed class Plugin : IDalamudPlugin { @@ -41,7 +41,7 @@ public sealed class Plugin : IDalamudPlugin #pragma warning restore CA2211, CS8618, MA0069, S1104, S2223 public Action? RealOnFrameworkUpdate { get; set; } - // Proxy function in the LoporritSync namespace to avoid confusion in /xlstats + // Proxy function in the ClubPenguinSync namespace to avoid confusion in /xlstats public void OnFrameworkUpdate(IFramework framework) { RealOnFrameworkUpdate?.Invoke(framework); @@ -100,7 +100,7 @@ public sealed class Plugin : IDalamudPlugin }) .ConfigureServices(collection => { - collection.AddSingleton(new WindowSystem("LoporritSync")); + collection.AddSingleton(new WindowSystem("ClubPenguinSync")); collection.AddSingleton(); // add dalamud services diff --git a/MareSynchronos/Services/ChatService.cs b/MareSynchronos/Services/ChatService.cs index cc34d96..bfa3ab6 100644 --- a/MareSynchronos/Services/ChatService.cs +++ b/MareSynchronos/Services/ChatService.cs @@ -207,7 +207,7 @@ public class ChatService : DisposableMediatorSubscriberBase } } - _chatGui.PrintError($"[LoporritSync] Syncshell number #{shellNumber} not found"); + _chatGui.PrintError($"[ClubPenguinSync] Syncshell number #{shellNumber} not found"); } public void SendChatShell(int shellNumber, byte[] chatBytes) @@ -236,6 +236,6 @@ public class ChatService : DisposableMediatorSubscriberBase } } - _chatGui.PrintError($"[LoporritSync] Syncshell number #{shellNumber} not found"); + _chatGui.PrintError($"[ClubPenguinSync] Syncshell number #{shellNumber} not found"); } } \ No newline at end of file diff --git a/MareSynchronos/Services/CommandManagerService.cs b/MareSynchronos/Services/CommandManagerService.cs index cf4dd4c..2450f9b 100644 --- a/MareSynchronos/Services/CommandManagerService.cs +++ b/MareSynchronos/Services/CommandManagerService.cs @@ -15,7 +15,7 @@ namespace MareSynchronos.Services; public sealed class CommandManagerService : IDisposable { private const string _commandName = "/sync"; - private const string _commandName2 = "/loporrit"; + private const string _commandName2 = "/clubpenguin"; private const string _ssCommandPrefix = "/ss"; @@ -42,11 +42,11 @@ public sealed class CommandManagerService : IDisposable _mareConfigService = mareConfigService; _commandManager.AddHandler(_commandName, new CommandInfo(OnCommand) { - HelpMessage = "Opens the Loporrit UI" + HelpMessage = "Opens the Club Penguin Sync UI" }); _commandManager.AddHandler(_commandName2, new CommandInfo(OnCommand) { - HelpMessage = "Opens the Loporrit UI" + HelpMessage = "Opens the Club Penguin Sync UI" }); // Lazy registration of all possible /ss# commands which tbf is what the game does for linkshells anyway @@ -86,7 +86,7 @@ public sealed class CommandManagerService : IDisposable { if (_apiController.ServerState == WebAPI.SignalR.Utils.ServerState.Disconnecting) { - _mediator.Publish(new NotificationMessage("Loporrit disconnecting", "Cannot use /toggle while Loporrit is still disconnecting", + _mediator.Publish(new NotificationMessage("Club Penguin Sync disconnecting", "Cannot use /toggle while Club Penguin Sync is still disconnecting", NotificationType.Error)); } diff --git a/MareSynchronos/Services/DalamudUtilService.cs b/MareSynchronos/Services/DalamudUtilService.cs index affe700..16016fd 100644 --- a/MareSynchronos/Services/DalamudUtilService.cs +++ b/MareSynchronos/Services/DalamudUtilService.cs @@ -468,9 +468,9 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber { _logger.LogInformation("Starting DalamudUtilService"); #pragma warning disable S2696 // Instance members should not write to "static" fields - LoporritSync.Plugin.Self.RealOnFrameworkUpdate = this.FrameworkOnUpdate; + ClubPenguinSync.Plugin.Self.RealOnFrameworkUpdate = this.FrameworkOnUpdate; #pragma warning restore S2696 - _framework.Update += LoporritSync.Plugin.Self.OnFrameworkUpdate; + _framework.Update += ClubPenguinSync.Plugin.Self.OnFrameworkUpdate; if (IsLoggedIn) { _classJobId = _clientState.LocalPlayer!.ClassJob.RowId; @@ -485,7 +485,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber _logger.LogTrace("Stopping {type}", GetType()); Mediator.UnsubscribeAll(this); - _framework.Update -= LoporritSync.Plugin.Self.OnFrameworkUpdate; + _framework.Update -= ClubPenguinSync.Plugin.Self.OnFrameworkUpdate; return Task.CompletedTask; } diff --git a/MareSynchronos/Services/NoSnapService.cs b/MareSynchronos/Services/NoSnapService.cs index 226fab3..95c7647 100644 --- a/MareSynchronos/Services/NoSnapService.cs +++ b/MareSynchronos/Services/NoSnapService.cs @@ -20,9 +20,9 @@ public sealed class NoSnapService : IHostedService, IMediatorSubscriber private readonly IDalamudPluginInterface _pluginInterface; private readonly Dictionary _listOfPlugins = new(StringComparer.Ordinal) { - ["Snapper"] = false, - ["Snappy"] = false, - ["Meddle.Plugin"] = false, + ["QQSnapper"] = false, + ["QQSnappy"] = false, + ["QQMeddle.Plugin"] = false, }; private static readonly HashSet _gposers = new(); private static readonly HashSet _gposersNamed = new(StringComparer.Ordinal); diff --git a/MareSynchronos/Services/NotificationService.cs b/MareSynchronos/Services/NotificationService.cs index 57099b8..c4e4428 100644 --- a/MareSynchronos/Services/NotificationService.cs +++ b/MareSynchronos/Services/NotificationService.cs @@ -41,19 +41,19 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ private void PrintErrorChat(string? message) { - SeStringBuilder se = new SeStringBuilder().AddText("[LoporritSync] Error: " + message); + SeStringBuilder se = new SeStringBuilder().AddText("[ClubPenguinSync] Error: " + message); _chatGui.PrintError(se.BuiltString); } private void PrintInfoChat(string? message) { - SeStringBuilder se = new SeStringBuilder().AddText("[LoporritSync] Info: ").AddItalics(message ?? string.Empty); + SeStringBuilder se = new SeStringBuilder().AddText("[ClubPenguinSync] Info: ").AddItalics(message ?? string.Empty); _chatGui.Print(se.BuiltString); } private void PrintWarnChat(string? message) { - SeStringBuilder se = new SeStringBuilder().AddText("[LoporritSync] ").AddUiForeground("Warning: " + (message ?? string.Empty), 31).AddUiForegroundOff(); + SeStringBuilder se = new SeStringBuilder().AddText("[ClubPenguinSync] ").AddUiForeground("Warning: " + (message ?? string.Empty), 31).AddUiForegroundOff(); _chatGui.Print(se.BuiltString); } diff --git a/MareSynchronos/Services/RemoteConfigurationService.cs b/MareSynchronos/Services/RemoteConfigurationService.cs index cdd62c2..c389b63 100644 --- a/MareSynchronos/Services/RemoteConfigurationService.cs +++ b/MareSynchronos/Services/RemoteConfigurationService.cs @@ -14,12 +14,12 @@ public sealed class RemoteConfigurationService { private readonly static Dictionary ConfigPublicKeys = new(StringComparer.Ordinal) { - { "4D6633E0", "GWRoAiXP9lcn9/34wGgziYcqQH8f6zWtZrRyp66Ekso=" }, + { "3PC5J4C4", "rhUOaY2Y7doUY0GDmOEgM5CoyzxLqCjOpsdO6O+rTjE=" }, }; private readonly static string[] ConfigSources = [ - "https://plugin.lop-sync.com/config/config.json", - "https://plugin.lop-sync.net/config/config.json", + "https://clubpenguin.drgn.rocks/config.json", + "https://clubpenguin.drgn.rocks/config.json", ]; private readonly ILogger _logger; @@ -172,6 +172,12 @@ public sealed class RemoteConfigurationService byte[] pub = Convert.FromBase64String(pubKey); return Ed25519.Verify(sig, msg, pub); } + + private static byte[] SignForMe(string message, ulong ts, byte[] privKey) + { + byte[] msg = [.. BitConverter.GetBytes(ts), .. Encoding.UTF8.GetBytes(message)]; + return Ed25519.Sign(msg, privKey); + } private void LoadConfig(JsonObject jsonDoc) { @@ -185,6 +191,7 @@ public sealed class RemoteConfigurationService var signatures = jsonDoc["sig"]!.AsObject(); var configString = jsonDoc["config"]!.GetValue(); + bool verified = signatures.Any(sig => ConfigPublicKeys.TryGetValue(sig.Key, out var pubKey) && VerifySignature(configString, ts, sig.Value!.GetValue(), pubKey)); diff --git a/MareSynchronos/Services/ServerConfiguration/ServerConfigurationManager.cs b/MareSynchronos/Services/ServerConfiguration/ServerConfigurationManager.cs index 924a4e8..ca7ec0c 100644 --- a/MareSynchronos/Services/ServerConfiguration/ServerConfigurationManager.cs +++ b/MareSynchronos/Services/ServerConfiguration/ServerConfigurationManager.cs @@ -500,13 +500,13 @@ public class ServerConfigurationManager for (int i = 0; i < _configService.Current.ServerStorage.Count; ++i) { var x = _configService.Current.ServerStorage[i]; - if (x.ServerUri.Equals(ApiController.LoporritServiceUri, StringComparison.OrdinalIgnoreCase)) + if (x.ServerUri.Equals(ApiController.ClubPenguinServiceUri, StringComparison.OrdinalIgnoreCase)) lopExists = true; } if (!lopExists) { - _logger.LogDebug("Re-adding missing server {uri}", ApiController.LoporritServiceUri); - _configService.Current.ServerStorage.Insert(0, new ServerStorage() { ServerUri = ApiController.LoporritServiceUri, ServerName = ApiController.LoporritServer }); + _logger.LogDebug("Re-adding missing server {uri}", ApiController.ClubPenguinServiceUri); + _configService.Current.ServerStorage.Insert(0, new ServerStorage() { ServerUri = ApiController.ClubPenguinServiceUri, ServerName = ApiController.ClubPenguinServer }); if (_configService.Current.CurrentServer >= 0) _configService.Current.CurrentServer++; } diff --git a/MareSynchronos/UI/CharaDataHubUi.cs b/MareSynchronos/UI/CharaDataHubUi.cs index b26e05a..196b396 100644 --- a/MareSynchronos/UI/CharaDataHubUi.cs +++ b/MareSynchronos/UI/CharaDataHubUi.cs @@ -79,7 +79,7 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase UiSharedService uiSharedService, ServerConfigurationManager serverConfigurationManager, DalamudUtilService dalamudUtilService, FileDialogManager fileDialogManager, PairManager pairManager, CharaDataGposeTogetherManager charaDataGposeTogetherManager) - : base(logger, mediator, "Loporrit Character Data Hub###LoporritCharaDataUI", performanceCollectorService) + : base(logger, mediator, "Club Penguin Character Data Hub###ClubPenguinSyncCharaDataUI", performanceCollectorService) { SetWindowSizeConstraints(); diff --git a/MareSynchronos/UI/CompactUI.cs b/MareSynchronos/UI/CompactUI.cs index c322cb6..cd5b7ec 100644 --- a/MareSynchronos/UI/CompactUI.cs +++ b/MareSynchronos/UI/CompactUI.cs @@ -60,7 +60,7 @@ public class CompactUi : WindowMediatorSubscriberBase public CompactUi(ILogger logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController, PairManager pairManager, ChatService chatService, ServerConfigurationManager serverManager, MareMediator mediator, FileUploadManager fileTransferManager, UidDisplayHandler uidDisplayHandler, CharaDataManager charaDataManager, PerformanceCollectorService performanceCollectorService) - : base(logger, mediator, "###LoporritSyncMainUI", performanceCollectorService) + : base(logger, mediator, "###ClubPenguinSyncMainUI", performanceCollectorService) { _uiSharedService = uiShared; _configService = configService; @@ -80,11 +80,11 @@ public class CompactUi : WindowMediatorSubscriberBase #if DEBUG string dev = "Dev Build"; var ver = Assembly.GetExecutingAssembly().GetName().Version!; - WindowName = $"Loporrit Sync {dev} ({ver.Major}.{ver.Minor}.{ver.Build}.{ver.Revision})###LoporritSyncMainUIDev"; + WindowName = $"Club PenguinS ync {dev} ({ver.Major}.{ver.Minor}.{ver.Build}.{ver.Revision})###ClubPenguinSyncMainUIDev"; Toggle(); #else var ver = Assembly.GetExecutingAssembly().GetName().Version!; - WindowName = $"Loporrit Sync {ver.Major}.{ver.Minor}.{ver.Build}.{ver.Revision}###LoporritSyncMainUI"; + WindowName = $"Club Penguin Sync {ver.Major}.{ver.Minor}.{ver.Build}.{ver.Revision}###ClubPenguinSyncMainUI"; #endif Mediator.Subscribe(this, (_) => IsOpen = true); Mediator.Subscribe(this, (_) => IsOpen = false); @@ -104,7 +104,7 @@ public class CompactUi : WindowMediatorSubscriberBase protected override void DrawInternal() { - if (_serverManager.CurrentApiUrl.Equals(ApiController.LoporritServiceUri, StringComparison.Ordinal)) + if (_serverManager.CurrentApiUrl.Equals(ApiController.ClubPenguinServiceUri, StringComparison.Ordinal)) UiSharedService.AccentColor = new Vector4(1.0f, 0.8666f, 0.06666f, 1.0f); else UiSharedService.AccentColor = ImGuiColors.ParsedGreen; @@ -121,8 +121,8 @@ public class CompactUi : WindowMediatorSubscriberBase ImGui.AlignTextToFramePadding(); ImGui.TextColored(ImGuiColors.DalamudRed, unsupported); } - UiSharedService.ColorTextWrapped($"Your Loporrit installation is out of date, the current version is {ver.Major}.{ver.Minor}.{ver.Build}. " + - $"It is highly recommended to keep Loporrit up to date. Open /xlplugins and update the plugin.", ImGuiColors.DalamudRed); + UiSharedService.ColorTextWrapped($"Your Club Penguin Sync installation is out of date, the current version is {ver.Major}.{ver.Minor}.{ver.Build}. " + + $"It is highly recommended to keep Club Penguin Sync up to date. Open /xlplugins and update the plugin.", ImGuiColors.DalamudRed); } using (ImRaii.PushId("header")) DrawUIDHeader(); @@ -525,7 +525,7 @@ public class CompactUi : WindowMediatorSubscriberBase { Mediator.Publish(new OpenSettingsUiMessage()); } - UiSharedService.AttachToolTip("Open the Loporrit Settings"); + UiSharedService.AttachToolTip("Open the Club Penguin Sync Settings"); ImGui.SameLine(); //Important to draw the uidText consistently ImGui.SetCursorPos(originalPos); diff --git a/MareSynchronos/UI/DataAnalysisUi.cs b/MareSynchronos/UI/DataAnalysisUi.cs index d23b137..a905392 100644 --- a/MareSynchronos/UI/DataAnalysisUi.cs +++ b/MareSynchronos/UI/DataAnalysisUi.cs @@ -165,10 +165,10 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase UiSharedService.DrawTree("What is this? (Explanation / Help)", () => { UiSharedService.TextWrapped("This tab allows you to see which transient files are attached to your character."); - UiSharedService.TextWrapped("Transient files are files that cannot be resolved to your character permanently. Loporrit gathers these files in the background while you execute animations, VFX, sound effects, etc."); - UiSharedService.TextWrapped("When sending your character data to others, Loporrit will combine the files listed in \"All Jobs\" and the corresponding currently used job."); + UiSharedService.TextWrapped("Transient files are files that cannot be resolved to your character permanently. Club Penguin Sync gathers these files in the background while you execute animations, VFX, sound effects, etc."); + UiSharedService.TextWrapped("When sending your character data to others, Club Penguin Sync will combine the files listed in \"All Jobs\" and the corresponding currently used job."); UiSharedService.TextWrapped("The purpose of this tab is primarily informational for you to see which files you are carrying with you. You can remove added game paths, however if you are using the animations etc. again, " - + "Loporrit will automatically attach these after using them. If you disable associated mods in Penumbra, the associated entries here will also be deleted automatically."); + + "Club Penguin Sync will automatically attach these after using them. If you disable associated mods in Penumbra, the associated entries here will also be deleted automatically."); }); ImGuiHelpers.ScaledDummy(5); @@ -365,7 +365,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase { UiSharedService.TextWrapped("This tab allows you to attempt to fix mods that do not sync correctly, especially those with modded models and animations." + Environment.NewLine + Environment.NewLine + "To use this, start the recording, execute one or multiple emotes/animations you want to attempt to fix and check if new data appears in the table below." + Environment.NewLine - + "If it doesn't, Loporrit is not able to catch the data or already has recorded the animation files (check 'Show previously added transient files' to see if not all is already present)." + Environment.NewLine + Environment.NewLine + + "If it doesn't, Club Penguin Sync is not able to catch the data or already has recorded the animation files (check 'Show previously added transient files' to see if not all is already present)." + Environment.NewLine + Environment.NewLine + "For most animations, vfx, etc. it is enough to just run them once unless they have random variations. Longer animations do not require to play out in their entirety to be captured."); ImGuiHelpers.ScaledDummy(5); UiSharedService.DrawGroupedCenteredColorText("Important Note: If you need to fix an animation that should apply across multiple jobs, you need to repeat this process with at least one additional job, " + @@ -405,7 +405,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase ImGuiHelpers.ScaledDummy(5); ImGui.Checkbox("Show previously added transient files in the recording", ref _showAlreadyAddedTransients); - _uiSharedService.DrawHelpText("Use this only if you want to see what was previously already caught by Loporrit"); + _uiSharedService.DrawHelpText("Use this only if you want to see what was previously already caught by Club Penguin Sync"); ImGuiHelpers.ScaledDummy(5); using (ImRaii.Disabled(_transientResourceManager.IsTransientRecording || _transientResourceManager.RecordedTransients.All(k => !k.AddTransient) || !_acknowledgeReview)) @@ -475,7 +475,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase { UiSharedService.DrawTree("What is this? (Explanation / Help)", () => { - UiSharedService.TextWrapped("This tab shows you all files and their sizes that are currently in use through your character and associated entities in Loporrit"); + UiSharedService.TextWrapped("This tab shows you all files and their sizes that are currently in use through your character and associated entities in Club Penguin Sync"); }); if (_cachedAnalysis == null || _cachedAnalysis.Count == 0) return; diff --git a/MareSynchronos/UI/DownloadUi.cs b/MareSynchronos/UI/DownloadUi.cs index ecdbe3a..c10fef2 100644 --- a/MareSynchronos/UI/DownloadUi.cs +++ b/MareSynchronos/UI/DownloadUi.cs @@ -23,7 +23,7 @@ public class DownloadUi : WindowMediatorSubscriberBase public DownloadUi(ILogger logger, DalamudUtilService dalamudUtilService, MareConfigService configService, FileUploadManager fileTransferManager, MareMediator mediator, UiSharedService uiShared, PerformanceCollectorService performanceCollectorService) - : base(logger, mediator, "Loporrit Downloads", performanceCollectorService) + : base(logger, mediator, "Club Penguin Sync Downloads", performanceCollectorService) { _dalamudUtilService = dalamudUtilService; _configService = configService; diff --git a/MareSynchronos/UI/DtrEntry.cs b/MareSynchronos/UI/DtrEntry.cs index 96fbc71..215074c 100644 --- a/MareSynchronos/UI/DtrEntry.cs +++ b/MareSynchronos/UI/DtrEntry.cs @@ -104,7 +104,7 @@ public sealed class DtrEntry : IDisposable, IHostedService private IDtrBarEntry CreateEntry() { _logger.LogTrace("Creating new DtrBar entry"); - var entry = _dtrBar.Get("Loporrit"); + var entry = _dtrBar.Get("ClubPenguinSync"); entry.OnClick = _ => _mareMediator.Publish(new UiToggleMessage(typeof(CompactUi))); return entry; @@ -163,19 +163,19 @@ public sealed class DtrEntry : IDisposable, IHostedService .Select(x => string.Format("{0}", _configService.Current.PreferNoteInDtrTooltip ? x.GetNoteOrName() : x.PlayerName)); } - tooltip = $"Loporrit: Connected{Environment.NewLine}----------{Environment.NewLine}{string.Join(Environment.NewLine, visiblePairs)}"; + tooltip = $"ClubPenguinSync: Connected{Environment.NewLine}----------{Environment.NewLine}{string.Join(Environment.NewLine, visiblePairs)}"; colors = _configService.Current.DtrColorsPairsInRange; } else { - tooltip = "Loporrit: Connected"; + tooltip = "ClubPenguinSync: Connected"; colors = _configService.Current.DtrColorsDefault; } } else { text = RenderDtrStyle(_configService.Current.DtrStyle, "\uE04C"); - tooltip = "Loporrit: Not Connected"; + tooltip = "ClubPenguinSync: Not Connected"; colors = _configService.Current.DtrColorsNotConnected; } diff --git a/MareSynchronos/UI/EditProfileUi.cs b/MareSynchronos/UI/EditProfileUi.cs index 956070a..ebcef75 100644 --- a/MareSynchronos/UI/EditProfileUi.cs +++ b/MareSynchronos/UI/EditProfileUi.cs @@ -35,7 +35,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase ApiController apiController, UiSharedService uiSharedService, FileDialogManager fileDialogManager, ServerConfigurationManager serverConfigurationManager, MareProfileManager mareProfileManager, PerformanceCollectorService performanceCollectorService) - : base(logger, mediator, "Loporrit Edit Profile###LoporritSyncEditProfileUI", performanceCollectorService) + : base(logger, mediator, "Club Penguin Sync Edit Profile###ClubPenguinSyncEditProfileUI", performanceCollectorService) { IsOpen = false; this.SizeConstraints = new() @@ -136,7 +136,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase using MemoryStream ms = new(fileContent); var format = PngHdr.TryExtractDimensions(ms); - if (format.Width > 256 || format.Height > 256 || (fileContent.Length > 250 * 1024)) + if (format.Width > 257 || format.Height > 257 || (fileContent.Length > 250 * 1024)) { _showFileDialogError = true; return; diff --git a/MareSynchronos/UI/IntroUI.cs b/MareSynchronos/UI/IntroUI.cs index b262c23..6a12719 100644 --- a/MareSynchronos/UI/IntroUI.cs +++ b/MareSynchronos/UI/IntroUI.cs @@ -38,7 +38,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase public IntroUi(ILogger logger, UiSharedService uiShared, MareConfigService configService, CacheMonitor fileCacheManager, ServerConfigurationManager serverConfigurationManager, MareMediator mareMediator, - PerformanceCollectorService performanceCollectorService, DalamudUtilService dalamudUtilService, AccountRegistrationService registerService) : base(logger, mareMediator, "Loporrit Setup", performanceCollectorService) + PerformanceCollectorService performanceCollectorService, DalamudUtilService dalamudUtilService, AccountRegistrationService registerService) : base(logger, mareMediator, "Club Penguin Sync Setup", performanceCollectorService) { _uiShared = uiShared; _configService = configService; @@ -108,9 +108,9 @@ public partial class IntroUi : WindowMediatorSubscriberBase if (!_configService.Current.AcceptedAgreement && !_readFirstPage) { - _uiShared.BigText("Welcome to Loporrit"); + _uiShared.BigText("Welcome to Club Penguin Sync"); ImGui.Separator(); - UiSharedService.TextWrapped("Loporrit is a plugin that will replicate your full current character state including all Penumbra mods to other paired users. " + + UiSharedService.TextWrapped("Club Penguin Sync is a plugin that will replicate your full current character state including all Penumbra mods to other paired users. " + "Note that you will have to have Penumbra as well as Glamourer installed to use this plugin."); UiSharedService.TextWrapped("We will have to setup a few things first before you can start using this plugin. Click on next to continue."); @@ -201,11 +201,11 @@ This service is provided as-is. } else { - UiSharedService.TextWrapped("To not unnecessary download files already present on your computer, Loporrit will have to scan your Penumbra mod directory. " + - "Additionally, a local storage folder must be set where Loporrit will download other character files to. " + + UiSharedService.TextWrapped("To not unnecessary download files already present on your computer, Club Penguin Sync will have to scan your Penumbra mod directory. " + + "Additionally, a local storage folder must be set where Club Penguin Sync will download other character files to. " + "Once the storage folder is set and the scan complete, this page will automatically forward to registration at a service."); UiSharedService.TextWrapped("Note: The initial scan, depending on the amount of mods you have, might take a while. Please wait until it is completed."); - UiSharedService.ColorTextWrapped("Warning: once past this step you should not delete the FileCache.csv of Loporrit in the Plugin Configurations folder of Dalamud. " + + UiSharedService.ColorTextWrapped("Warning: once past this step you should not delete the FileCache.csv of Club Penguin Sync in the Plugin Configurations folder of Dalamud. " + "Otherwise on the next launch a full re-scan of the file cache database will be initiated.", ImGuiColors.DalamudYellow); UiSharedService.ColorTextWrapped("Warning: if the scan is hanging and does nothing for a long time, chances are high your Penumbra folder is not set up properly.", ImGuiColors.DalamudYellow); _uiShared.DrawCacheDirectorySetting(); @@ -230,8 +230,8 @@ This service is provided as-is. _configService.Current.UseCompactor = useFileCompactor; _configService.Save(); } - UiSharedService.ColorTextWrapped("The File Compactor can save a tremendeous amount of space on the hard disk for downloads through Loporrit. It will incur a minor CPU penalty on download but can speed up " + - "loading of other characters. It is recommended to keep it enabled. You can change this setting later anytime in the Loporrit settings.", ImGuiColors.DalamudYellow); + UiSharedService.ColorTextWrapped("The File Compactor can save a tremendeous amount of space on the hard disk for downloads through Club Penguin Sync. It will incur a minor CPU penalty on download but can speed up " + + "loading of other characters. It is recommended to keep it enabled. You can change this setting later anytime in the Club Penguin Sync settings.", ImGuiColors.DalamudYellow); } } else if (!_uiShared.ApiController.IsConnected) @@ -239,7 +239,7 @@ This service is provided as-is. using (_uiShared.UidFont.Push()) ImGui.TextUnformatted("Service Registration"); ImGui.Separator(); - UiSharedService.TextWrapped("To be able to use Loporrit you will have to register an account."); + UiSharedService.TextWrapped("To be able to use Club Penguin Sync you will have to register an account."); UiSharedService.TextWrapped("Refer to the instructions at the location you obtained this plugin for more information or support."); ImGui.Separator(); @@ -251,8 +251,8 @@ This service is provided as-is. { ImGui.BeginDisabled(_registrationInProgress || _registrationSuccess || _secretKey.Length > 0); ImGui.Separator(); - ImGui.TextUnformatted("If you have not used Loporrit before, click below to register a new account."); - if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a new Loporrit account")) + ImGui.TextUnformatted("If you have not used Club Penguin Sync before, click below to register a new account."); + if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a new Club Penguin Sync account")) { _registrationInProgress = true; _ = Task.Run(async () => { diff --git a/MareSynchronos/UI/PermissionWindowUI.cs b/MareSynchronos/UI/PermissionWindowUI.cs index a9b9509..8914548 100644 --- a/MareSynchronos/UI/PermissionWindowUI.cs +++ b/MareSynchronos/UI/PermissionWindowUI.cs @@ -22,7 +22,7 @@ public class PermissionWindowUI : WindowMediatorSubscriberBase public PermissionWindowUI(ILogger logger, Pair pair, MareMediator mediator, UiSharedService uiSharedService, ApiController apiController, PerformanceCollectorService performanceCollectorService) - : base(logger, mediator, "Permissions for " + pair.UserData.AliasOrUID + "###LoporritSyncPermissions" + pair.UserData.UID, performanceCollectorService) + : base(logger, mediator, "Permissions for " + pair.UserData.AliasOrUID + "###ClubPenguinSyncPermissions" + pair.UserData.UID, performanceCollectorService) { Pair = pair; _uiSharedService = uiSharedService; diff --git a/MareSynchronos/UI/PlayerAnalysisUI.cs b/MareSynchronos/UI/PlayerAnalysisUI.cs index 0fe2a99..ef2b778 100644 --- a/MareSynchronos/UI/PlayerAnalysisUI.cs +++ b/MareSynchronos/UI/PlayerAnalysisUI.cs @@ -24,7 +24,7 @@ public class PlayerAnalysisUI : WindowMediatorSubscriberBase public PlayerAnalysisUI(ILogger logger, Pair pair, MareMediator mediator, UiSharedService uiSharedService, PerformanceCollectorService performanceCollectorService) - : base(logger, mediator, "Character Data Analysis for " + pair.UserData.AliasOrUID + "###LoporritPairAnalysis" + pair.UserData.UID, performanceCollectorService) + : base(logger, mediator, "Character Data Analysis for " + pair.UserData.AliasOrUID + "###ClubPenguinSyncPairAnalysis" + pair.UserData.UID, performanceCollectorService) { Pair = pair; _uiSharedService = uiSharedService; diff --git a/MareSynchronos/UI/PopoutProfileUi.cs b/MareSynchronos/UI/PopoutProfileUi.cs index ff8dfcf..0b90f91 100644 --- a/MareSynchronos/UI/PopoutProfileUi.cs +++ b/MareSynchronos/UI/PopoutProfileUi.cs @@ -29,7 +29,7 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase public PopoutProfileUi(ILogger logger, MareMediator mediator, UiSharedService uiSharedService, ServerConfigurationManager serverManager, MareConfigService mareConfigService, - MareProfileManager mareProfileManager, PairManager pairManager, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "###LoporritSyncPopoutProfileUI", performanceCollectorService) + MareProfileManager mareProfileManager, PairManager pairManager, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "###ClubPenguinSyncPopoutProfileUI", performanceCollectorService) { _uiSharedService = uiSharedService; _serverManager = serverManager; diff --git a/MareSynchronos/UI/SettingsUi.cs b/MareSynchronos/UI/SettingsUi.cs index ca9f818..51dfee1 100644 --- a/MareSynchronos/UI/SettingsUi.cs +++ b/MareSynchronos/UI/SettingsUi.cs @@ -77,7 +77,7 @@ public class SettingsUi : WindowMediatorSubscriberBase FileCacheManager fileCacheManager, FileCompactor fileCompactor, ApiController apiController, IpcManager ipcManager, IpcProvider ipcProvider, CacheMonitor cacheMonitor, - DalamudUtilService dalamudUtilService, AccountRegistrationService registerService) : base(logger, mediator, "Loporrit Settings", performanceCollector) + DalamudUtilService dalamudUtilService, AccountRegistrationService registerService) : base(logger, mediator, "Club Penguin Sync Settings", performanceCollector) { _configService = configService; _pairManager = pairManager; @@ -685,7 +685,7 @@ public class SettingsUi : WindowMediatorSubscriberBase { _configService.Current.LogTraceLog = logTraceToFile; _configService.Save(); - LoporritSync.Plugin.Self.ToggleFileLogging(_configService.Current.LogTraceLog, "Setting Change"); + ClubPenguinSync.Plugin.Self.ToggleFileLogging(_configService.Current.LogTraceLog, "Setting Change"); } ImGui.SameLine(300.0f * ImGuiHelpers.GlobalScale); @@ -756,7 +756,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _uiShared.BigText("Storage"); - UiSharedService.TextWrapped("Loporrit stores downloaded files from paired people permanently. This is to improve loading performance and requiring less downloads. " + + UiSharedService.TextWrapped("Club Penguin Sync stores downloaded files from paired people permanently. This is to improve loading performance and requiring less downloads. " + "The storage governs itself by clearing data beyond the set storage size. Please set the storage size accordingly. It is not necessary to manually clear the storage."); _uiShared.DrawFileScanState(); @@ -773,7 +773,7 @@ public class SettingsUi : WindowMediatorSubscriberBase } ImGui.AlignTextToFramePadding(); - ImGui.TextUnformatted("Monitoring Loporrit Storage Folder: " + (_cacheMonitor.MareWatcher?.Path ?? "Not monitoring")); + ImGui.TextUnformatted("Monitoring Club Penguin Sync Storage Folder: " + (_cacheMonitor.MareWatcher?.Path ?? "Not monitoring")); if (string.IsNullOrEmpty(_cacheMonitor.MareWatcher?.Path)) { ImGui.SameLine(); @@ -791,7 +791,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _cacheMonitor.StartPenumbraWatcher(_ipcManager.Penumbra.ModDirectory); _cacheMonitor.InvokeScan(); } - UiSharedService.AttachToolTip("Attempts to resume monitoring for both Penumbra and Loporrit Storage. " + UiSharedService.AttachToolTip("Attempts to resume monitoring for both Penumbra and Club Penguin Sync Storage. " + "Resuming the monitoring will also force a full scan to run." + Environment.NewLine + "If the button remains present after clicking it, consult /xllog for errors"); } @@ -804,8 +804,8 @@ public class SettingsUi : WindowMediatorSubscriberBase _cacheMonitor.StopMonitoring(); } } - UiSharedService.AttachToolTip("Stops the monitoring for both Penumbra and Loporrit Storage. " - + "Do not stop the monitoring, unless you plan to move the Penumbra and Loporrit Storage folders, to ensure correct functionality of Loporrit." + Environment.NewLine + UiSharedService.AttachToolTip("Stops the monitoring for both Penumbra and Club Penguin Sync Storage. " + + "Do not stop the monitoring, unless you plan to move the Penumbra and Club Penguin Sync Storage folders, to ensure correct functionality of Club Penguin Sync." + Environment.NewLine + "If you stop the monitoring to move folders around, resume it after you are finished moving the files." + UiSharedService.TooltipSeparator + "Hold CTRL to enable this button"); } @@ -822,7 +822,7 @@ public class SettingsUi : WindowMediatorSubscriberBase bool useFileCompactor = _configService.Current.UseCompactor; if (!useFileCompactor && !isLinux) { - UiSharedService.ColorTextWrapped("Hint: To free up space when using Loporrit consider enabling the File Compactor", ImGuiColors.DalamudYellow); + UiSharedService.ColorTextWrapped("Hint: To free up space when using Club Penguin Sync consider enabling the File Compactor", ImGuiColors.DalamudYellow); } if (isLinux || !_cacheMonitor.StorageisNTFS) ImGui.BeginDisabled(); if (ImGui.Checkbox("Use file compactor", ref useFileCompactor)) @@ -931,7 +931,7 @@ public class SettingsUi : WindowMediatorSubscriberBase } UiSharedService.AttachToolTip("You normally do not need to do this. THIS IS NOT SOMETHING YOU SHOULD BE DOING TO TRY TO FIX SYNC ISSUES." + Environment.NewLine + "This will solely remove all downloaded data from all players and will require you to re-download everything again." + Environment.NewLine - + "Loporrit's storage is self-clearing and will not surpass the limit you have set it to." + Environment.NewLine + + "Club Penguin Sync's storage is self-clearing and will not surpass the limit you have set it to." + Environment.NewLine + "If you still think you need to do this hold CTRL while pressing the button."); if (!_readClearCache) ImGui.EndDisabled(); @@ -1003,14 +1003,14 @@ public class SettingsUi : WindowMediatorSubscriberBase _configService.Current.EnableRightClickMenus = enableRightClickMenu; _configService.Save(); } - _uiShared.DrawHelpText("This will add Loporrit related right click menu entries in the game UI on paired players."); + _uiShared.DrawHelpText("This will add Club Penguin Sync related right click menu entries in the game UI on paired players."); if (ImGui.Checkbox("Display status and visible pair count in Server Info Bar", ref enableDtrEntry)) { _configService.Current.EnableDtrEntry = enableDtrEntry; _configService.Save(); } - _uiShared.DrawHelpText("This will add Loporrit connection status and visible pair count in the Server Info Bar.\nYou can further configure this through your Dalamud Settings."); + _uiShared.DrawHelpText("This will add Club Penguin Sync connection status and visible pair count in the Server Info Bar.\nYou can further configure this through your Dalamud Settings."); using (ImRaii.Disabled(!enableDtrEntry)) { @@ -1772,7 +1772,7 @@ public class SettingsUi : WindowMediatorSubscriberBase if (true) // Enable registration button for all servers { ImGui.SameLine(); - if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a new Loporrit account")) + if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a new Club Penguin Sync account")) { _registrationInProgress = true; _ = Task.Run(async () => { @@ -1828,7 +1828,7 @@ public class SettingsUi : WindowMediatorSubscriberBase { var serverName = selectedServer.ServerName; var serverUri = selectedServer.ServerUri; - var isMain = string.Equals(serverName, ApiController.LoporritServer, StringComparison.OrdinalIgnoreCase); + var isMain = string.Equals(serverName, ApiController.ClubPenguinServer, StringComparison.OrdinalIgnoreCase); var flags = isMain ? ImGuiInputTextFlags.ReadOnly : ImGuiInputTextFlags.None; if (ImGui.InputText("Service URI", ref serverUri, 255, flags)) diff --git a/MareSynchronos/UI/StandaloneProfileUi.cs b/MareSynchronos/UI/StandaloneProfileUi.cs index 1389c51..4dbe71e 100644 --- a/MareSynchronos/UI/StandaloneProfileUi.cs +++ b/MareSynchronos/UI/StandaloneProfileUi.cs @@ -26,7 +26,7 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase public StandaloneProfileUi(ILogger logger, MareMediator mediator, UiSharedService uiBuilder, ServerConfigurationManager serverManager, MareProfileManager mareProfileManager, PairManager pairManager, Pair pair, PerformanceCollectorService performanceCollector) - : base(logger, mediator, "Profile of " + pair.UserData.AliasOrUID + "##LoporritSyncStandaloneProfileUI" + pair.UserData.AliasOrUID, performanceCollector) + : base(logger, mediator, "Profile of " + pair.UserData.AliasOrUID + "##ClubPenguinSyncStandaloneProfileUI" + pair.UserData.AliasOrUID, performanceCollector) { _uiSharedService = uiBuilder; _serverManager = serverManager; diff --git a/MareSynchronos/UI/UISharedService.cs b/MareSynchronos/UI/UISharedService.cs index d574c4a..769af27 100644 --- a/MareSynchronos/UI/UISharedService.cs +++ b/MareSynchronos/UI/UISharedService.cs @@ -535,7 +535,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase public void DrawCacheDirectorySetting() { - ColorTextWrapped("Note: The storage folder should be somewhere close to root (i.e. C:\\LoporritStorage) in a new empty folder. DO NOT point this to your game folder. DO NOT point this to your Penumbra folder.", ImGuiColors.DalamudYellow); + ColorTextWrapped("Note: The storage folder should be somewhere close to root (i.e. C:\\ClubPenguinSyncStorage) in a new empty folder. DO NOT point this to your game folder. DO NOT point this to your Penumbra folder.", ImGuiColors.DalamudYellow); var cacheDirectory = _configService.Current.CacheFolder; ImGui.SetNextItemWidth(400 * ImGuiHelpers.GlobalScale); ImGui.InputText("Storage Folder##cache", ref cacheDirectory, 255, ImGuiInputTextFlags.ReadOnly); @@ -545,7 +545,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase { if (IconButton(FontAwesomeIcon.Folder)) { - FileDialogManager.OpenFolderDialog("Pick Loporrit Storage Folder", (success, path) => + FileDialogManager.OpenFolderDialog("Pick Club Penguin Sync Storage Folder", (success, path) => { if (!success) return; @@ -605,7 +605,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase } else if (_cacheDirectoryHasOtherFilesThanCache) { - ColorTextWrapped("Your selected directory has files or directories inside that are not Loporrit related. Use an empty directory or a previous storage directory only.", ImGuiColors.DalamudRed); + ColorTextWrapped("Your selected directory has files or directories inside that are not Club Penguin Sync related. Use an empty directory or a previous storage directory only.", ImGuiColors.DalamudRed); } else if (!_cacheDirectoryIsValidPath) { @@ -620,7 +620,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase _configService.Current.MaxLocalCacheInGiB = maxCacheSize; _configService.Save(); } - DrawHelpText("The storage is automatically governed by Loporrit. It will clear itself automatically once it reaches the set capacity by removing the oldest unused files. You typically do not need to clear it yourself."); + DrawHelpText("The storage is automatically governed by Club Penguin Sync. It will clear itself automatically once it reaches the set capacity by removing the oldest unused files. You typically do not need to clear it yourself."); } public T? DrawCombo(string comboName, IEnumerable comboItems, Func toName, @@ -849,7 +849,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase if (!_penumbraExists || !_glamourerExists) { - ImGui.TextColored(ImGuiColors.DalamudRed, "You need to install both Penumbra and Glamourer and keep them up to date to use Loporrit."); + ImGui.TextColored(ImGuiColors.DalamudRed, "You need to install both Penumbra and Glamourer and keep them up to date to use Club Penguin Sync."); return false; } else if (NoSnapService.AnyLoaded) diff --git a/MareSynchronos/WebAPI/AccountRegistrationService.cs b/MareSynchronos/WebAPI/AccountRegistrationService.cs index b36e73c..d0514f4 100644 --- a/MareSynchronos/WebAPI/AccountRegistrationService.cs +++ b/MareSynchronos/WebAPI/AccountRegistrationService.cs @@ -50,13 +50,13 @@ public sealed class AccountRegistrationService : IDisposable var authApiUrl = _serverManager.CurrentApiUrl; // Override the API URL used for auth from remote config, if one is available - if (authApiUrl.Equals(ApiController.LoporritServiceUri, StringComparison.Ordinal)) + if (authApiUrl.Equals(ApiController.ClubPenguinServiceUri, StringComparison.Ordinal)) { var config = await _remoteConfig.GetConfigAsync("mainServer").ConfigureAwait(false) ?? new(); if (!string.IsNullOrEmpty(config.ApiUrl)) authApiUrl = config.ApiUrl; else - authApiUrl = ApiController.LoporritServiceApiUri; + authApiUrl = ApiController.ClubPenguinServiceApiUri; } var secretKey = GenerateSecretKey(); diff --git a/MareSynchronos/WebAPI/SignalR/ApiController.cs b/MareSynchronos/WebAPI/SignalR/ApiController.cs index 84d046a..48c11a2 100644 --- a/MareSynchronos/WebAPI/SignalR/ApiController.cs +++ b/MareSynchronos/WebAPI/SignalR/ApiController.cs @@ -21,10 +21,10 @@ namespace MareSynchronos.WebAPI; #pragma warning disable MA0040 public sealed partial class ApiController : DisposableMediatorSubscriberBase, IMareHubClient { - public const string LoporritServer = "Loporrit Main Server"; - public const string LoporritServiceUri = "wss://lop-sync.com"; - public const string LoporritServiceApiUri = "wss://hub.lop-sync.com/"; - public const string LoporritServiceHubUri = "wss://hub.lop-sync.com/mare"; + public const string ClubPenguinServer = "Club Penguin Sync Main Server"; + public const string ClubPenguinServiceUri = "wss://clubpenguin.drgn.rocks"; + public const string ClubPenguinServiceApiUri = "wss://clubpenguin.drgn.rocks/"; + public const string ClubPenguinServiceHubUri = "wss://clubpenguin.drgn.rocks/mare"; private readonly DalamudUtilService _dalamudUtil; private readonly HubFactory _hubFactory; @@ -194,7 +194,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM Mediator.Publish(new NotificationMessage("Client incompatible", $"Your client is outdated ({currentClientVer.Major}.{currentClientVer.Minor}.{currentClientVer.Build}.{currentClientVer.Revision}), current is: " + $"{_connectionDto.CurrentClientVersion.Major}.{_connectionDto.CurrentClientVersion.Minor}.{_connectionDto.CurrentClientVersion.Build}.{_connectionDto.CurrentClientVersion.Revision} " + - $"This client version is incompatible and will not be able to connect. Please update your Loporrit client.", + $"This client version is incompatible and will not be able to connect. Please update your Club Penguin Sync client.", NotificationType.Error)); } await StopConnection(ServerState.VersionMisMatch).ConfigureAwait(false); @@ -206,7 +206,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM Mediator.Publish(new NotificationMessage("Client outdated", $"Your client is outdated ({currentClientVer.Major}.{currentClientVer.Minor}.{currentClientVer.Build}.{currentClientVer.Revision}), current is: " + $"{_connectionDto.CurrentClientVersion.Major}.{_connectionDto.CurrentClientVersion.Minor}.{_connectionDto.CurrentClientVersion.Build}.{_connectionDto.CurrentClientVersion.Revision} " + - $"Please keep your Loporrit client up-to-date.", + $"Please keep your Club Penguin Sync client up-to-date.", NotificationType.Warning, TimeSpan.FromSeconds(15))); } diff --git a/MareSynchronos/WebAPI/SignalR/HubFactory.cs b/MareSynchronos/WebAPI/SignalR/HubFactory.cs index 07f8d9c..b21ebd9 100644 --- a/MareSynchronos/WebAPI/SignalR/HubFactory.cs +++ b/MareSynchronos/WebAPI/SignalR/HubFactory.cs @@ -87,14 +87,14 @@ public class HubFactory : MediatorSubscriberBase }; } - if (_serverConfigurationManager.CurrentApiUrl.Equals(ApiController.LoporritServiceUri, StringComparison.Ordinal)) + if (_serverConfigurationManager.CurrentApiUrl.Equals(ApiController.ClubPenguinServiceUri, StringComparison.Ordinal)) { var mainServerConfig = await _remoteConfig.GetConfigAsync("mainServer").ConfigureAwait(false) ?? new(); defaultConfig = mainServerConfig; if (string.IsNullOrEmpty(mainServerConfig.ApiUrl)) - defaultConfig.ApiUrl = ApiController.LoporritServiceApiUri; + defaultConfig.ApiUrl = ApiController.ClubPenguinServiceApiUri; if (string.IsNullOrEmpty(mainServerConfig.HubUrl)) - defaultConfig.HubUrl = ApiController.LoporritServiceHubUri; + defaultConfig.HubUrl = ApiController.ClubPenguinServiceHubUri; } string jsonResponse; diff --git a/MareSynchronos/WebAPI/SignalR/TokenProvider.cs b/MareSynchronos/WebAPI/SignalR/TokenProvider.cs index a405657..b5b7820 100644 --- a/MareSynchronos/WebAPI/SignalR/TokenProvider.cs +++ b/MareSynchronos/WebAPI/SignalR/TokenProvider.cs @@ -73,13 +73,13 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber var authApiUrl = _serverManager.CurrentApiUrl; // Override the API URL used for auth from remote config, if one is available - if (authApiUrl.Equals(ApiController.LoporritServiceUri, StringComparison.Ordinal)) + if (authApiUrl.Equals(ApiController.ClubPenguinServiceUri, StringComparison.Ordinal)) { var config = await _remoteConfig.GetConfigAsync("mainServer").ConfigureAwait(false) ?? new(); if (!string.IsNullOrEmpty(config.ApiUrl)) authApiUrl = config.ApiUrl; else - authApiUrl = ApiController.LoporritServiceApiUri; + authApiUrl = ApiController.ClubPenguinServiceApiUri; } try diff --git a/Penumbra.Api b/Penumbra.Api index 0a97029..af41b17 160000 --- a/Penumbra.Api +++ b/Penumbra.Api @@ -1 +1 @@ -Subproject commit 0a970295b2398683b1e49c46fd613541e2486210 +Subproject commit af41b1787acef9df7dc83619fe81e63a36443ee5