From 94ed4a48c109771831ea794c1e9e6faa42ad782c Mon Sep 17 00:00:00 2001 From: Juster Zhu Date: Thu, 30 Nov 2023 22:32:40 +0800 Subject: [PATCH 1/2] remove project --- .../GeneralUpdate.MiniBowl.csproj | 14 -------- .../Jbos/CheckClientJob.cs | 33 ------------------- .../MiniBowlBootstrap.cs | 16 --------- .../Model/ProcessInfo.cs | 27 --------------- .../GeneralUpdate.ProtectService.csproj | 15 --------- .../GeneralUpdate.ProtectService.http | 11 ------- .../GeneralUpdate.ProtectService/Program.cs | 32 ------------------ .../Properties/launchSettings.json | 15 --------- .../appsettings.Development.json | 8 ----- .../appsettings.json | 9 ----- 10 files changed, 180 deletions(-) delete mode 100644 src/c#/GeneralUpdate.MiniBowl/GeneralUpdate.MiniBowl.csproj delete mode 100644 src/c#/GeneralUpdate.MiniBowl/Jbos/CheckClientJob.cs delete mode 100644 src/c#/GeneralUpdate.MiniBowl/MiniBowlBootstrap.cs delete mode 100644 src/c#/GeneralUpdate.MiniBowl/Model/ProcessInfo.cs delete mode 100644 src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.csproj delete mode 100644 src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.http delete mode 100644 src/c#/GeneralUpdate.ProtectService/Program.cs delete mode 100644 src/c#/GeneralUpdate.ProtectService/Properties/launchSettings.json delete mode 100644 src/c#/GeneralUpdate.ProtectService/appsettings.Development.json delete mode 100644 src/c#/GeneralUpdate.ProtectService/appsettings.json diff --git a/src/c#/GeneralUpdate.MiniBowl/GeneralUpdate.MiniBowl.csproj b/src/c#/GeneralUpdate.MiniBowl/GeneralUpdate.MiniBowl.csproj deleted file mode 100644 index afc6d21..0000000 --- a/src/c#/GeneralUpdate.MiniBowl/GeneralUpdate.MiniBowl.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Library - net8.0 - enable - enable - - - - - - - diff --git a/src/c#/GeneralUpdate.MiniBowl/Jbos/CheckClientJob.cs b/src/c#/GeneralUpdate.MiniBowl/Jbos/CheckClientJob.cs deleted file mode 100644 index 653d463..0000000 --- a/src/c#/GeneralUpdate.MiniBowl/Jbos/CheckClientJob.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Quartz; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GeneralUpdate.MiniBowl.Jbos -{ - internal class CheckClientJob : IJob - { - public async Task Execute(IJobExecutionContext context) - { - if (!IsChromeRunning()) - { - Process.Start("chrome.exe"); - } - - await Task.CompletedTask; - } - - private bool IsChromeRunning() - { - foreach (var process in Process.GetProcesses()) - { - if (process.ProcessName.ToLower().Contains("chrome")) - return true; - } - return false; - } - } -} diff --git a/src/c#/GeneralUpdate.MiniBowl/MiniBowlBootstrap.cs b/src/c#/GeneralUpdate.MiniBowl/MiniBowlBootstrap.cs deleted file mode 100644 index 5704938..0000000 --- a/src/c#/GeneralUpdate.MiniBowl/MiniBowlBootstrap.cs +++ /dev/null @@ -1,16 +0,0 @@ -using GeneralUpdate.MiniBowl.Model; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GeneralUpdate.MiniBowl -{ - internal class MiniBowlBootstrap - { - void WithConfig(ProcessInfo processInfo) { } - - void Launch() { } - } -} diff --git a/src/c#/GeneralUpdate.MiniBowl/Model/ProcessInfo.cs b/src/c#/GeneralUpdate.MiniBowl/Model/ProcessInfo.cs deleted file mode 100644 index cee5c43..0000000 --- a/src/c#/GeneralUpdate.MiniBowl/Model/ProcessInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GeneralUpdate.MiniBowl.Model -{ - public enum ProcessStatus - { - Run, - None, - Down - } - - internal class ProcessInfo - { - public string Name { get; set; } - - public int Id { get; set; } - - public ProcessStatus Status { get; set; } - - public string Path { get; set; } - } -} diff --git a/src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.csproj b/src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.csproj deleted file mode 100644 index 2ad93a2..0000000 --- a/src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - net8.0 - enable - enable - true - true - - - - - - - diff --git a/src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.http b/src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.http deleted file mode 100644 index 6b0e9b5..0000000 --- a/src/c#/GeneralUpdate.ProtectService/GeneralUpdate.ProtectService.http +++ /dev/null @@ -1,11 +0,0 @@ -@GeneralUpdate.ProtectService_HostAddress = http://localhost:5276 - -GET {{GeneralUpdate.ProtectService_HostAddress}}/protect/ -Accept: application/json - -### - -GET {{GeneralUpdate.ProtectService_HostAddress}}/protect/1 -Accept: application/json - -### \ No newline at end of file diff --git a/src/c#/GeneralUpdate.ProtectService/Program.cs b/src/c#/GeneralUpdate.ProtectService/Program.cs deleted file mode 100644 index 8b1fca5..0000000 --- a/src/c#/GeneralUpdate.ProtectService/Program.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Newtonsoft.Json; - -namespace GeneralUpdate.ProtectService -{ - public class Program - { - public static void Main(string[] args) - { - var builder = WebApplication.CreateSlimBuilder(args); - var app = builder.Build(); - var protectApi = app.MapGroup("/protect"); - protectApi.MapGet("/{backupJson}/{targetDir}", Restore); - app.Run(); - } - - internal static string Restore(string backupJson,string targetDirectory) - { - var backupObj = JsonConvert.DeserializeObject>>(backupJson); - while (backupObj?.Count > 0) - { - List currentList = backupObj.Pop(); - foreach (var filePath in currentList) - { - string fileName = Path.GetFileName(filePath); - string destFile = Path.Combine(targetDirectory, fileName); - File.Copy(filePath, destFile, true); - } - } - return backupJson; - } - } -} diff --git a/src/c#/GeneralUpdate.ProtectService/Properties/launchSettings.json b/src/c#/GeneralUpdate.ProtectService/Properties/launchSettings.json deleted file mode 100644 index d05c63b..0000000 --- a/src/c#/GeneralUpdate.ProtectService/Properties/launchSettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": false, - "launchBrowser": false, - "launchUrl": "protect", - "applicationUrl": "http://localhost:5276", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/src/c#/GeneralUpdate.ProtectService/appsettings.Development.json b/src/c#/GeneralUpdate.ProtectService/appsettings.Development.json deleted file mode 100644 index 0c208ae..0000000 --- a/src/c#/GeneralUpdate.ProtectService/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/src/c#/GeneralUpdate.ProtectService/appsettings.json b/src/c#/GeneralUpdate.ProtectService/appsettings.json deleted file mode 100644 index 10f68b8..0000000 --- a/src/c#/GeneralUpdate.ProtectService/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} -- Gitee From d835af432cc2e0320bbb49f180eeae0e3b21030c Mon Sep 17 00:00:00 2001 From: Juster Zhu Date: Thu, 30 Nov 2023 23:44:41 +0800 Subject: [PATCH 2/2] Add update system service --- .../GeneralUpdate.SystemService.csproj | 14 ++++++ .../Jobs/WillMessageJob.cs | 35 ++++++++++++++ .../PersistenceObjects/ProcessPersistence.cs | 31 +++++++++++++ .../WillMessagePersistence.cs | 7 +++ src/c#/GeneralUpdate.SystemService/Program.cs | 15 ++++++ .../Properties/launchSettings.json | 12 +++++ .../Services/QuartzService.cs | 46 +++++++++++++++++++ .../appsettings.Development.json | 8 ++++ .../appsettings.json | 8 ++++ src/c#/GeneralUpdate.sln | 12 ++--- 10 files changed, 182 insertions(+), 6 deletions(-) create mode 100644 src/c#/GeneralUpdate.SystemService/GeneralUpdate.SystemService.csproj create mode 100644 src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs create mode 100644 src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs create mode 100644 src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs create mode 100644 src/c#/GeneralUpdate.SystemService/Program.cs create mode 100644 src/c#/GeneralUpdate.SystemService/Properties/launchSettings.json create mode 100644 src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs create mode 100644 src/c#/GeneralUpdate.SystemService/appsettings.Development.json create mode 100644 src/c#/GeneralUpdate.SystemService/appsettings.json diff --git a/src/c#/GeneralUpdate.SystemService/GeneralUpdate.SystemService.csproj b/src/c#/GeneralUpdate.SystemService/GeneralUpdate.SystemService.csproj new file mode 100644 index 0000000..b71655e --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/GeneralUpdate.SystemService.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + dotnet-GeneralUpdate.SystemService-bedd09fc-af1b-4a6f-ab25-948dc94428ae + + + + + + + diff --git a/src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs b/src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs new file mode 100644 index 0000000..9adb6ef --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs @@ -0,0 +1,35 @@ +using Quartz; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GeneralUpdate.SystemService.Jobs +{ + internal class WillMessageJob : IJob + { + internal const string GROUP = "WillMessageGroup"; + internal const string TRIGGER = "WillMessageTrigger"; + private readonly ISchedulerFactory _schedulerFactory; + private IJobExecutionContext _jobExecutionContext; + + public WillMessageJob(ISchedulerFactory schedulerFactory) + { + _schedulerFactory = schedulerFactory; + } + + public Task Execute(IJobExecutionContext context) + { + _jobExecutionContext = context; + return ScanWillMessage(); + } + + private async Task ScanWillMessage() + { + // 暂停任务 + var scheduler = await _schedulerFactory.GetScheduler(); + await scheduler.PauseJob(_jobExecutionContext.JobDetail.Key); + } + } +} diff --git a/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs new file mode 100644 index 0000000..3f4dfc5 --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs @@ -0,0 +1,31 @@ +namespace GeneralUpdate.SystemService.PersistenceObjects +{ + internal enum ProcessStatus + { + /// + /// Processing has not yet begun. + /// + NotStarted, + /// + /// Processing completed. + /// + Completed, + /// + /// Processing failure. + /// + Failed + } + + internal class ProcessPersistence + { + public required string Name { get; set; } + + public required string Path { get; set; } + + public required string BackupPath { get; set; } + + public ProcessStatus Status { get; set; } + + public DateTime CreateTime { get; set; } + } +} diff --git a/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs new file mode 100644 index 0000000..6e9f78d --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs @@ -0,0 +1,7 @@ +namespace GeneralUpdate.SystemService.PersistenceObjects +{ + internal class WillMessagePersistence where T : class + { + public required List Messages { get; set; } + } +} diff --git a/src/c#/GeneralUpdate.SystemService/Program.cs b/src/c#/GeneralUpdate.SystemService/Program.cs new file mode 100644 index 0000000..c4eee17 --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/Program.cs @@ -0,0 +1,15 @@ +using GeneralUpdate.SystemService.Services; + +namespace GeneralUpdate.SystemService +{ + public class Program + { + public static void Main(string[] args) + { + var builder = Host.CreateApplicationBuilder(args); + builder.Services.AddHostedService(); + var host = builder.Build(); + host.Run(); + } + } +} \ No newline at end of file diff --git a/src/c#/GeneralUpdate.SystemService/Properties/launchSettings.json b/src/c#/GeneralUpdate.SystemService/Properties/launchSettings.json new file mode 100644 index 0000000..ab9db06 --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "profiles": { + "GeneralUpdate.SystemService": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs b/src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs new file mode 100644 index 0000000..dc693be --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs @@ -0,0 +1,46 @@ +using GeneralUpdate.SystemService.Jobs; +using Quartz; +using Quartz.Impl; + +namespace GeneralUpdate.SystemService.Services +{ + internal class QuartzService : BackgroundService + { + private readonly ILogger _logger; + private IJobDetail _job; + private ITrigger _trigger; + private IScheduler _scheduler; + + public QuartzService(ILogger logger) + { + _logger = logger; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + _scheduler = await new StdSchedulerFactory().GetScheduler(); + await _scheduler.Start(); + + var runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow); + + _job = JobBuilder.Create() + .WithIdentity(nameof(WillMessageJob), WillMessageJob.GROUP) + .Build(); + _trigger = TriggerBuilder.Create() + .WithIdentity(WillMessageJob.TRIGGER, WillMessageJob.GROUP) + .StartAt(runTime) + .WithSimpleSchedule(x => x + .WithIntervalInMinutes(2) + .RepeatForever()) + .Build(); + + await _scheduler.ScheduleJob(_job, _trigger); + } + + public override async Task StopAsync(CancellationToken cancellationToken) + { + await base.StopAsync(cancellationToken); + await _scheduler?.Shutdown(); + } + } +} diff --git a/src/c#/GeneralUpdate.SystemService/appsettings.Development.json b/src/c#/GeneralUpdate.SystemService/appsettings.Development.json new file mode 100644 index 0000000..b2dcdb6 --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/src/c#/GeneralUpdate.SystemService/appsettings.json b/src/c#/GeneralUpdate.SystemService/appsettings.json new file mode 100644 index 0000000..b2dcdb6 --- /dev/null +++ b/src/c#/GeneralUpdate.SystemService/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/src/c#/GeneralUpdate.sln b/src/c#/GeneralUpdate.sln index 825847f..0d5fd31 100644 --- a/src/c#/GeneralUpdate.sln +++ b/src/c#/GeneralUpdate.sln @@ -43,7 +43,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GeneralUpdate.Maui.OSS", "G EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GeneralUpdate.OSSClient", "GeneralUpdate.OSSClient\GeneralUpdate.OSSClient.csproj", "{2877DCA1-7EA6-42E9-A1C2-399B51E24893}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeneralUpdate.MiniBowl", "GeneralUpdate.MiniBowl\GeneralUpdate.MiniBowl.csproj", "{3CF53050-6A42-4ACE-8CF6-80FA3ACD92E6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeneralUpdate.SystemService", "GeneralUpdate.SystemService\GeneralUpdate.SystemService.csproj", "{8CE233CF-F337-4579-983D-7327567634FA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -125,10 +125,10 @@ Global {2877DCA1-7EA6-42E9-A1C2-399B51E24893}.Release|Any CPU.ActiveCfg = Release|Any CPU {2877DCA1-7EA6-42E9-A1C2-399B51E24893}.Release|Any CPU.Build.0 = Release|Any CPU {2877DCA1-7EA6-42E9-A1C2-399B51E24893}.Release|Any CPU.Deploy.0 = Release|Any CPU - {3CF53050-6A42-4ACE-8CF6-80FA3ACD92E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3CF53050-6A42-4ACE-8CF6-80FA3ACD92E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3CF53050-6A42-4ACE-8CF6-80FA3ACD92E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3CF53050-6A42-4ACE-8CF6-80FA3ACD92E6}.Release|Any CPU.Build.0 = Release|Any CPU + {8CE233CF-F337-4579-983D-7327567634FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8CE233CF-F337-4579-983D-7327567634FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CE233CF-F337-4579-983D-7327567634FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8CE233CF-F337-4579-983D-7327567634FA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -151,7 +151,7 @@ Global {9A28F525-124A-4019-8F09-BC48030E0E70} = {50B6BB53-63A9-414B-9BB0-79A69EEF6785} {C4BDA544-2A6E-442C-B7D0-32CD7A996933} = {91F059E6-7AD3-4FB7-9604-30A7849C6EFF} {2877DCA1-7EA6-42E9-A1C2-399B51E24893} = {74BE0282-A10D-4A81-A0F0-FAA79A6152B7} - {3CF53050-6A42-4ACE-8CF6-80FA3ACD92E6} = {91F059E6-7AD3-4FB7-9604-30A7849C6EFF} + {8CE233CF-F337-4579-983D-7327567634FA} = {91F059E6-7AD3-4FB7-9604-30A7849C6EFF} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {A7B2D0AD-E000-4749-BAC0-FF21B9872805} -- Gitee