Skip to content

[PM-20142] Split GlobalSettings in file in the same namespace #5641

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking โ€œSign up for GitHubโ€, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 22 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f7e4a82
Move AmazonSettings class from GlobalSettings.cs to file AmazonSettinโ€ฆ
elyosemite Apr 10, 2025
d148b8f
Move AppleIapSettings class from GlobalSettings.cs to file AppleIapSeโ€ฆ
elyosemite Apr 10, 2025
4e01158
Move BaseServiceUriSettings class from GlobalSettings.cs to file Baseโ€ฆ
elyosemite Apr 10, 2025
b58fc2f
Add Provider for the purpose of handling external and internal uri anโ€ฆ
elyosemite Apr 10, 2025
1ebf077
Move BitPaySettings class from GlobalSettings.cs to file BitPaySettinโ€ฆ
elyosemite Apr 10, 2025
3e031f0
Move BraintreeSettings class from GlobalSettings.cs to file Braintreeโ€ฆ
elyosemite Apr 10, 2025
0d8108e
Move CaptchaSettings class from GlobalSettings.cs to file CaptchaSettโ€ฆ
elyosemite Apr 10, 2025
553f34a
Move ConnectionStringSettings class from GlobalSettings.cs to file Coโ€ฆ
elyosemite Apr 10, 2025
ce2b213
Move DataProtectionSettings class from GlobalSettings.cs to file Dataโ€ฆ
elyosemite Apr 10, 2025
f32f453
Move DistributedCacheSettings class from GlobalSettings.cs to file Diโ€ฆ
elyosemite Apr 10, 2025
92b3993
Move DistributedIpRateLimitingSettings class from GlobalSettings.cs tโ€ฆ
elyosemite Apr 10, 2025
e152098
Move DomainVerificationSettings class from GlobalSettings.cs to file โ€ฆ
elyosemite Apr 11, 2025
a0f0194
Move DuoSettings class from GlobalSettings.cs to file DuoSettings.cs
elyosemite Apr 11, 2025
3bdc570
Move EventLoggingSettings class from GlobalSettings.cs to file EventLโ€ฆ
elyosemite Apr 11, 2025
f405912
Move FileStorageSettings class from GlobalSettings.cs to file FileStoโ€ฆ
elyosemite Apr 11, 2025
f108a77
Move IdentityServerSettings class from GlobalSettings.cs to file Idenโ€ฆ
elyosemite Apr 11, 2025
dc5b4df
Move ImportCiphersLimitationSettings class from GlobalSettings.cs to โ€ฆ
elyosemite Apr 11, 2025
7476aca
Move InfrastructureResourceProvider class from GlobalSettings.cs to fโ€ฆ
elyosemite Apr 11, 2025
e3d5305
Move InstallationSettings, LaunchDarklySettings, MailSettings, Notifiโ€ฆ
elyosemite Apr 11, 2025
31ad9c4
Move PasswordlessAuthSettings SentrySettings, ServiceBusSettings, Sqlโ€ฆ
elyosemite Apr 11, 2025
09169b6
Add IInfrastructureResourceProvider for providing methods for handle โ€ฆ
elyosemite Apr 11, 2025
29e44a9
Merge branch 'main' into feature/refactor-split-globalsettings-in-file
elyosemite Apr 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/Core/Settings/AmazonSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
๏ปฟnamespace Bit.Core.Settings;

public class AmazonSettings
{
public string AccessKeyId { get; set; }
public string AccessKeySecret { get; set; }
public string Region { get; set; }
}
7 changes: 7 additions & 0 deletions src/Core/Settings/AppleIapSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
๏ปฟnamespace Bit.Core.Settings;

public class AppleIapSettings
{
public string Password { get; set; }
public bool AppInReview { get; set; }
}
105 changes: 105 additions & 0 deletions src/Core/Settings/BaseServiceUriSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
๏ปฟnamespace Bit.Core.Settings;

