summary refs log tree commit diff
path: root/extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-01-17 02:18:03 +0100
committerRory& <root@rory.gay>2026-01-17 03:22:44 +0100
commit8ea87873dee7f839b726543bb6b02d3822792391 (patch)
treea8c701f2bebbefd2028e48fe0149e2d5add86787 /extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs
parentMerge commit from fork (diff)
downloadserver-ts-8ea87873dee7f839b726543bb6b02d3822792391.tar.xz
Restructure extras
Diffstat (limited to 'extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs')
-rw-r--r--extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs83
1 files changed, 83 insertions, 0 deletions
diff --git a/extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs b/extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs
new file mode 100644

index 00000000..e1592c8d --- /dev/null +++ b/extra/admin-api/Models/Spacebar.Models.Config/SecurityConfiguration.cs
@@ -0,0 +1,83 @@ +using System.Text.Json.Serialization; + +namespace Spacebar.ConfigModel; + +public class SecurityConfiguration { + [JsonPropertyName("captcha")] + public CaptchaConfiguration Captcha { get; set; } = new(); + + [JsonPropertyName("twoFactor")] + public TwoFactorConfiguration TwoFactor { get; set; } = new(); + + [JsonPropertyName("autoUpdate")] + public bool AutoUpdate { get; set; } = true; + + [JsonPropertyName("requestSignature")] public string RequestSignature; // {get;set;}=crypto.randomBytes(32).toString("base64"); + + [JsonPropertyName("jwtSecret")] + public string? JwtSecret { get; set; } = null; + + [JsonPropertyName("forwardedFor")] + public string? ForwardedFor { get; set; } = null; + + [JsonPropertyName("trustedProxies")] + public string TrustedProxies { get; set; } = null; + + [JsonPropertyName("abuseIpDbApiKey")] + public string? AbuseIpDbApiKey { get; set; } = null; + + [JsonPropertyName("abuseipdbBlacklistRatelimit")] + public int AbuseipdbBlacklistRatelimit { get; set; } = 5; + + [JsonPropertyName("abuseipdbConfidenceScoreTreshold")] + public int AbuseipdbConfidenceScoreTreshold { get; set; } = 50; + + [JsonPropertyName("ipdataApiKey")] + public string? IpdataApiKey { get; set; } = null; + + [JsonPropertyName("mfaBackupCodeCount")] + public int MfaBackupCodeCount { get; set; } = 10; + + [JsonPropertyName("statsWorldReadable")] + public bool StatsWorldReadable { get; set; } = true; + + [JsonPropertyName("defaultRegistrationTokenExpiration")] + public int DefaultRegistrationTokenExpiration { get; set; } = 1000 * 60 * 60 * 24 * 7; + + [JsonPropertyName("cdnSignUrls")] + public bool CdnSignUrls { get; set; } = false; + + [JsonPropertyName("cdnSignatureKey")] + public string CdnSignatureKey { get; set; } = null!; // crypto.randomBytes(32).toString("base64"); + + [JsonPropertyName("cdnSignatureDuration")] + public string CdnSignatureDuration { get; set; } = "24h"; + + [JsonPropertyName("cdnSignatureIncludeIp")] + public bool CdnSignatureIncludeIp { get; set; } = true; + + [JsonPropertyName("cdnSignatureIncludeUserAgent")] + public bool CdnSignatureIncludeUserAgent { get; set; } = true; +} + +public class CaptchaConfiguration { + [JsonPropertyName("enabled")] + public bool Enabled { get; set; } = false; + + /// <summary> + /// One of: null, recaptcha, hcaptcha + /// </summary> + [JsonPropertyName("service")] + public string Service { get; set; } = "none"; + + [JsonPropertyName("sitekey")] + public string? SiteKey { get; set; } = null; + + [JsonPropertyName("secret")] + public string? Secret { get; set; } = null; +} + +public class TwoFactorConfiguration { + [JsonPropertyName("generateBackupCodes")] + public bool GenerateBackupCodes { get; set; } = true; +} \ No newline at end of file