diff --git a/CaddyManager/Contracts/Configurations/IConfigurationsService.cs b/CaddyManager/Contracts/Configurations/IConfigurationsService.cs
index 144634e..6cb533b 100644
--- a/CaddyManager/Contracts/Configurations/IConfigurationsService.cs
+++ b/CaddyManager/Contracts/Configurations/IConfigurationsService.cs
@@ -9,12 +9,10 @@ namespace CaddyManager.Contracts.Configurations;
public interface IConfigurationsService
{
///
- /// Configurations for Caddy service
+ /// Method extracting the configurations from the appsettings.json file or environment variables base on the
+ /// type of the configuration class to determine the section name
///
- CaddyServiceConfigurations CaddyServiceConfigurations { get; }
-
- ///
- /// Configurations for Docker service
- ///
- DockerServiceConfiguration DockerServiceConfiguration { get; }
+ ///
+ ///
+ T Get() where T : class;
}
\ No newline at end of file
diff --git a/CaddyManager/Services/Caddy/CaddyService.cs b/CaddyManager/Services/Caddy/CaddyService.cs
index 668834d..5df733a 100644
--- a/CaddyManager/Services/Caddy/CaddyService.cs
+++ b/CaddyManager/Services/Caddy/CaddyService.cs
@@ -13,7 +13,7 @@ public class CaddyService(IConfigurationsService configurationsService) : ICaddy
///
private const string CaddyGlobalConfigName = "Caddyfile";
- private CaddyServiceConfigurations Configurations => configurationsService.CaddyServiceConfigurations;
+ private CaddyServiceConfigurations Configurations => configurationsService.Get();
///
public List GetExistingCaddyConfigurations()
diff --git a/CaddyManager/Services/Configurations/ConfigurationsService.cs b/CaddyManager/Services/Configurations/ConfigurationsService.cs
index 52daa78..7dd3576 100644
--- a/CaddyManager/Services/Configurations/ConfigurationsService.cs
+++ b/CaddyManager/Services/Configurations/ConfigurationsService.cs
@@ -10,11 +10,16 @@ namespace CaddyManager.Services.Configurations;
public class ConfigurationsService(IConfiguration configuration) : IConfigurationsService
{
///
- public CaddyServiceConfigurations CaddyServiceConfigurations =>
- configuration.GetSection(CaddyServiceConfigurations.Caddy).Get() ??
- new CaddyServiceConfigurations();
-
- public DockerServiceConfiguration DockerServiceConfiguration =>
- configuration.GetSection(DockerServiceConfiguration.Docker).Get() ??
- new DockerServiceConfiguration();
+ public T Get() where T : class
+ {
+ var section = typeof(T).Name;
+
+ // Have the configuration section name be the section name without the "Configurations" suffix
+ if (section.EndsWith("Configurations"))
+ section = section[..^"Configurations".Length];
+ else if (section.EndsWith("Configuration"))
+ section = section[..^"Configuration".Length];
+
+ return configuration.GetSection(section).Get() ?? Activator.CreateInstance();
+ }
}
\ No newline at end of file
diff --git a/CaddyManager/Services/Docker/DockerService.cs b/CaddyManager/Services/Docker/DockerService.cs
index 328513b..3b02364 100644
--- a/CaddyManager/Services/Docker/DockerService.cs
+++ b/CaddyManager/Services/Docker/DockerService.cs
@@ -9,7 +9,7 @@ namespace CaddyManager.Services.Docker;
///
public class DockerService(IConfigurationsService configurationsService) : IDockerService
{
- private DockerServiceConfiguration Configuration => configurationsService.DockerServiceConfiguration;
+ private DockerServiceConfiguration Configuration => configurationsService.Get();
///
/// Method to get the container id of the Caddy container by the name configured
diff --git a/CaddyManager/appsettings.Development.json b/CaddyManager/appsettings.Development.json
index 3975fcc..f2739bf 100644
--- a/CaddyManager/appsettings.Development.json
+++ b/CaddyManager/appsettings.Development.json
@@ -5,7 +5,7 @@
"Microsoft.AspNetCore": "Warning"
}
},
- "Caddy": {
+ "CaddyService": {
"ConfigDir": "./caddy/config"
}
}
diff --git a/CaddyManager/appsettings.json b/CaddyManager/appsettings.json
index 1ad8666..54ec6ac 100644
--- a/CaddyManager/appsettings.json
+++ b/CaddyManager/appsettings.json
@@ -6,10 +6,10 @@
}
},
"AllowedHosts": "*",
- "Caddy": {
+ "CaddyService": {
"ConfigDir": "/root/compose/caddy/config"
},
- "Docker": {
+ "DockerService": {
"CaddyContainerName": "caddy",
"DockerHost": "unix:///var/run/docker.sock"
}