before server asp convertion

This commit is contained in:
kkb 2024-01-10 16:49:56 +01:00
parent ce99053a10
commit a4ed1a5956
82 changed files with 3802 additions and 444 deletions

View file

@ -0,0 +1,13 @@
using Microsoft.Extensions.Configuration;
namespace Insight.Domain.Extensions;
public static class ConfigurationExtensions
{
public static IConfigurationBuilder Defaults(this IConfigurationBuilder configuration)
{
configuration.Sources.Clear();
configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
return configuration.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true);
}
}

View file

@ -0,0 +1,31 @@
using System.Diagnostics;
using System.Runtime.Versioning;
namespace Insight.Domain.Extensions;
public static class Linux
{
[SupportedOSPlatform("linux")]
public static string Bash(this string cmd)
{
var escaped = cmd.Replace("\"", "\\\"");
using var proc = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = "/bin/bash",
Arguments = $"-c \"{escaped}\"",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
}
};
proc.Start();
var result = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
return result;
}
}

View file

@ -17,9 +17,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="8.0.0" />
<PackageReference Include="Vaitr.Bus" Version="2023.12.15.1" />
<PackageReference Include="Vaitr.Network" Version="2023.12.16" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Vaitr.Network" Version="2024.1.8" />
</ItemGroup>
</Project>

View file