public class BaseServiceUriSettings : IBaseServiceUriSettings
{
private readonly GlobalSettings _globalSettings;

private string _api;
private string _identity;
private string _admin;
private string _notifications;
private string _sso;
private string _scim;
private string _internalApi;
private string _internalIdentity;
private string _internalAdmin;
private string _internalNotifications;
private string _internalSso;
private string _internalVault;
private string _internalScim;
private string _internalBilling;

public BaseServiceUriSettings(GlobalSettings globalSettings)
{
_globalSettings = globalSettings;
}

public string CloudRegion { get; set; }
public string Vault { get; set; }
public string VaultWithHash => $"{Vault}/#";

public string VaultWithHashAndSecretManagerProduct => $"{Vault}/#/sm";

public string Api
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_api, "api");
set => _api = value;
}
public string Identity
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_identity, "identity");
set => _identity = value;
}
public string Admin
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_admin, "admin");
set => _admin = value;
}
public string Notifications
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_notifications, "notifications");
set => _notifications = value;
}
public string Sso
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_sso, "sso");
set => _sso = value;
}
public string Scim
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_scim, "scim");
set => _scim = value;
}

public string InternalNotifications
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalNotifications, "notifications");
set => _internalNotifications = value;
}
public string InternalAdmin
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalAdmin, "admin");
set => _internalAdmin = value;
}
public string InternalIdentity
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalIdentity, "identity");
set => _internalIdentity = value;
}
public string InternalApi
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalApi, "api");
set => _internalApi = value;
}
public string InternalVault
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalVault, "web");
set => _internalVault = value;
}
public string InternalSso
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalSso, "sso");
set => _internalSso = value;
}
public string InternalScim
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_scim, "scim");
set => _internalScim = value;
}

public string InternalBilling
{
get => _globalSettings.InfrastructureResourceProvider.BuildInternalUri(_internalBilling, "billing");
set => _internalBilling = value;
}
}
8 changes: 8 additions & 0 deletions src/Core/Settings/BitPaySettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
๏ปฟnamespace Bit.Core.Settings;

public class BitPaySettings
{
public bool Production { get; set; }
public string Token { get; set; }
public string NotificationUrl { get; set; }
}
9 changes: 9 additions & 0 deletions src/Core/Settings/BraintreeSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
๏ปฟnamespace Bit.Core.Settings;

public class BraintreeSettings
{
public bool Production { get; set; }
public string MerchantId { get; set; }
public string PublicKey { get; set; }
public string PrivateKey { get; set; }
}
11 changes: 11 additions & 0 deletions src/Core/Settings/CaptchaSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
๏ปฟnamespace Bit.Core.Settings;

public class CaptchaSettings
{
public bool ForceCaptchaRequired { get; set; } = false;
public string HCaptchaSecretKey { get; set; }
public string HCaptchaSiteKey { get; set; }
public int MaximumFailedLoginAttempts { get; set; }
public double MaybeBotScoreThreshold { get; set; } = double.MaxValue;
public double IsBotScoreThreshold { get; set; } = double.MaxValue;
}
12 changes: 12 additions & 0 deletions src/Core/Settings/ConnectionStringSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
๏ปฟnamespace Bit.Core.Settings;

public class ConnectionStringSettings : IConnectionStringSettings
{
private string _connectionString;

public string ConnectionString
{
get => _connectionString;
set => _connectionString = value.Trim('"');
}
}
21 changes: 21 additions & 0 deletions src/Core/Settings/DataProtectionSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
๏ปฟnamespace Bit.Core.Settings;

public class DataProtectionSettings
{
private readonly GlobalSettings _globalSettings;

private string _directory;

public DataProtectionSettings(GlobalSettings globalSettings)
{
_globalSettings = globalSettings;
}

public string CertificateThumbprint { get; set; }
public string CertificatePassword { get; set; }
public string Directory
{
get => _globalSettings.InfrastructureResourceProvider.BuildDirectory(_directory, "/core/aspnet-dataprotection");
set => _directory = value;
}
}
8 changes: 8 additions & 0 deletions src/Core/Settings/DistributedCacheSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
๏ปฟnamespace Bit.Core.Settings;

