chore: initial project import

This commit is contained in:
justme committed 2026-10-04 21:46:39 +08:00
commit 26620707a0
347 files changed
+56172

No files matched your search

@@ -0,0 +1,66 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Fleet.Server;
public sealed class EnrollRequest
{
[JsonPropertyName("join_token")]
public string JoinToken { get; set; } = "";
[JsonPropertyName("name")]
public string Name { get; set; } = "";
/// <summary>身份公钥(SPKI,base64)。</summary>
[JsonPropertyName("pubkey")]
public string PublicKey { get; set; } = "";
/// <summary>面向对端节点的 TLS 证书指纹(SHA-256,base64)。</summary>
[JsonPropertyName("tls_spki")]
public string TlsSpki { get; set; } = "";
/// <summary>持有证明:对 <c>fleet|v1|enroll|{sha256_hex(join_token)}|{pubkey}</c> 的签名(base64)。</summary>
[JsonPropertyName("proof")]
public string Proof { get; set; } = "";
[JsonPropertyName("node_version")]
public string NodeVersion { get; set; } = "";
[JsonPropertyName("meta")]
public JsonElement? Meta { get; set; }
}
public sealed class EnrollResponse
{
[JsonPropertyName("node_id")]
public string NodeId { get; set; } = "";
/// <summary>pending | active</summary>
[JsonPropertyName("status")]
public string Status { get; set; } = "";
}
/// <summary>RFC 9457 problem+json,带 <c>code</c> 扩展字段。</summary>
public sealed class FleetProblem
{
[JsonPropertyName("type")]
public string Type { get; set; } = "about:blank";
[JsonPropertyName("title")]
public string Title { get; set; } = "";
[JsonPropertyName("status")]
public int Status { get; set; }
[JsonPropertyName("code")]
public string Code { get; set; } = "";
[JsonPropertyName("detail")]
public string? Detail { get; set; }
}
[JsonSourceGenerationOptions(DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
[JsonSerializable(typeof(EnrollRequest))]
[JsonSerializable(typeof(EnrollResponse))]
[JsonSerializable(typeof(FleetProblem))]
internal sealed partial class EnrollmentJsonContext : JsonSerializerContext;