Browse Source

chore: update abp framework to 9.2.1

- update `common.props`
- update `Directory.Packages.props`
- Use `MyCSharp.HttpUserAgentParser` to replace `DeviceDetector.NET` for better performance
pull/1262/head
colin 9 months ago
parent
commit
c3de2044a1
  1. 6
      Directory.Packages.props
  2. 6
      aspnet-core/framework/common/LINGYUN.Abp.AspNetCore.HttpOverrides/LINGYUN/Abp/AspNetCore/WebClientInfo/RequestForwardedHeaderWebClientInfoProvider.cs
  3. 58
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.Session.AspNetCore/LINGYUN/Abp/Identity/Session/AspNetCore/HttpContextDeviceInfoProvider.cs
  4. 4
      common.props
  5. 2
      gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.OpenApi.Gateway/Dockerfile
  6. 10
      gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.OpenApi.Gateway/Program.cs

6
Directory.Packages.props

@ -3,8 +3,8 @@
<DotNetCoreCAPPackageVersion>8.3.5</DotNetCoreCAPPackageVersion> <DotNetCoreCAPPackageVersion>8.3.5</DotNetCoreCAPPackageVersion>
<ElsaPackageVersion>2.15.2</ElsaPackageVersion> <ElsaPackageVersion>2.15.2</ElsaPackageVersion>
<ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion> <ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion>
<VoloAbpPackageVersion>9.2.0</VoloAbpPackageVersion> <VoloAbpPackageVersion>9.2.1</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>9.2.0</LINGYUNAbpPackageVersion> <LINGYUNAbpPackageVersion>9.2.1</LINGYUNAbpPackageVersion>
<MicrosoftExtensionsPackageVersion>9.0.4</MicrosoftExtensionsPackageVersion> <MicrosoftExtensionsPackageVersion>9.0.4</MicrosoftExtensionsPackageVersion>
<MicrosoftAspNetCorePackageVersion>9.0.4</MicrosoftAspNetCorePackageVersion> <MicrosoftAspNetCorePackageVersion>9.0.4</MicrosoftAspNetCorePackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>9.0.4</MicrosoftEntityFrameworkCorePackageVersion> <MicrosoftEntityFrameworkCorePackageVersion>9.0.4</MicrosoftEntityFrameworkCorePackageVersion>
@ -12,7 +12,7 @@
</PropertyGroup> </PropertyGroup>
<!-- Abp Framework --> <!-- Abp Framework -->
<ItemGroup> <ItemGroup>
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="4.2.0" /> <PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="4.2.1" />
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" /> <PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" /> <PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> <PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" />

6
aspnet-core/framework/common/LINGYUN.Abp.AspNetCore.HttpOverrides/LINGYUN/Abp/AspNetCore/WebClientInfo/RequestForwardedHeaderWebClientInfoProvider.cs

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Primitives;
using MyCSharp.HttpUserAgentParser.Providers;
using System; using System;
using System.Linq; using System.Linq;
using Volo.Abp.AspNetCore.WebClientInfo; using Volo.Abp.AspNetCore.WebClientInfo;
@ -16,8 +17,9 @@ public class RequestForwardedHeaderWebClientInfoProvider : HttpContextWebClientI
public RequestForwardedHeaderWebClientInfoProvider( public RequestForwardedHeaderWebClientInfoProvider(
ILogger<HttpContextWebClientInfoProvider> logger, ILogger<HttpContextWebClientInfoProvider> logger,
IOptions<ForwardedHeadersOptions> options, IOptions<ForwardedHeadersOptions> options,
IHttpContextAccessor httpContextAccessor) IHttpContextAccessor httpContextAccessor,
: base(logger, httpContextAccessor) IHttpUserAgentParserProvider httpUserAgentParser)
: base(logger, httpContextAccessor, httpUserAgentParser)
{ {
Options = options.Value; Options = options.Value;
} }

58
aspnet-core/modules/identity/LINGYUN.Abp.Identity.Session.AspNetCore/LINGYUN/Abp/Identity/Session/AspNetCore/HttpContextDeviceInfoProvider.cs