public class DistributedCacheSettings
{
public virtual IConnectionStringSettings Redis { get; set; } = new ConnectionStringSettings();
public virtual IConnectionStringSettings Cosmos { get; set; } = new ConnectionStringSettings();
}

20 changes: 20 additions & 0 deletions src/Core/Settings/DistributedIpRateLimitingSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
๏ปฟnamespace Bit.Core.Settings;

public class DistributedIpRateLimitingSettings
{
public string RedisConnectionString { get; set; }
public bool Enabled { get; set; } = true;

/// <summary>
/// Maximum number of Redis timeouts that can be experienced within the sliding timeout
/// window before IP rate limiting is temporarily disabled.
/// TODO: Determine/discuss a suitable maximum
/// </summary>
public int MaxRedisTimeoutsThreshold { get; set; } = 10;

/// <summary>
/// Length of the sliding window in seconds to track Redis timeout exceptions.
/// TODO: Determine/discuss a suitable sliding window
/// </summary>
public int SlidingWindowSeconds { get; set; } = 120;
}
8 changes: 8 additions & 0 deletions src/Core/Settings/DomainVerificationSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
๏ปฟnamespace Bit.Core.Settings;

public class DomainVerificationSettings : IDomainVerificationSettings
{
public int VerificationInterval { get; set; } = 12;
public int ExpirationPeriod { get; set; } = 7;
}

7 changes: 7 additions & 0 deletions src/Core/Settings/DuoSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
๏ปฟnamespace Bit.Core.Settings;

public class DuoSettings
{
public string AKey { get; set; }
}

62 changes: 62 additions & 0 deletions src/Core/Settings/EventLoggingSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
๏ปฟnamespace Bit.Core.Settings;

public class EventLoggingSettings
{
public AzureServiceBusSettings AzureServiceBus { get; set; } = new AzureServiceBusSettings();
public virtual string WebhookUrl { get; set; }
public RabbitMqSettings RabbitMq { get; set; } = new RabbitMqSettings();

public class AzureServiceBusSettings
{
private string _connectionString;
private string _topicName;

public virtual string EventRepositorySubscriptionName { get; set; } = "events-write-subscription";
public virtual string WebhookSubscriptionName { get; set; } = "events-webhook-subscription";

public string ConnectionString
{
get => _connectionString;
set => _connectionString = value.Trim('"');
}

public string TopicName
{
get => _topicName;
set => _topicName = value.Trim('"');
}
}

public class RabbitMqSettings
{
private string _hostName;
private string _username;
private string _password;
private string _exchangeName;

public virtual string EventRepositoryQueueName { get; set; } = "events-write-queue";
public virtual string WebhookQueueName { get; set; } = "events-webhook-queue";

public string HostName
{
get => _hostName;
set => _hostName = value.Trim('"');
}
public string Username
{
get => _username;
set => _username = value.Trim('"');
}
public string Password
{
get => _password;
set => _password = value.Trim('"');
}
public string ExchangeName
{
get => _exchangeName;
set => _exchangeName = value.Trim('"');
}
}
}

36 changes: 36 additions & 0 deletions src/Core/Settings/FileStorageSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
๏ปฟnamespace Bit.Core.Settings;

public class FileStorageSettings : IFileStorageSettings
{
private readonly GlobalSettings _globalSettings;
private readonly string _urlName;
private readonly string _directoryName;
private string _connectionString;
private string _baseDirectory;
private string _baseUrl;

public FileStorageSettings(GlobalSettings globalSettings, string urlName, string directoryName)
{
_globalSettings = globalSettings;
_urlName = urlName;
_directoryName = directoryName;
}

public string ConnectionString
{
get => _connectionString;
set => _connectionString = value.Trim('"');
}

public string BaseDirectory
{
get => _globalSettings.InfrastructureResourceProvider.BuildDirectory(_baseDirectory, string.Concat("/core/", _directoryName));
set => _baseDirectory = value;
}

public string BaseUrl
{
get => _globalSettings.InfrastructureResourceProvider.BuildExternalUri(_baseUrl, _urlName);
set => _baseUrl = value;
}
}
Loading
Loading