mirror of
https://github.com/spacebarchat/server.git
synced 2026-10-23 02:13:00 +00:00
C#: db config model
This commit is contained in:
1 parent
5b59130994
commit
a75c38ff2a
5 files changed
+587
-88
No files matched your search
@@ -3,10 +3,187 @@ using System.Text.Json.Serialization;
|
||||
namespace Spacebar.ConfigModel;
|
||||
|
||||
public class LimitsConfiguration {
|
||||
[JsonPropertyName("user")] public UserLimits User = new UserLimits();
|
||||
[JsonPropertyName("guild")] public GuildLimits Guild = new GuildLimits();
|
||||
[JsonPropertyName("message")] public MessageLimits Message = new MessageLimits();
|
||||
[JsonPropertyName("channel")] public ChannelLimits Channel = new ChannelLimits();
|
||||
[JsonPropertyName("rate")] public RateLimits Rate = new RateLimits();
|
||||
[JsonPropertyName("absoluteRate")] public GlobalRateLimits AbsoluteRate = new GlobalRateLimits();
|
||||
[JsonPropertyName("user")]
|
||||
public UserLimits User { get; set; } = new UserLimits();
|
||||
|
||||
[JsonPropertyName("guild")]
|
||||
public GuildLimits Guild { get; set; } = new GuildLimits();
|
||||
|
||||
[JsonPropertyName("message")]
|
||||
public MessageLimits Message { get; set; } = new MessageLimits();
|
||||
|
||||
[JsonPropertyName("channel")]
|
||||
public ChannelLimits Channel { get; set; } = new ChannelLimits();
|
||||
|
||||
[JsonPropertyName("rate")]
|
||||
public RateLimits Rate { get; set; } = new RateLimits();
|
||||
|
||||
[JsonPropertyName("absoluteRate")]
|
||||
public GlobalRateLimits AbsoluteRate { get; set; } = new GlobalRateLimits();
|
||||
}
|
||||
|
||||
public class GlobalRateLimits {
|
||||
[JsonPropertyName("register")]
|
||||
public GlobalRateLimit Register { get; set; } = new() {
|
||||
Enabled = true,
|
||||
Count = 25,
|
||||
Window = 60 * 60 * 1000
|
||||
};
|
||||
|
||||
[JsonPropertyName("sendMessage")]
|
||||
public GlobalRateLimit SendMessage { get; set; } = new() {
|
||||
Enabled = true,
|
||||
Count = 200,
|
||||
Window = 60 * 1000
|
||||
};
|
||||
|
||||
public class GlobalRateLimit : RateLimits.RateLimitOptions {
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled { get; set; } = true;
|
||||
}
|
||||
}
|
||||
|
||||
public class RateLimits {
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled { get; set; } = true;
|
||||
|
||||
[JsonPropertyName("ip")]
|
||||
public RateLimitOptions Ip { get; set; } = new RateLimitOptions() {
|
||||
Count = 500,
|
||||
Window = 5
|
||||
};
|
||||
|
||||
[JsonPropertyName("global")]
|
||||
public RateLimitOptions Global { get; set; } = new RateLimitOptions() {
|
||||
Count = 250,
|
||||
Window = 5
|
||||
};
|
||||
|
||||
[JsonPropertyName("error")]
|
||||
public RateLimitOptions Error { get; set; } = new RateLimitOptions() {
|
||||
Count = 50,
|
||||
Window = 5
|
||||
};
|
||||
|
||||
[JsonPropertyName("routes")]
|
||||
public RouteRateLimits Routes { get; set; } = new RouteRateLimits();
|
||||
|
||||
public class RouteRateLimits {
|
||||
[JsonPropertyName("guild")]
|
||||
public RateLimitOptions Guild { get; set; } = new RateLimitOptions() {
|
||||
Count = 5,
|
||||
Window = 5
|
||||
};
|
||||
|
||||
[JsonPropertyName("webhook")]
|
||||
public RateLimitOptions Webhook { get; set; } = new RateLimitOptions() {
|
||||
Count = 10,
|
||||
Window = 5
|
||||
};
|
||||
|
||||
[JsonPropertyName("channel")]
|
||||
public RateLimitOptions Channel { get; set; } = new RateLimitOptions() {
|
||||
Count = 10,
|
||||
Window = 5
|
||||
};
|
||||
|
||||
[JsonPropertyName("auth")]
|
||||
public AuthRateLimits Auth { get; set; } = new AuthRateLimits();
|
||||
|
||||
public class AuthRateLimits {
|
||||
[JsonPropertyName("login")]
|
||||
public RateLimitOptions Login { get; set; } = new RateLimitOptions() {
|
||||
Count = 5,
|
||||
Window = 60
|
||||
};
|
||||
|
||||
[JsonPropertyName("register")]
|
||||
public RateLimitOptions Register { get; set; } = new RateLimitOptions() {
|
||||
Count = 2,
|
||||
Window = 60 * 60 * 12
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class RateLimitOptions {
|
||||
[JsonPropertyName("count")]
|
||||
public int Count { get; set; }
|
||||
|
||||
[JsonPropertyName("window")]
|
||||
public int Window { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public TimeSpan WindowTimeSpan => TimeSpan.FromSeconds(Window);
|
||||
}
|
||||
}
|
||||
|
||||
public class ChannelLimits {
|
||||
[JsonPropertyName("maxPins")]
|
||||
public int MaxPins { get; set; } = 500;
|
||||
|
||||
[JsonPropertyName("maxTopic")]
|
||||
public int MaxTopic { get; set; } = 1024;
|
||||
|
||||
[JsonPropertyName("maxWebhooks")]
|
||||
public int MaxWebhooks { get; set; } = 100;
|
||||
}
|
||||
|
||||
public class MessageLimits {
|
||||
[JsonPropertyName("maxCharacters")]
|
||||
public int MaxCharacters { get; set; } = 1048576;
|
||||
|
||||
[JsonPropertyName("maxTTSCharacters")]
|
||||
public int MaxTTSCharacters { get; set; } = 160;
|
||||
|
||||
[JsonPropertyName("maxReactions")]
|
||||
public int MaxReactions { get; set; } = 2048;
|
||||
|
||||
[JsonPropertyName("maxAttachmentSize")]
|
||||
public int MaxAttachmentSize { get; set; } = 1024 * 1024 * 1024;
|
||||
|
||||
[JsonPropertyName("maxBulkDelete")]
|
||||
public int MaxBulkDelete { get; set; } = 1000;
|
||||
|
||||
[JsonPropertyName("maxEmbedDownloadSize")]
|
||||
public int MaxEmbedDownloadSize { get; set; } = 1024 * 1024 * 1024;
|
||||
|
||||
[JsonPropertyName("maxPreloadCount")]
|
||||
public int MaxPreloadCount { get; set; } = 100;
|
||||
}
|
||||
|
||||
public class GuildLimits {
|
||||
[JsonPropertyName("maxRoles")]
|
||||
public int MaxRoles { get; set; } = 1000;
|
||||
|
||||
[JsonPropertyName("maxEmojis")]
|
||||
public int MaxEmojis { get; set; } = 2000;
|
||||
|
||||
[JsonPropertyName("maxStickers")]
|
||||
public int MaxStickers { get; set; } = 500;
|
||||
|
||||
[JsonPropertyName("maxMembers")]
|
||||
public int MaxMembers { get; set; } = 25000000;
|
||||
|
||||
[JsonPropertyName("maxChannels")]
|
||||
public int MaxChannels { get; set; } = 65535;
|
||||
|
||||
[JsonPropertyName("maxBulkBanUsers")]
|
||||
public int MaxBulkBanUsers { get; set; } = 200;
|
||||
|
||||
[JsonPropertyName("maxChannelsInCategory")]
|
||||
public int MaxChannelsInCategory { get; set; } = 65536;
|
||||
}
|
||||
|
||||
public class UserLimits {
|
||||
[JsonPropertyName("maxGuilds")]
|
||||
public int MaxGuilds { get; set; } = 1048576;
|
||||
|
||||
[JsonPropertyName("maxUsername")]
|
||||
public int MaxUsername { get; set; } = 32;
|
||||
|
||||
[JsonPropertyName("maxFriends")]
|
||||
public int MaxFriends { get; set; } = 5000;
|
||||
|
||||
[JsonPropertyName("maxBio")]
|
||||
public int MaxBio { get; set; } = 190;
|
||||
}
|
||||
Reference in new issue
Block a user