From 907629a2ca444e46eb1dffcd1e7bcc1090c59577 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Fri, 1 Apr 2022 23:24:47 +0800 Subject: [PATCH 01/10] feat: [#62] update codeql-analysis.yml to filter files to be checked --- .github/workflows/codeql-analysis.yml | 10 ++++++++++ CHANGELOG.md | 2 ++ common.props | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a1e6329f4..9a87d2f80 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,9 +14,19 @@ name: "CodeQL" on: push: branches: [ main, develop, release/* ] + paths: + - '**/*.js' + - '**/*.cs' + - '**/*.cshtml' + - '**/*.csproj' pull_request: # The branches below must be a subset of the branches above branches: [ main, develop ] + paths: + - '**/*.js' + - '**/*.cs' + - '**/*.cshtml' + - '**/*.csproj' jobs: analyze: diff --git a/CHANGELOG.md b/CHANGELOG.md index 9937bb391..3044ec5f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,3 +29,5 @@ - 【#27】更新README ## 0.0.9 - 【#47】青龙安装dotnet环境,支持arm架构服务器 +## 0.0.10 +- 【#62】codeql-analysis.yml可以指定检查的文件类型 diff --git a/common.props b/common.props index 590025d77..3254ed9b6 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ <Project> <PropertyGroup> <Authors>Ray</Authors> - <Version>0.0.9</Version> + <Version>0.0.10</Version> <NoWarn>$(NoWarn);CS1591;CS0436</NoWarn> </PropertyGroup> </Project> From ebccded9565084f6819c4da9b77cc8aa4d9d0b07 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Fri, 1 Apr 2022 23:27:25 +0800 Subject: [PATCH 02/10] feat: [61] publish-image.yml support choosing whether be with latest tag --- .github/workflows/publish-image.yml | 11 +++++++++-- CHANGELOG.md | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-image.yml b/.github/workflows/publish-image.yml index ed8e5a977..af995b355 100644 --- a/.github/workflows/publish-image.yml +++ b/.github/workflows/publish-image.yml @@ -4,8 +4,15 @@ on: workflow_dispatch: inputs: manualTag: - description: 'tag' + description: 'Manual Tag' required: true + manualWithLatestTag: + description: 'Manual With Latest Tag' + required: true + default: 'true' + options: + - true + - false release: types: [published] @@ -77,7 +84,7 @@ jobs: run: | DOCKER_IMAGE_TAG="zai7lou/bilibili_tool_pro:${{ steps.getRepoTag.outputs.repoTag }}" DOCKER_IMAGE_LATEST_TAG=",zai7lou/bilibili_tool_pro:latest" - if [ "${{ github.event.inputs.manualTag }}" ] ; then + if [ "${{ github.event.inputs.manualTag }}" ] $$ [ "${{ github.event.inputs.manualTag }}" == "false" ] ; then DOCKER_IMAGE_LATEST_TAG="" fi DOCKER_IMAGE_TAGS=$DOCKER_IMAGE_TAG$DOCKER_IMAGE_LATEST_TAG diff --git a/CHANGELOG.md b/CHANGELOG.md index 3044ec5f2..238aff6f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,3 +31,4 @@ - 【#47】青龙安装dotnet环境,支持arm架构服务器 ## 0.0.10 - 【#62】codeql-analysis.yml可以指定检查的文件类型 +- 【#61】publish-image.yml手动打镜像时支持指定是否打latest的tag From faf1614f8a3b501c17a441cd33587c78031a1569 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Fri, 1 Apr 2022 23:37:43 +0800 Subject: [PATCH 03/10] feat: [61] publish-image.yml support choosing whether be with latest tag --- .github/workflows/publish-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-image.yml b/.github/workflows/publish-image.yml index af995b355..a4fd76ef0 100644 --- a/.github/workflows/publish-image.yml +++ b/.github/workflows/publish-image.yml @@ -84,7 +84,7 @@ jobs: run: | DOCKER_IMAGE_TAG="zai7lou/bilibili_tool_pro:${{ steps.getRepoTag.outputs.repoTag }}" DOCKER_IMAGE_LATEST_TAG=",zai7lou/bilibili_tool_pro:latest" - if [ "${{ github.event.inputs.manualTag }}" ] $$ [ "${{ github.event.inputs.manualTag }}" == "false" ] ; then + if [ "${{ github.event.inputs.manualTag }}" ] && [ "${{ github.event.inputs.manualTag }}" == "false" ] ; then DOCKER_IMAGE_LATEST_TAG="" fi DOCKER_IMAGE_TAGS=$DOCKER_IMAGE_TAG$DOCKER_IMAGE_LATEST_TAG From b69bd07481c2ff2fcc4ed08d345455ac261b4e03 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Fri, 1 Apr 2022 23:43:03 +0800 Subject: [PATCH 04/10] feat: [61] publish-image.yml support choosing whether be with latest tag --- .github/workflows/publish-image.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish-image.yml b/.github/workflows/publish-image.yml index a4fd76ef0..035d082be 100644 --- a/.github/workflows/publish-image.yml +++ b/.github/workflows/publish-image.yml @@ -9,10 +9,8 @@ on: manualWithLatestTag: description: 'Manual With Latest Tag' required: true - default: 'true' - options: - - true - - false + default: true + type: boolean release: types: [published] @@ -84,7 +82,7 @@ jobs: run: | DOCKER_IMAGE_TAG="zai7lou/bilibili_tool_pro:${{ steps.getRepoTag.outputs.repoTag }}" DOCKER_IMAGE_LATEST_TAG=",zai7lou/bilibili_tool_pro:latest" - if [ "${{ github.event.inputs.manualTag }}" ] && [ "${{ github.event.inputs.manualTag }}" == "false" ] ; then + if [ "${{ github.event.inputs.manualTag }}" ] && [ "${{ github.event.inputs.manualWithLatestTag }}" == "false" ] ; then DOCKER_IMAGE_LATEST_TAG="" fi DOCKER_IMAGE_TAGS=$DOCKER_IMAGE_TAG$DOCKER_IMAGE_LATEST_TAG From 4c284039e45b2f6c8ed1113d9d283faae18757d6 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Sun, 3 Apr 2022 20:02:36 +0800 Subject: [PATCH 05/10] feat: [#32] add serilog client of work weixin app for notify --- CHANGELOG.md | 3 +- Ray.BiliBiliTool.sln | 9 +- common.props | 2 +- .../Ray.BiliBiliTool.Agent.csproj | 10 +- .../Ray.BiliBiliTool.Application.csproj | 6 +- .../Ray.BiliBiliTool.Config.csproj | 12 +-- .../Ray.BiliBiliTool.Console.csproj | 29 +++--- src/Ray.BiliBiliTool.Console/appsettings.json | 13 +++ .../Ray.BiliBiliTool.DomainService.csproj | 6 +- .../Ray.BiliBiliTool.Infrastructure.csproj | 6 +- ....Serilog.Sinks.WorkWeiXinAppBatched.csproj | 14 +++ .../WorkWeiXinAppApiClient.cs | 92 +++++++++++++++++++ .../WorkWeiXinAppBatchedSink.cs | 59 ++++++++++++ .../WorkWeiXinAppConfigurationExtensions.cs | 50 ++++++++++ .../WorkWeiXinAppTokenResponse.cs | 19 ++++ test/BiliAgentTest/BiliAgentTest.csproj | 4 +- test/ConfigTest/ConfigTest.csproj | 4 +- test/LogTest/LogTest.csproj | 4 +- test/LogTest/TestWorkWeiXinApp.cs | 42 +++++++++ 19 files changed, 341 insertions(+), 43 deletions(-) create mode 100644 src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj create mode 100644 src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppApiClient.cs create mode 100644 src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppBatchedSink.cs create mode 100644 src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppConfigurationExtensions.cs create mode 100644 src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppTokenResponse.cs create mode 100644 test/LogTest/TestWorkWeiXinApp.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index 238aff6f0..baa6d1f5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ - 【#27】更新README ## 0.0.9 - 【#47】青龙安装dotnet环境,支持arm架构服务器 -## 0.0.10 +## 0.1.0 - 【#62】codeql-analysis.yml可以指定检查的文件类型 - 【#61】publish-image.yml手动打镜像时支持指定是否打latest的tag +- 【#32】新增企业微信的应用推送,实现微信接受推送消息 diff --git a/Ray.BiliBiliTool.sln b/Ray.BiliBiliTool.sln index 41fd70ae3..9fdbba7aa 100644 --- a/Ray.BiliBiliTool.sln +++ b/Ray.BiliBiliTool.sln @@ -148,7 +148,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{75A9CC5C docker\build\buildImage_arm64.cmd = docker\build\buildImage_arm64.cmd EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.Serilog.Sinks.MicrosoftTeams", "src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeams\Ray.Serilog.Sinks.MicrosoftTeams.csproj", "{F249A822-EFD3-4F0A-9C10-95A96676D61A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.Serilog.Sinks.MicrosoftTeams", "src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeams\Ray.Serilog.Sinks.MicrosoftTeams.csproj", "{F249A822-EFD3-4F0A-9C10-95A96676D61A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.Serilog.Sinks.WorkWeiXinAppBatched", "src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.WorkWeiXinAppBatched\Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj", "{099C4E10-1114-495C-A664-63A15E77B31A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -232,6 +234,10 @@ Global {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Debug|Any CPU.Build.0 = Debug|Any CPU {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Release|Any CPU.ActiveCfg = Release|Any CPU {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Release|Any CPU.Build.0 = Release|Any CPU + {099C4E10-1114-495C-A664-63A15E77B31A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {099C4E10-1114-495C-A664-63A15E77B31A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {099C4E10-1114-495C-A664-63A15E77B31A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {099C4E10-1114-495C-A664-63A15E77B31A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -270,6 +276,7 @@ Global {F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF} {75A9CC5C-DF92-4D72-A14C-625AA902855B} = {A93210FD-27B6-40E4-B08D-391F96CA2754} {F249A822-EFD3-4F0A-9C10-95A96676D61A} = {4BAFC980-7A73-45C3-9460-8B8CCB87939B} + {099C4E10-1114-495C-A664-63A15E77B31A} = {4BAFC980-7A73-45C3-9460-8B8CCB87939B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {197319DA-1148-4A99-847C-8B270B6A29AB} diff --git a/common.props b/common.props index 3254ed9b6..eaec7b658 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ <Project> <PropertyGroup> <Authors>Ray</Authors> - <Version>0.0.10</Version> + <Version>0.1.0</Version> <NoWarn>$(NoWarn);CS1591;CS0436</NoWarn> </PropertyGroup> </Project> diff --git a/src/Ray.BiliBiliTool.Agent/Ray.BiliBiliTool.Agent.csproj b/src/Ray.BiliBiliTool.Agent/Ray.BiliBiliTool.Agent.csproj index 10d94607d..42789ea9c 100644 --- a/src/Ray.BiliBiliTool.Agent/Ray.BiliBiliTool.Agent.csproj +++ b/src/Ray.BiliBiliTool.Agent/Ray.BiliBiliTool.Agent.csproj @@ -5,11 +5,11 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.1" /> - <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" /> - <PackageReference Include="Scrutor" Version="3.3.0" /> - <PackageReference Include="WebApiClientCore" Version="2.0.1" /> + <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.3" /> + <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> + <PackageReference Include="Scrutor" Version="4.1.0" /> + <PackageReference Include="WebApiClientCore" Version="2.0.2" /> </ItemGroup> <ItemGroup> diff --git a/src/Ray.BiliBiliTool.Application/Ray.BiliBiliTool.Application.csproj b/src/Ray.BiliBiliTool.Application/Ray.BiliBiliTool.Application.csproj index 425876e4b..9de70e91c 100644 --- a/src/Ray.BiliBiliTool.Application/Ray.BiliBiliTool.Application.csproj +++ b/src/Ray.BiliBiliTool.Application/Ray.BiliBiliTool.Application.csproj @@ -5,9 +5,9 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="MethodBoundaryAspect.Fody" Version="2.0.139" /> - <PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" /> + <PackageReference Include="MethodBoundaryAspect.Fody" Version="2.0.145" /> + <PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> </ItemGroup> <ItemGroup> diff --git a/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj b/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj index 73297cbb2..ff4851aa8 100644 --- a/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj +++ b/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj @@ -5,12 +5,12 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0" /> + <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1" /> + <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> + <PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="6.0.0" /> </ItemGroup> <ItemGroup> diff --git a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj index 2a525d2db..dd571528c 100644 --- a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj +++ b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj @@ -47,22 +47,22 @@ </ItemGroup> <ItemGroup> - <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" /> - <PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="5.0.0" /> - <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.13" /> + <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" /> + <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" /> + <PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> + <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" /> + <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.15.0" /> <PackageReference Include="Serilog" Version="2.10.0" /> - <PackageReference Include="Serilog.Extensions.Hosting" Version="4.1.2" /> - <PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" /> - <PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" /> - <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> + <PackageReference Include="Serilog.Extensions.Hosting" Version="4.2.0" /> + <PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" /> + <PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" /> + <PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" /> <PackageReference Include="Serilog.Sinks.Debug" Version="2.0.0" /> - <PackageReference Include="Serilog.Sinks.File" Version="4.1.0" /> + <PackageReference Include="Serilog.Sinks.File" Version="5.0.0" /> <PackageReference Include="System.Collections" Version="4.3.0" /> </ItemGroup> @@ -81,6 +81,7 @@ <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.PushPlusBatched\Ray.Serilog.Sinks.PushPlusBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.ServerChanBatched\Ray.Serilog.Sinks.ServerChanBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.TelegramBatched\Ray.Serilog.Sinks.TelegramBatched.csproj" /> + <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.WorkWeiXinAppBatched\Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.WorkWeiXinBatched\Ray.Serilog.Sinks.WorkWeiXinBatched.csproj" /> </ItemGroup> diff --git a/src/Ray.BiliBiliTool.Console/appsettings.json b/src/Ray.BiliBiliTool.Console/appsettings.json index 149f00fd5..59e8f3825 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.json @@ -162,6 +162,19 @@ "webhook": "", //webhook完整地址 "restrictedToMinimumLevel": "Information" } + }, + //11.企业微信应用推送 + { + "Name": "WorkWeiXinAppBatched", + "Args": { + "corpId": "", + "agentId": "", + "secret": "", + "toUser": "@all", + "toParty": "", + "toTag": "", + "restrictedToMinimumLevel": "Information" + } } ], "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ] diff --git a/src/Ray.BiliBiliTool.DomainService/Ray.BiliBiliTool.DomainService.csproj b/src/Ray.BiliBiliTool.DomainService/Ray.BiliBiliTool.DomainService.csproj index efcd9fa06..675e9aafd 100644 --- a/src/Ray.BiliBiliTool.DomainService/Ray.BiliBiliTool.DomainService.csproj +++ b/src/Ray.BiliBiliTool.DomainService/Ray.BiliBiliTool.DomainService.csproj @@ -5,9 +5,9 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" /> - <PackageReference Include="Scrutor" Version="3.3.0" /> + <PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" /> + <PackageReference Include="Scrutor" Version="4.1.0" /> <PackageReference Include="Serilog" Version="2.10.0" /> </ItemGroup> diff --git a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj index 185359b4f..ea1bccbe6 100644 --- a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj +++ b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj @@ -5,9 +5,9 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0" /> - <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" /> + <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" /> + <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> </ItemGroup> </Project> \ No newline at end of file diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj new file mode 100644 index 000000000..23dca6dc7 --- /dev/null +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Ray.BiliBiliTool.Infrastructure\Ray.BiliBiliTool.Infrastructure.csproj" /> + <ProjectReference Include="..\Ray.Serilog.Sinks.Batched\Ray.Serilog.Sinks.Batched.csproj" /> + </ItemGroup> + +</Project> diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppApiClient.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppApiClient.cs new file mode 100644 index 000000000..b5df26b41 --- /dev/null +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppApiClient.cs @@ -0,0 +1,92 @@ +using System.Text; +using Ray.Serilog.Sinks.Batched; + +namespace Ray.Serilog.Sinks.WorkWeiXinAppBatched +{ + public class WorkWeiXinAppApiClient : PushService + { + // https://developer.work.weixin.qq.com/tutorial/application-message + // https://developer.work.weixin.qq.com/document/34479 + // https://github.com/JeffreySu/WeiXinMPSDK + + private readonly Uri _apiUrl; + private readonly HttpClient _httpClient = new HttpClient(); + private readonly string _corpId; + private readonly string _agentId; + private readonly string _secret; + + private readonly string _toUser; + private readonly string _toParty; + private readonly string _toTag; + + public WorkWeiXinAppApiClient( + string corpid, + string agentId, + string secret, + string toUser = "", + string toParty = "", + string toTag = "" + ) + { + + _corpId = corpid; + _agentId = agentId; + _secret = secret; + _toUser = toUser; + _toParty = toParty; + _toTag = toTag; + + // token + var token = GetAccessToken(corpid, secret); + _apiUrl = new Uri($"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}"); + } + + public override string ClientName => "WorkWeiXinApp"; + + protected override string NewLineStr => "\n"; + + public override HttpResponseMessage DoSend() + { + var json = new + { + touser = _toUser, + toparty = _toParty, + totag = _toTag, + agentid = _agentId, + msgtype = "text", + text = new + { + content = Msg + } + }.ToJson(); + + var content = new StringContent(json, Encoding.UTF8, "application/json"); + + var response = _httpClient.PostAsync(_apiUrl, content).GetAwaiter().GetResult(); + return response; + } + + private string GetAccessToken(string corpId, string secret) + { + var token = ""; + + try + { + var uri = new Uri($"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpId}&corpsecret={secret}"); + var response = _httpClient.GetAsync(uri).GetAwaiter().GetResult(); + var content = response.Content.ReadAsStringAsync() + .GetAwaiter().GetResult(); + + var re = content.ToObject<WorkWeiXinAppTokenResponse>(); + + if (re.errcode == 0) return re.access_token; + } + catch (Exception) + { + //ignore + } + + return token; + } + } +} diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppBatchedSink.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppBatchedSink.cs new file mode 100644 index 000000000..f837d4f2f --- /dev/null +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppBatchedSink.cs @@ -0,0 +1,59 @@ +using System; +using Ray.Serilog.Sinks.Batched; +using Serilog.Events; + +namespace Ray.Serilog.Sinks.WorkWeiXinAppBatched +{ + public class WorkWeiXinAppBatchedSink : BatchedSink + { + private readonly string _corpId; + private readonly string _agentId; + private readonly string _secret; + + private readonly string _toUser; + private readonly string _toParty; + private readonly string _toTag; + + public WorkWeiXinAppBatchedSink( + string corpId, + string agentId, + string secret, + string toUser, + string toParty, + string toTag, + Predicate<LogEvent> predicate, + bool sendBatchesAsOneMessages, + string outputTemplate, + IFormatProvider formatProvider, + LogEventLevel minimumLogEventLevel + ) + : base(predicate, sendBatchesAsOneMessages, outputTemplate, formatProvider, minimumLogEventLevel) + { + _corpId = corpId; + _agentId = agentId; + _secret = secret; + _toUser = toUser; + _toParty = toParty; + _toTag = toTag; + } + + public override void Emit(LogEvent logEvent) + { + if (_corpId.IsNullOrEmpty()||_secret.IsNullOrEmpty()||_agentId.IsNullOrEmpty()) return; + base.Emit(logEvent); + } + + protected override PushService PushService => new WorkWeiXinAppApiClient( + _corpId, + _agentId, + _secret, + _toUser, + _toParty, + _toTag); + + public override void Dispose() + { + //todo + } + } +} diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppConfigurationExtensions.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppConfigurationExtensions.cs new file mode 100644 index 000000000..f2566e14d --- /dev/null +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppConfigurationExtensions.cs @@ -0,0 +1,50 @@ +using System; +using Ray.Serilog.Sinks.Batched; +using Serilog; +using Serilog.Configuration; +using Serilog.Events; + +namespace Ray.Serilog.Sinks.WorkWeiXinAppBatched +{ + public static class WorkWeiXinAppConfigurationExtensions + { + public static LoggerConfiguration WorkWeiXinAppBatched( + this LoggerSinkConfiguration loggerSinkConfiguration, + string corpId, + string agentId, + string secret, + string toUser, + string toParty, + string toTag, + string containsTrigger = Constants.DefaultContainsTrigger, + bool sendBatchesAsOneMessages = true, + string outputTemplate = Constants.DefaultOutputTemplate, + IFormatProvider formatProvider = null, + LogEventLevel restrictedToMinimumLevel = LogEventLevel.Verbose + ) + { + if (loggerSinkConfiguration == null) + throw new ArgumentNullException(nameof(loggerSinkConfiguration)); + if (outputTemplate == null) + throw new ArgumentNullException(nameof(outputTemplate)); + + if (containsTrigger.IsNullOrEmpty()) containsTrigger = Constants.DefaultContainsTrigger; + Predicate<LogEvent> predicate = x => x.MessageTemplate.Text.Contains(containsTrigger); + + return loggerSinkConfiguration.Sink( + new WorkWeiXinAppBatchedSink( + corpId, + agentId, + secret, + toUser, + toParty, + toTag, + predicate, + sendBatchesAsOneMessages, + outputTemplate, + formatProvider, + restrictedToMinimumLevel), + restrictedToMinimumLevel); + } + } +} diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppTokenResponse.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppTokenResponse.cs new file mode 100644 index 000000000..382421e70 --- /dev/null +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/WorkWeiXinAppTokenResponse.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ray.Serilog.Sinks.WorkWeiXinAppBatched +{ + public class WorkWeiXinAppTokenResponse + { + public int errcode { get; set; } + + public string errmsg { get; set; } + + public string access_token { get; set; } + + public int expires_in { get; set; } + } +} diff --git a/test/BiliAgentTest/BiliAgentTest.csproj b/test/BiliAgentTest/BiliAgentTest.csproj index e0afedba2..0a8272606 100644 --- a/test/BiliAgentTest/BiliAgentTest.csproj +++ b/test/BiliAgentTest/BiliAgentTest.csproj @@ -8,13 +8,13 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> - <PackageReference Include="coverlet.collector" Version="3.1.0"> + <PackageReference Include="coverlet.collector" Version="3.1.2"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> diff --git a/test/ConfigTest/ConfigTest.csproj b/test/ConfigTest/ConfigTest.csproj index 9015e6ada..59cead1c9 100644 --- a/test/ConfigTest/ConfigTest.csproj +++ b/test/ConfigTest/ConfigTest.csproj @@ -6,13 +6,13 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> - <PackageReference Include="coverlet.collector" Version="3.0.3"> + <PackageReference Include="coverlet.collector" Version="3.1.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> diff --git a/test/LogTest/LogTest.csproj b/test/LogTest/LogTest.csproj index 97f27ee26..777d17bef 100644 --- a/test/LogTest/LogTest.csproj +++ b/test/LogTest/LogTest.csproj @@ -7,13 +7,13 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> - <PackageReference Include="coverlet.collector" Version="3.0.3"> + <PackageReference Include="coverlet.collector" Version="3.1.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> diff --git a/test/LogTest/TestWorkWeiXinApp.cs b/test/LogTest/TestWorkWeiXinApp.cs new file mode 100644 index 000000000..b78ab0426 --- /dev/null +++ b/test/LogTest/TestWorkWeiXinApp.cs @@ -0,0 +1,42 @@ +using System; +using System.Diagnostics; +using Ray.BiliBiliTool.Console; +using Ray.BiliBiliTool.Infrastructure; +using Ray.Serilog.Sinks.WorkWeiXinAppBatched; +using Xunit; + +namespace LogTest +{ + public class TestWorkWeiXinApp + { + private string _agentId; + private string _secret; + private string _corpId; + private string _toUser; + + public TestWorkWeiXinApp() + { + Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"); + Program.CreateHost(new string[] { }); + + _agentId = Global.ConfigurationRoot["Serilog:WriteTo:11:Args:agentId"]; + _secret = Global.ConfigurationRoot["Serilog:WriteTo:11:Args:secret"]; + _corpId = Global.ConfigurationRoot["Serilog:WriteTo:11:Args:corpId"]; + + _toUser = Global.ConfigurationRoot["Serilog:WriteTo:11:Args:toUser"]; + } + + [Fact] + public void Test() + { + var client = new WorkWeiXinAppApiClient(_corpId,_agentId, _secret, _toUser); + + var msg = LogConstants.Msg2; + + var result = client.PushMessage(msg); + Debug.WriteLine(result.Content.ReadAsStringAsync().Result); + + Assert.True(result.StatusCode == System.Net.HttpStatusCode.OK); + } + } +} From 56663c96561aa39cbea6e5d4836421a0c84c0ad9 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Sun, 3 Apr 2022 20:45:06 +0800 Subject: [PATCH 06/10] bugfix: fix serilog missing using error --- Dockerfile | 2 ++ Ray.BiliBiliTool.sln | 14 +++++++------- .../Ray.BiliBiliTool.Console.csproj | 2 +- src/Ray.BiliBiliTool.Console/appsettings.json | 4 +++- .../MicrosoftTeamsApiClient.cs | 6 ++---- .../MicrosoftTeamsBatchedSink.cs | 5 ++--- .../MicrosoftTeamsConfigurationExtensions.cs | 5 ++--- ...Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj} | 0 test/LogTest/LogTest.csproj | 2 +- test/LogTest/TestMicrosoftTeams.cs | 2 +- 10 files changed, 21 insertions(+), 21 deletions(-) rename src/Ray.Serilog.Sinks/{Ray.Serilog.Sinks.MicrosoftTeams => Ray.Serilog.Sinks.MicrosoftTeamsBatched}/MicrosoftTeamsApiClient.cs (90%) rename src/Ray.Serilog.Sinks/{Ray.Serilog.Sinks.MicrosoftTeams => Ray.Serilog.Sinks.MicrosoftTeamsBatched}/MicrosoftTeamsBatchedSink.cs (91%) rename src/Ray.Serilog.Sinks/{Ray.Serilog.Sinks.MicrosoftTeams => Ray.Serilog.Sinks.MicrosoftTeamsBatched}/MicrosoftTeamsConfigurationExtensions.cs (94%) rename src/Ray.Serilog.Sinks/{Ray.Serilog.Sinks.MicrosoftTeams/Ray.Serilog.Sinks.MicrosoftTeams.csproj => Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj} (100%) diff --git a/Dockerfile b/Dockerfile index 2bd2d2c71..11daee9d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,8 @@ COPY ["src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.OtherApiBatched/Ray.Serilog.Sinks COPY ["src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.DingTalkBatched/Ray.Serilog.Sinks.DingTalkBatched.csproj", "src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.DingTalkBatched/"] COPY ["src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.PushPlusBatched/Ray.Serilog.Sinks.PushPlusBatched.csproj", "src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.PushPlusBatched/"] COPY ["src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.ServerChanBatched/Ray.Serilog.Sinks.ServerChanBatched.csproj", "src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.ServerChanBatched/"] +COPY ["src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj", "src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/"] +COPY ["src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj", "src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/"] RUN dotnet restore "src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj" COPY . . WORKDIR "/code/src/Ray.BiliBiliTool.Console" diff --git a/Ray.BiliBiliTool.sln b/Ray.BiliBiliTool.sln index 9fdbba7aa..203bb3b25 100644 --- a/Ray.BiliBiliTool.sln +++ b/Ray.BiliBiliTool.sln @@ -148,10 +148,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{75A9CC5C docker\build\buildImage_arm64.cmd = docker\build\buildImage_arm64.cmd EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.Serilog.Sinks.MicrosoftTeams", "src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeams\Ray.Serilog.Sinks.MicrosoftTeams.csproj", "{F249A822-EFD3-4F0A-9C10-95A96676D61A}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.Serilog.Sinks.WorkWeiXinAppBatched", "src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.WorkWeiXinAppBatched\Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj", "{099C4E10-1114-495C-A664-63A15E77B31A}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.Serilog.Sinks.MicrosoftTeamsBatched", "src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeamsBatched\Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj", "{FB9A43DE-00F0-42C4-BF92-AF61D752CCA2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -230,14 +230,14 @@ Global {F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Debug|Any CPU.Build.0 = Debug|Any CPU {F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Release|Any CPU.Build.0 = Release|Any CPU - {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F249A822-EFD3-4F0A-9C10-95A96676D61A}.Release|Any CPU.Build.0 = Release|Any CPU {099C4E10-1114-495C-A664-63A15E77B31A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {099C4E10-1114-495C-A664-63A15E77B31A}.Debug|Any CPU.Build.0 = Debug|Any CPU {099C4E10-1114-495C-A664-63A15E77B31A}.Release|Any CPU.ActiveCfg = Release|Any CPU {099C4E10-1114-495C-A664-63A15E77B31A}.Release|Any CPU.Build.0 = Release|Any CPU + {FB9A43DE-00F0-42C4-BF92-AF61D752CCA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB9A43DE-00F0-42C4-BF92-AF61D752CCA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB9A43DE-00F0-42C4-BF92-AF61D752CCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB9A43DE-00F0-42C4-BF92-AF61D752CCA2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -275,8 +275,8 @@ Global {830361B7-BCC1-4853-879A-761B0FD86826} = {73DD457B-E06E-45ED-A6BA-7E3C02F8BDF1} {F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF} {75A9CC5C-DF92-4D72-A14C-625AA902855B} = {A93210FD-27B6-40E4-B08D-391F96CA2754} - {F249A822-EFD3-4F0A-9C10-95A96676D61A} = {4BAFC980-7A73-45C3-9460-8B8CCB87939B} {099C4E10-1114-495C-A664-63A15E77B31A} = {4BAFC980-7A73-45C3-9460-8B8CCB87939B} + {FB9A43DE-00F0-42C4-BF92-AF61D752CCA2} = {4BAFC980-7A73-45C3-9460-8B8CCB87939B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {197319DA-1148-4A99-847C-8B270B6A29AB} diff --git a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj index dd571528c..dae6aa66d 100644 --- a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj +++ b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj @@ -76,7 +76,7 @@ <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.Batched\Ray.Serilog.Sinks.Batched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.CoolPushBatched\Ray.Serilog.Sinks.CoolPushBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.DingTalkBatched\Ray.Serilog.Sinks.DingTalkBatched.csproj" /> - <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeams\Ray.Serilog.Sinks.MicrosoftTeams.csproj" /> + <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeamsBatched\Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.OtherApiBatched\Ray.Serilog.Sinks.OtherApiBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.PushPlusBatched\Ray.Serilog.Sinks.PushPlusBatched.csproj" /> <ProjectReference Include="..\Ray.Serilog.Sinks\Ray.Serilog.Sinks.ServerChanBatched\Ray.Serilog.Sinks.ServerChanBatched.csproj" /> diff --git a/src/Ray.BiliBiliTool.Console/appsettings.json b/src/Ray.BiliBiliTool.Console/appsettings.json index 59e8f3825..57ee4c803 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.json @@ -61,7 +61,9 @@ "Ray.Serilog.Sinks.ServerChanBatched", "Ray.Serilog.Sinks.CoolPushBatched", "Ray.Serilog.Sinks.OtherApiBatched", - "Ray.Serilog.Sinks.PushPlusBatched" + "Ray.Serilog.Sinks.PushPlusBatched", + "Ray.Serilog.Sinks.MicrosoftTeamsBatched", + "Ray.Serilog.Sinks.WorkWeiXinAppBatched" ], "MinimumLevel": { "Default": "Debug", diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsApiClient.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsApiClient.cs similarity index 90% rename from src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsApiClient.cs rename to src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsApiClient.cs index 1865379c0..fec744259 100644 --- a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsApiClient.cs +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsApiClient.cs @@ -1,9 +1,7 @@ -using System; -using System.Net.Http; -using System.Text; +using System.Text; using Ray.Serilog.Sinks.Batched; -namespace Ray.Serilog.Sinks.MicrosoftTeams +namespace Ray.Serilog.Sinks.MicrosoftTeamsBatched { public class MicrosoftTeamsApiClient : PushService { diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsBatchedSink.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsBatchedSink.cs similarity index 91% rename from src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsBatchedSink.cs rename to src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsBatchedSink.cs index 1d7d00e67..f71ef6b7b 100644 --- a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsBatchedSink.cs +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsBatchedSink.cs @@ -1,8 +1,7 @@ -using System; -using Ray.Serilog.Sinks.Batched; +using Ray.Serilog.Sinks.Batched; using Serilog.Events; -namespace Ray.Serilog.Sinks.MicrosoftTeams +namespace Ray.Serilog.Sinks.MicrosoftTeamsBatched { public class MicrosoftTeamsBatchedSink : BatchedSink { diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsConfigurationExtensions.cs b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsConfigurationExtensions.cs similarity index 94% rename from src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsConfigurationExtensions.cs rename to src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsConfigurationExtensions.cs index e85fd6fcf..3eb8dde5a 100644 --- a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/MicrosoftTeamsConfigurationExtensions.cs +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/MicrosoftTeamsConfigurationExtensions.cs @@ -1,10 +1,9 @@ -using System; -using Ray.Serilog.Sinks.Batched; +using Ray.Serilog.Sinks.Batched; using Serilog; using Serilog.Configuration; using Serilog.Events; -namespace Ray.Serilog.Sinks.MicrosoftTeams +namespace Ray.Serilog.Sinks.MicrosoftTeamsBatched { public static class MicrosoftTeamsConfigurationExtensions { diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/Ray.Serilog.Sinks.MicrosoftTeams.csproj b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj similarity index 100% rename from src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeams/Ray.Serilog.Sinks.MicrosoftTeams.csproj rename to src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj diff --git a/test/LogTest/LogTest.csproj b/test/LogTest/LogTest.csproj index 777d17bef..6c443a99b 100644 --- a/test/LogTest/LogTest.csproj +++ b/test/LogTest/LogTest.csproj @@ -21,7 +21,7 @@ <ItemGroup> <ProjectReference Include="..\..\src\Ray.BiliBiliTool.Console\Ray.BiliBiliTool.Console.csproj" /> - <ProjectReference Include="..\..\src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeams\Ray.Serilog.Sinks.MicrosoftTeams.csproj" /> + <ProjectReference Include="..\..\src\Ray.Serilog.Sinks\Ray.Serilog.Sinks.MicrosoftTeamsBatched\Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj" /> </ItemGroup> </Project> diff --git a/test/LogTest/TestMicrosoftTeams.cs b/test/LogTest/TestMicrosoftTeams.cs index e5e2d131c..491098d7b 100644 --- a/test/LogTest/TestMicrosoftTeams.cs +++ b/test/LogTest/TestMicrosoftTeams.cs @@ -6,7 +6,7 @@ using Ray.BiliBiliTool.Console; using Ray.BiliBiliTool.Infrastructure; using Ray.Serilog.Sinks.CoolPushBatched; -using Ray.Serilog.Sinks.MicrosoftTeams; +using Ray.Serilog.Sinks.MicrosoftTeamsBatched; using Ray.Serilog.Sinks.PushPlusBatched; using Ray.Serilog.Sinks.ServerChanBatched; using Xunit; From c90d1a3bb5c88cdb9184b711bec696b8b10f71bc Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Sun, 3 Apr 2022 21:00:16 +0800 Subject: [PATCH 07/10] feat: [#32] update docs about work weixin app notify --- docs/configuration.md | 49 +++++++++++++++++++ src/Ray.BiliBiliTool.Console/appsettings.json | 6 +-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index e1be7ebe6..09e4559de 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -61,6 +61,10 @@ - [3.6.8.4. PushPlus的Webhook](#3684-pushplus的webhook) - [3.6.9. Microsoft Teams](#369-microsoft-teams) - [3.6.9.1. Microsoft Teams的Webhook](#3691-microsoft-teams的webhook) + - [3.6.10. 企业微信应用推送](#3610-企业微信应用推送) + - [3.6.10.1. 企业微信应用推送的corpId](#36101-企业微信应用推送的corpid) + - [3.6.10.2. 企业微信应用推送的agentId](#36102-企业微信应用推送的agentid) + - [3.6.10.3. 企业微信应用推送的secret](#36103-企业微信应用推送的secret) - [3.7. 日志相关](#37-日志相关) - [3.7.1. Console日志输出等级](#371-console日志输出等级) - [3.7.2. Console日志输出样式](#372-console日志输出样式) @@ -686,6 +690,51 @@ webhook的完整地址,在Teams的Channel中获取,详细获取方式请参 | 命令行示范 | | | GitHub Secrets | | +<a id="markdown-3610-企业微信应用推送" name="3610-企业微信应用推送"></a> +#### 3.6.10. 企业微信应用推送 + +官网: https://developer.work.weixin.qq.com/tutorial/application-message + +当`corpId`、`agentId`、`secret`均不为空时,自动开启推送,否则关闭。 + +`toUser`、`toParty`、`toTag`3个配置非必填,但不可同时为空,默认`toUser`为`@all`,向所有用户推送。 + +<a id="markdown-36101-企业微信应用推送的corpid" name="36101-企业微信应用推送的corpid"></a> +##### 3.6.10.1. 企业微信应用推送的corpId + +| TITLE | CONTENT | +| ---------- | -------------- | +| 配置Key | `Serilog:WriteTo:11:Args:corpId` | +| 值域 | 一串字符串 | +| 默认值 | 空 | +| 环境变量 | `Serilog__WriteTo__11__Args__corpId` | +| 命令行示范 | | +| GitHub Secrets | | + +<a id="markdown-36102-企业微信应用推送的agentid" name="36102-企业微信应用推送的agentid"></a> +##### 3.6.10.2. 企业微信应用推送的agentId + +| TITLE | CONTENT | +| ---------- | -------------- | +| 配置Key | `Serilog:WriteTo:11:Args:agentId` | +| 值域 | 一串字符串 | +| 默认值 | 空 | +| 环境变量 | `Serilog__WriteTo__11__Args__agentId` | +| 命令行示范 | | +| GitHub Secrets | | + +<a id="markdown-36103-企业微信应用推送的secret" name="36103-企业微信应用推送的secret"></a> +##### 3.6.10.3. 企业微信应用推送的secret + +| TITLE | CONTENT | +| ---------- | -------------- | +| 配置Key | `Serilog:WriteTo:11:Args:secret` | +| 值域 | 一串字符串 | +| 默认值 | 空 | +| 环境变量 | `Serilog__WriteTo__11__Args__secret` | +| 命令行示范 | | +| GitHub Secrets | | + <a id="markdown-37-日志相关" name="37-日志相关"></a> ### 3.7. 日志相关 diff --git a/src/Ray.BiliBiliTool.Console/appsettings.json b/src/Ray.BiliBiliTool.Console/appsettings.json index 57ee4c803..e2c3bda2e 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.json @@ -169,9 +169,9 @@ { "Name": "WorkWeiXinAppBatched", "Args": { - "corpId": "", - "agentId": "", - "secret": "", + "corpId": "", //必填 + "agentId": "", //必填 + "secret": "", //必填 "toUser": "@all", "toParty": "", "toTag": "", From f4236f96f7e7c63bd932c996b609a2c2c2e64076 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Sun, 3 Apr 2022 21:18:46 +0800 Subject: [PATCH 08/10] feat: update some log formate --- CHANGELOG.md | 1 + src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs | 4 ++-- src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baa6d1f5f..b813b341e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,3 +33,4 @@ - 【#62】codeql-analysis.yml可以指定检查的文件类型 - 【#61】publish-image.yml手动打镜像时支持指定是否打latest的tag - 【#32】新增企业微信的应用推送,实现微信接受推送消息 +- 优化日志格式 diff --git a/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs b/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs index 1b46d75af..bd3dab1da 100644 --- a/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs +++ b/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs @@ -60,7 +60,7 @@ public Task StartAsync(CancellationToken cancellationToken) for (int i = 0; i < _cookieStrFactory.Count; i++) { _cookieStrFactory.CurrentNum = i + 1; - _logger.LogInformation("账号 {num} :" + Environment.NewLine, _cookieStrFactory.CurrentNum); + _logger.LogInformation("========= 账号 {num} =========" + Environment.NewLine, _cookieStrFactory.CurrentNum); try { @@ -155,7 +155,7 @@ private void DoTasks(string[] tasks) private void LogAppInfo() { _logger.LogInformation( - "{newLine}---------------------------------------{newLine} RayBiliBiliToolPro-v{version} in {env} env.{newLine}开源 by {url}", + "{newLine}========================{newLine} v{version} in {env} env.{newLine}开源 by {url}", Environment.NewLine + Environment.NewLine, Environment.NewLine + Environment.NewLine, typeof(Program).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion, diff --git a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs index 05ecc6e2c..6f34ee5ce 100644 --- a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs +++ b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs @@ -72,7 +72,8 @@ public UserInfo LoginByCookie() } else { - _logger.LogInformation("【当前经验】{0} (您已是 Lv6 的大佬了,无敌是多么寂寞~)", useInfo.Level_info.Current_exp); + _logger.LogInformation("【当前经验】{0}", useInfo.Level_info.Current_exp); + _logger.LogInformation("您已是 Lv6 的大佬了,无敌是多么寂寞~"); } return useInfo; From f008cb56c33807039459485689364f8c3a83da93 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Sun, 3 Apr 2022 21:21:50 +0800 Subject: [PATCH 09/10] chore: update docs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0dcd8a20d..a79e1e0af 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,7 @@ Ray.BiliBiliTool.Console  -目前默认支持**PushPlus推送、企业微信推送、钉钉推送、Telegram推送、Server酱推送和酷推QQ推送**(以上顺序即为个人推荐的排序),如果需要推送到其他端,也可以配置为任意的可以接受消息的Api地址,关于如何配置推送请详见下面的**个性化自定义配置**章节。 +目前默认支持**PushPlus推送、企业微信应用推送、企业微信推送、钉钉推送、Microsoft Teams推送、Telegram推送、Server酱推送和酷推QQ推送**(以上顺序即为个人推荐的排序),如果需要推送到其他端,也可以配置为任意的可以接受消息的Api地址,关于如何配置推送请详见下面的**个性化自定义配置**章节。 ## 2. 功能任务说明 这里的**任务**是指一组功能的集合,是工具每次运行的最小单位。工具启动后会根据我们输入的任务编码,运行相应的任务,如: From bc89ec8a70dc59329edc61e52baf28f1399e12a4 Mon Sep 17 00:00:00 2001 From: Ray <zai7lou@outlook.com> Date: Sun, 3 Apr 2022 21:34:12 +0800 Subject: [PATCH 10/10] chore: fix nullable problem --- src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs | 2 +- .../Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj | 1 - .../Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs b/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs index bd3dab1da..0ae6740a6 100644 --- a/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs +++ b/src/Ray.BiliBiliTool.Console/BiliBiliToolHostedService.cs @@ -161,7 +161,7 @@ private void LogAppInfo() typeof(Program).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion, Global.HostingEnvironment.EnvironmentName, Environment.NewLine, - Constants.SourceCodeUrl + Constants.SourceCodeUrl + Environment.NewLine ); //_logger.LogInformation("【当前IP】{ip} ", IpHelper.GetIp()); } diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj index 55eb04647..8c31e019d 100644 --- a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.MicrosoftTeamsBatched/Ray.Serilog.Sinks.MicrosoftTeamsBatched.csproj @@ -3,7 +3,6 @@ <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> - <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj index 23dca6dc7..03f0eaef1 100644 --- a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj +++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.WorkWeiXinAppBatched/Ray.Serilog.Sinks.WorkWeiXinAppBatched.csproj @@ -3,7 +3,6 @@ <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> - <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup>