chore: update project structure with contracts and services for CaddyManager, including configuration and Docker integration
All checks were successful
Caddy Manager CI build / docker (push) Successful in 1m16s

This commit is contained in:
2025-07-23 10:37:51 +07:00
parent 18c710d341
commit ec454d0346
56 changed files with 8511 additions and 34 deletions

View File

@@ -0,0 +1,38 @@
namespace CaddyManager.Contracts.Caddy;
/// <summary>
/// Contract for a service that parses Caddy configuration files.
/// </summary>
public interface ICaddyConfigurationParsingService
{
/// <summary>
/// Extracts outermost hostname declarations from a Caddyfile content.
/// i.e.
/// ```
/// caddy.domain.name {
/// route {
/// reverse_proxy localhost:8080
/// encode zstd gzip
/// }
/// }
/// ```
/// will return `["caddy.domain.name"]`.
/// </summary>
/// <param name="caddyfileContent"></param>
/// <returns></returns>
List<string> GetHostnamesFromCaddyfileContent(string caddyfileContent);
/// <summary>
/// Extracts the reverse proxy target from a Caddyfile content.
/// </summary>
/// <param name="caddyfileContent"></param>
/// <returns></returns>
string GetReverseProxyTargetFromCaddyfileContent(string caddyfileContent);
/// <summary>
/// Extracts the ports being used with the reverse proxy host
/// </summary>
/// <param name="caddyfileContent"></param>
/// <returns></returns>
List<int> GetReverseProxyPortsFromCaddyfileContent(string caddyfileContent);
}

View File

@@ -0,0 +1,60 @@
using CaddyManager.Contracts.Models.Caddy;
using CaddyManager.Contracts.Configurations.Caddy;
namespace CaddyManager.Contracts.Caddy;
using CaddyManager.Contracts.Models.Caddy;
using CaddyManager.Contracts.Configurations.Caddy;
/// <summary>
/// Contracts for Caddy Service to help monitor the available Caddy configurations
/// </summary>
public interface ICaddyService
{
/// <summary>
/// Returns the existing Caddy configurations within the configured directory
/// </summary>
/// <returns></returns>
List<CaddyConfigurationInfo> GetExistingCaddyConfigurations();
/// <summary>
/// Method to get the content of a Caddy configuration file by its name
/// The expected path to be [ConfigDir]/[configurationName].caddy
/// </summary>
/// <param name="configurationName"></param>
/// <returns></returns>
string GetCaddyConfigurationContent(string configurationName);
/// <summary>
/// Method to get the content of the global Caddy configuration file
/// </summary>
/// <returns></returns>
string GetCaddyGlobalConfigurationContent();
/// <summary>
/// Method to help save a Caddy configuration file
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
CaddyOperationResponse SaveCaddyConfiguration(CaddySaveConfigurationRequest request);
/// <summary>
/// Method to help save the global Caddyfile configuration
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
CaddyOperationResponse SaveCaddyGlobalConfiguration(string content);
/// <summary>
/// Method to delete the given Caddy configurations by name
/// </summary>
/// <param name="configurationNames"></param>
/// <returns></returns>
CaddyDeleteOperationResponse DeleteCaddyConfigurations(List<string> configurationNames);
/// <summary>
/// Parse the Caddy configuration file and return the information about it
/// </summary>
/// <param name="configurationName"></param>
/// <returns></returns>
CaddyConfigurationInfo GetCaddyConfigurationInfo(string configurationName);
}