Skip to content

Commit a5822b3

Browse files
committed
fix: AOT json serializer; SslProxy certificate loader
1 parent ff9467d commit a5822b3

File tree

4 files changed

+25
-24
lines changed

4 files changed

+25
-24
lines changed

extensions/Sisk.SslProxy/CertificateUtil.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,13 @@ public static X509Certificate2 CreateDevelopmentCertificate ( params string [] d
9292
sanBuilder.Build () );
9393

9494
var certificate = request.CreateSelfSigned ( new DateTimeOffset ( DateTime.UtcNow.AddDays ( -1 ) ), new DateTimeOffset ( DateTime.UtcNow.AddDays ( 3650 ) ) );
95+
96+
#if NET9_0_OR_GREATER
97+
// TODO: need to test this.
98+
return X509CertificateLoader.LoadPkcs12 ( certificate.Export ( X509ContentType.Pfx, "sisk" ), "sisk", X509KeyStorageFlags.DefaultKeySet );
99+
#else
95100
return new X509Certificate2 ( certificate.Export ( X509ContentType.Pfx, "sisk" ), "sisk", X509KeyStorageFlags.DefaultKeySet );
101+
#endif
96102
}
97103
}
98104
}

extensions/Sisk.SslProxy/Sisk.SslProxy.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net8.0</TargetFrameworks>
4+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<GenerateDocumentationFile>True</GenerateDocumentationFile>

src/Internal/ServiceProvider/JsonConfigParser.cs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,21 @@
77
// File name: JsonConfigParser.cs
88
// Repository: https://github.com/sisk-http/core
99

10+
using System.Text.Json;
1011
using System.Text.Json.Nodes;
1112
using System.Text.Json.Serialization;
1213
using Sisk.Core.Http;
1314
using Sisk.Core.Http.Hosting;
1415

1516
namespace Sisk.Core.Internal.ServiceProvider {
1617
internal sealed class JsonConfigParser : IConfigurationReader {
18+
1719
public void ReadConfiguration ( ConfigurationContext prov ) {
1820
string filename = prov.ConfigurationFile;
19-
2021
string fileContents = File.ReadAllText ( filename );
2122

22-
if (System.Text.Json.JsonSerializer.Deserialize ( fileContents, typeof ( ConfigStructureFile ),
23-
new SourceGenerationContext ( new System.Text.Json.JsonSerializerOptions () {
24-
AllowTrailingCommas = true,
25-
PropertyNameCaseInsensitive = true,
26-
ReadCommentHandling = System.Text.Json.JsonCommentHandling.Skip
27-
} ) ) is not ConfigStructureFile config) {
23+
if (JsonSerializer.Deserialize<ConfigStructureFile> ( fileContents, JsonConfigJsonSerializer.Default.ConfigStructureFile )
24+
is not { } config) {
2825

2926
throw new InvalidOperationException ( SR.Provider_ConfigParser_ConfigFileInvalid );
3027
}
@@ -57,7 +54,7 @@ public void ReadConfiguration ( ConfigurationContext prov ) {
5754

5855
if (config.Parameters != null) {
5956
foreach (var prop in config.Parameters) {
60-
prov.Host.Parameters.Add ( prop.Key, prop.Value?.AsValue ().GetValue<object> ().ToString () );
57+
prov.Host.Parameters.Add ( prop.Key, prop.Value );
6158
}
6259
prov.Host.Parameters.MakeReadonly ();
6360
}
@@ -90,25 +87,32 @@ public void ReadConfiguration ( ConfigurationContext prov ) {
9087
}
9188
}
9289

90+
[JsonSourceGenerationOptions ( AllowTrailingCommas = true,
91+
ReadCommentHandling = System.Text.Json.JsonCommentHandling.Skip,
92+
DictionaryKeyPolicy = JsonKnownNamingPolicy.Unspecified )]
9393
[JsonSerializable ( typeof ( JsonObject ) )]
94+
[JsonSerializable ( typeof ( ConfigStructureFile ) )]
9495
[JsonSerializable ( typeof ( ConfigStructureFile__ServerConfiguration ) )]
9596
[JsonSerializable ( typeof ( ConfigStructureFile__ListeningHost ) )]
96-
internal partial class ConfigStructureFile : JsonSerializerContext {
97+
[JsonSerializable ( typeof ( ConfigStructureFile__ListeningHost__CrossOriginResourceSharingPolicy ) )]
98+
internal sealed partial class JsonConfigJsonSerializer : JsonSerializerContext {
99+
}
100+
101+
internal sealed class ConfigStructureFile {
97102
public ConfigStructureFile__ServerConfiguration? Server { get; set; } = null!;
98103
public ConfigStructureFile__ListeningHost? ListeningHost { get; set; } = null!;
99-
public JsonObject? Parameters { get; set; }
104+
public Dictionary<string, string>? Parameters { get; set; }
100105
}
101106

102-
internal class ConfigStructureFile__ServerConfiguration {
107+
internal sealed class ConfigStructureFile__ServerConfiguration {
103108
public string? AccessLogsStream { get; set; } = "console";
104109
public string? ErrorsLogsStream { get; set; }
105110
public int MaximumContentLength { get; set; }
106111
public bool IncludeRequestIdHeader { get; set; }
107112
public bool ThrowExceptions { get; set; } = true;
108113
}
109114

110-
[JsonSerializable ( typeof ( string [] ) )]
111-
internal sealed partial class ConfigStructureFile__ListeningHost__CrossOriginResourceSharingPolicy : JsonSerializerContext {
115+
internal sealed class ConfigStructureFile__ListeningHost__CrossOriginResourceSharingPolicy {
112116
public bool? AllowCredentials { get; set; }
113117
public string []? ExposeHeaders { get; set; }
114118
public string? AllowOrigin { get; set; }
@@ -118,16 +122,10 @@ internal sealed partial class ConfigStructureFile__ListeningHost__CrossOriginRes
118122
public int? MaxAge { get; set; }
119123
}
120124

121-
[JsonSerializable ( typeof ( ConfigStructureFile__ListeningHost__CrossOriginResourceSharingPolicy ) )]
122-
internal sealed partial class ConfigStructureFile__ListeningHost : JsonSerializerContext {
125+
internal sealed class ConfigStructureFile__ListeningHost {
123126
public string? Label { get; set; }
124127
public string []? Ports { get; set; }
125128

126129
public ConfigStructureFile__ListeningHost__CrossOriginResourceSharingPolicy? CrossOriginResourceSharingPolicy { get; set; }
127130
}
128-
129-
[JsonSourceGenerationOptions ( WriteIndented = true )]
130-
[JsonSerializable ( typeof ( ConfigStructureFile ) )]
131-
internal sealed partial class SourceGenerationContext : JsonSerializerContext {
132-
}
133131
}

src/Sisk.Core.csproj

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,6 @@
7777
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
7878
<AnalysisLevel>latest</AnalysisLevel>
7979
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
80-
81-
<!-- SYSLIB0020: IgnoreNullValues is obsolete -->
82-
<NoWarn>$(NoWarn);SYSLIB0020</NoWarn>
8380
</PropertyGroup>
8481

8582
<!-- package included files -->

0 commit comments

Comments
 (0)