@ -1,6 +1,7 @@
using DeviceDetectorNET; using LINGYUN.Abp.IP.Location;
using LINGYUN.Abp.IP.Location;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using MyCSharp.HttpUserAgentParser;
using MyCSharp.HttpUserAgentParser.Providers;
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.WebClientInfo; using Volo.Abp.AspNetCore.WebClientInfo;
@ -11,15 +12,18 @@ public class HttpContextDeviceInfoProvider : IDeviceInfoProvider, ITransientDepe
{ {
protected IIPLocationResolver IPLocationResolver { get; } protected IIPLocationResolver IPLocationResolver { get; }
protected IWebClientInfoProvider WebClientInfoProvider { get; } protected IWebClientInfoProvider WebClientInfoProvider { get; }
protected IHttpUserAgentParserProvider HttpUserAgentParser { get; }
protected AbpIdentitySessionAspNetCoreOptions Options { get; } protected AbpIdentitySessionAspNetCoreOptions Options { get; }
public HttpContextDeviceInfoProvider( public HttpContextDeviceInfoProvider(
IIPLocationResolver iPLocationResolver, IIPLocationResolver iPLocationResolver,
IWebClientInfoProvider webClientInfoProvider, IWebClientInfoProvider webClientInfoProvider,
IHttpUserAgentParserProvider httpUserAgentParserProvider,
IOptions<AbpIdentitySessionAspNetCoreOptions> options) IOptions<AbpIdentitySessionAspNetCoreOptions> options)
{ {
IPLocationResolver = iPLocationResolver; IPLocationResolver = iPLocationResolver;
WebClientInfoProvider = webClientInfoProvider; WebClientInfoProvider = webClientInfoProvider;
HttpUserAgentParser = httpUserAgentParserProvider;
Options = options.Value; Options = options.Value;
} }
@ -27,7 +31,7 @@ public class HttpContextDeviceInfoProvider : IDeviceInfoProvider, ITransientDepe
public async virtual Task<DeviceInfo> GetDeviceInfoAsync() public async virtual Task<DeviceInfo> GetDeviceInfoAsync()
{ {
var deviceInfo = BrowserDeviceInfo.Parse(WebClientInfoProvider.BrowserInfo); var deviceInfo = BrowserDeviceInfo.Parse(HttpUserAgentParser, WebClientInfoProvider.BrowserInfo);
var ipAddress = WebClientInfoProvider.ClientIpAddress; var ipAddress = WebClientInfoProvider.ClientIpAddress;
var ipRegion = ""; var ipRegion = "";
if (!ipAddress.IsNullOrWhiteSpace()) if (!ipAddress.IsNullOrWhiteSpace())
@ -66,44 +70,30 @@ public class HttpContextDeviceInfoProvider : IDeviceInfoProvider, ITransientDepe
Description = description; Description = description;
} }
public static BrowserDeviceInfo Parse(string browserInfo) public static BrowserDeviceInfo Parse(IHttpUserAgentParserProvider httpUserAgentParserProvider, string browserInfo)
{ {
string device = null; string device = null;
string deviceInfo = null; string deviceInfo = null;
if (!browserInfo.IsNullOrWhiteSpace()) if (!browserInfo.IsNullOrWhiteSpace())
{ {
var deviceDetector = new DeviceDetector(browserInfo); var httpUserAgentInformation = httpUserAgentParserProvider.Parse(browserInfo);
deviceDetector.Parse(); if (!httpUserAgentInformation.MobileDeviceType.IsNullOrWhiteSpace())
if (deviceDetector.IsParsed())
{ {
var osInfo = deviceDetector.GetOs(); device = httpUserAgentInformation.MobileDeviceType;
if (deviceDetector.IsMobile()) }
{ else if (!httpUserAgentInformation.Name.IsNullOrWhiteSpace())
// IdentitySessionDevices.Mobile {
device = osInfo.Success ? osInfo.Match.Name : "Mobile"; device = "Web";
}
else if (deviceDetector.IsBrowser())
{
// IdentitySessionDevices.Web
device = "Web";
}
else if (deviceDetector.IsDesktop())
{
// TODO: PC
device = "Desktop";
}
if (osInfo.Success)
{
deviceInfo = osInfo.Match.Name + " " + osInfo.Match.Version;
}
var clientInfo = deviceDetector.GetClient();
if (clientInfo.Success)
{
deviceInfo = deviceInfo.IsNullOrWhiteSpace() ? clientInfo.Match.Name : deviceInfo + " " + clientInfo.Match.Name;
}
} }
else
{
device = "OAuth";
}
deviceInfo = httpUserAgentInformation.Type switch
{
HttpUserAgentType.Browser or HttpUserAgentType.Robot => (httpUserAgentInformation.Platform.HasValue ? httpUserAgentInformation.Platform.Value.Name + " " : string.Empty) + httpUserAgentInformation.Name,
_ => httpUserAgentInformation.UserAgent,
};
} }
return new BrowserDeviceInfo(device, deviceInfo); return new BrowserDeviceInfo(device, deviceInfo);
} }

4
common.props

@ -1,12 +1,12 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>9.2.0</Version> <Version>9.2.1</Version>
<Authors>colin</Authors> <Authors>colin</Authors>
<NoWarn>$(NoWarn);CS1591;CS0436;CS8618;NU1803</NoWarn> <NoWarn>$(NoWarn);CS1591;CS0436;CS8618;NU1803</NoWarn>
<PackageProjectUrl>https://github.com/colinin/abp-next-admin</PackageProjectUrl> <PackageProjectUrl>https://github.com/colinin/abp-next-admin</PackageProjectUrl>
<PackageOutputPath>$(SolutionDir)LocalNuget</PackageOutputPath> <PackageOutputPath>$(SolutionDir)LocalNuget</PackageOutputPath>
<PackageVersion>9.2.0</PackageVersion> <PackageVersion>9.2.1</PackageVersion>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/colinin/abp-next-admin</RepositoryUrl> <RepositoryUrl>https://github.com/colinin/abp-next-admin</RepositoryUrl>

2
gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.OpenApi.Gateway/Dockerfile

@ -1,4 +1,4 @@
FROM mcr.microsoft.com/dotnet/aspnet:8.0 FROM mcr.microsoft.com/dotnet/aspnet:9.0
LABEL maintainer="colin.in@foxmail.com" LABEL maintainer="colin.in@foxmail.com"
WORKDIR /app WORKDIR /app

10
gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.OpenApi.Gateway/Program.cs

@ -7,11 +7,13 @@
.AddYarpJson() .AddYarpJson()
.ConfigureAppConfiguration((context, config) => .ConfigureAppConfiguration((context, config) =>
{ {
var configuration = config.Build(); var agileConfig = context.Configuration.GetSection("AgileConfig");//IsEnabled
var agileConfigEnabled = configuration["AgileConfig:IsEnabled"]; if (agileConfig.Exists())
if (agileConfigEnabled.IsNullOrEmpty() || bool.Parse(agileConfigEnabled))
{ {
config.AddAgileConfig(new AgileConfig.Client.ConfigClient(configuration)); if (agileConfig.GetValue("IsEnabled", false))
{
config.AddAgileConfig(new AgileConfig.Client.ConfigClient(context.Configuration));
}
} }
}) })
.UseSerilog((context, provider, config) => .UseSerilog((context, provider, config) =>

Loading…
Cancel
Save