@ -1,6 +1,4 @@
using AspNetCore.Identity.MongoDbCore.Extensions;
using AspNetCore.Identity.MongoDbCore.Infrastructure;
using Insight.Infrastructure.Entities;
using Insight.Infrastructure.Entities;
using Insight.Infrastructure.Services;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
@ -21,10 +19,10 @@ public static partial class ServiceExtensions
public static IServiceCollection AddTokenServices(this IServiceCollection services, IConfiguration configuration)
{
var options = new Models.TokenOptions(
key: configuration.GetValue<string?>(Appsettings.JwtKey) ?? throw new Exception($"{Appsettings.JwtKey} value not set (appsettings)"),
expires: configuration.GetValue<int?>(Appsettings.JwtExp) ?? throw new Exception($"{Appsettings.JwtExp} value not set (appsettings)"),
audience: configuration.GetValue<Uri?>(Appsettings.JwtAudience) ?? throw new Exception($"{Appsettings.JwtAudience} value not set (appsettings)"),
issuer: configuration.GetValue<Uri?>(Appsettings.JwtIssuer) ?? throw new Exception($"{Appsettings.JwtIssuer} value not set (appsettings)"));
key: configuration.GetValue<string?>(Appsettings.Jwt.Key) ?? throw new Exception($"{Appsettings.Jwt.Key} value not set (appsettings)"),
expires: configuration.GetValue<int?>(Appsettings.Jwt.Exp) ?? throw new Exception($"{Appsettings.Jwt.Exp} value not set (appsettings)"),
audience: configuration.GetValue<Uri?>(Appsettings.Jwt.Audience) ?? throw new Exception($"{Appsettings.Jwt.Audience} value not set (appsettings)"),
issuer: configuration.GetValue<Uri?>(Appsettings.Jwt.Issuer) ?? throw new Exception($"{Appsettings.Jwt.Issuer} value not set (appsettings)"));
services.AddSingleton(options);
services.AddTransient<TokenService>();
@ -56,7 +54,7 @@ public static partial class ServiceExtensions
public static IServiceCollection AddIdentityServices(this IServiceCollection services, IConfiguration configuration)
{
var connectionString = configuration.GetValue<string?>(Appsettings.Database) ?? throw new Exception($"{Appsettings.Database} value not set (appsettings)");
var connectionString = configuration.GetValue<string?>(Appsettings.Mongo.ConnectionString) ?? throw new Exception($"{Appsettings.Mongo.ConnectionString} value not set (appsettings)");
services.AddIdentity<InsightUser, InsightRole>(options =>
{
@ -146,14 +144,14 @@ public static partial class ServiceExtensions
options.TokenValidationParameters.ValidateActor = false;
options.TokenValidationParameters.ValidAudience = configuration.GetValue<string?>(Appsettings.JwtAudience) ?? throw new Exception($"{Appsettings.JwtAudience} value not set (appsettings)");
options.TokenValidationParameters.ValidAudience = configuration.GetValue<string?>(Appsettings.Jwt.Audience) ?? throw new Exception($"{Appsettings.Jwt.Audience} value not set (appsettings)");
options.TokenValidationParameters.ValidateAudience = true;
options.TokenValidationParameters.ValidIssuer = configuration.GetValue<string?>(Appsettings.JwtIssuer) ?? throw new Exception($"{Appsettings.JwtIssuer} value not set (appsettings)");
options.TokenValidationParameters.ValidIssuer = configuration.GetValue<string?>(Appsettings.Jwt.Issuer) ?? throw new Exception($"{Appsettings.Jwt.Issuer} value not set (appsettings)");
options.TokenValidationParameters.ValidateIssuer = true;
options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(configuration.GetValue<string?>(Appsettings.JwtKey) ?? throw new Exception($"{Appsettings.JwtKey} value not set (appsettings)"))
Encoding.UTF8.GetBytes(configuration.GetValue<string?>(Appsettings.Jwt.Key) ?? throw new Exception($"{Appsettings.Jwt.Key} value not set (appsettings)"))
);
options.TokenValidationParameters.ValidateIssuerSigningKey = true;

View file

@ -12,13 +12,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.0" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="7.0.3" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.1" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.1.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Insight.Domain\Insight.Domain.csproj" />
<ProjectReference Include="..\Insight.Infrastructure\Insight.Infrastructure.csproj" />
</ItemGroup>

View file

@ -1,17 +1,58 @@
namespace Insight.Infrastructure;
public class Appsettings
public static class Appsettings
{
public const string Database = "database";
public const string JwtKey = "jwt.key";
public const string JwtAudience = "jwt.audience";
public const string JwtIssuer = "jwt.issuer";
public const string JwtExp = "jwt.exp";
public static class Mongo
{
public const string ConnectionString = "mongo.connection";
}
public const string ServerHost = "server.host";
public const string ServerPort = "server.port";
public static class Influx
{
public const string Endpoint = "influx.endpoint";
public const string Token = "influx.token";
public const string Organization = "influx.org";
public const string Bucket = "influx.bucket";
public const string Service = "influx.service";
}
public const string RemoteServerPort = "remote.port";
public const string RemoteServerCertificate = "remote.certificate";
public const string RemoteServerCertificatePassword = "remote.certificate.password";
public static class Jwt
{
public const string Key = "jwt.key";
public const string Audience = "jwt.audience";
public const string Issuer = "jwt.issuer";
public const string Exp = "jwt.exp";
}
public static class Backend
{
public const string Host = "server.host";
public const string Port = "server.port";
}
public static class Agent
{
public const string Port = "agent.port";
public const string Certificate = "agent.certificate";
public const string CertificatePassword = "agent.certificate.password";
}
public static class Web
{
public const string Port = "web.port";
public const string Certificate = "web.certificate";
public const string CertificatePassword = "web.certificate.password";
}
public static class Remote
{
public const string Port = "remote.port";
public const string Certificate = "remote.certificate";
public const string CertificatePassword = "remote.certificate.password";
}
public static class Dispatch
{
public const string Webmatic = "dispatch.webmatic";
}
}

View file

@ -0,0 +1,13 @@
using Microsoft.Extensions.Configuration;
namespace Insight.Infrastructure;
public static class ConfigurationExtensions
{
public static IConfigurationBuilder Defaults(this IConfigurationBuilder configuration)
{
configuration.Sources.Clear();
configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
return configuration.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true);
}
}

View file

@ -11,7 +11,7 @@ public static partial class ServiceExtensions
{
public static IServiceCollection AddDatabase(this IServiceCollection services, IConfiguration configuration, ILoggerFactory? loggerFactory = null)
{
var connectionString = configuration.GetValue<string?>(Appsettings.Database) ?? throw new Exception($"{Appsettings.Database} value not set (appsettings)");
var connectionString = configuration.GetValue<string?>(Appsettings.Mongo.ConnectionString) ?? throw new Exception($"{Appsettings.Mongo.ConnectionString} value not set (appsettings)");
var settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString));
settings.ConnectTimeout = TimeSpan.FromSeconds(3);

View file

@ -12,14 +12,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="AspNetCore.Identity.MongoDbCore" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="MongoDB.Driver" Version="2.23.1" />
<PackageReference Include="Vaitr.Scheduler" Version="2023.12.15.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Insight.Domain\Insight.Domain.csproj" />
</ItemGroup>
</Project>

View file

@ -1,6 +1,5 @@
using Insight.Infrastructure.Entities;
using Microsoft.AspNetCore.Identity;
using MongoDB.Driver;
using System.Globalization;
using System.Text;
using System.Text.Encodings.Web;

View file

@ -1,6 +1,5 @@
using Insight.Infrastructure.Entities;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Logging;
using System.Security.Claims;
namespace Insight.Infrastructure.Services;