diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor
index 40df286..0589609 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor
@@ -1,5 +1,6 @@
@page "/"
@attribute [StreamRendering]
+@using CaddyManager.Models.Caddy
Reverse proxy configurations
@@ -24,11 +25,11 @@
AdornmentIcon="@(string.IsNullOrWhiteSpace(_debouncedText) ? Icons.Material.Filled.Search : Icons.Material.Filled.Close)"
OnAdornmentClick="HandleSearchBarAdornmentClick" />
-
@foreach (var (index, caddyConfig) in _availableCaddyConfigurations.Index())
{
-
+
@if (index < _availableCaddyConfigurations.Count - 1)
{
diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs
index 73e7dbb..87a7314 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs
@@ -2,9 +2,11 @@ using System.Globalization;
using CaddyManager.Components.Pages.Generic;
using CaddyManager.Contracts.Caddy;
using CaddyManager.Contracts.Docker;
+using CaddyManager.Models.Caddy;
using Humanizer;
using Microsoft.AspNetCore.Components;
using MudBlazor;
+using CaddyfileEditorComponent = CaddyManager.Components.Pages.Caddy.CaddyfileEditor.CaddyfileEditor;
namespace CaddyManager.Components.Pages.Caddy.CaddyReverseProxies;
@@ -15,8 +17,8 @@ namespace CaddyManager.Components.Pages.Caddy.CaddyReverseProxies;
public partial class CaddyReverseProxiesPage : ComponentBase
{
private bool _isProcessing;
- private List _availableCaddyConfigurations = [];
- private IReadOnlyCollection _selectedCaddyConfigurations = [];
+ private List _availableCaddyConfigurations = [];
+ private IReadOnlyCollection _selectedCaddyConfigurations = [];
private string _debouncedText = string.Empty;
[Inject] private ICaddyService CaddyService { get; set; } = null!;
@@ -41,14 +43,14 @@ public partial class CaddyReverseProxiesPage : ComponentBase
///
private async Task NewReverseProxy()
{
- var dialog = await DialogService.ShowAsync("New configuration",
- options: new MudBlazor.DialogOptions
+ var dialog = await DialogService.ShowAsync("New configuration",
+ options: new DialogOptions
{
FullWidth = true,
- MaxWidth = MudBlazor.MaxWidth.Medium
- }, parameters: new MudBlazor.DialogParameters
+ MaxWidth = MaxWidth.Medium
+ }, parameters: new DialogParameters
{
- { "FileName", string.Empty }
+ { p => p.FileName, string.Empty }
});
var result = await dialog.Result;
@@ -66,9 +68,9 @@ public partial class CaddyReverseProxiesPage : ComponentBase
private void Refresh()
{
var notSearching = string.IsNullOrWhiteSpace(_debouncedText);
- _availableCaddyConfigurations = CaddyService.GetExistingCaddyConfigurations()
- .Where(confName => notSearching || confName.Contains(_debouncedText, StringComparison.OrdinalIgnoreCase))
- .ToList();
+ _availableCaddyConfigurations = [..CaddyService.GetExistingCaddyConfigurations()
+ .Where(conf => notSearching || conf.FileName.Contains(_debouncedText, StringComparison.OrdinalIgnoreCase) || conf.ReverseProxyHostname.Contains(_debouncedText, StringComparison.OrdinalIgnoreCase))
+ .OrderBy(conf => conf.FileName)];
StateHasChanged();
}
@@ -93,10 +95,10 @@ public partial class CaddyReverseProxiesPage : ComponentBase
{
p => p.OnConfirm, EventCallback.Factory.Create(this, () =>
{
- var response = CaddyService.DeleteCaddyConfigurations(_selectedCaddyConfigurations.ToList());
+ var response = CaddyService.DeleteCaddyConfigurations(_selectedCaddyConfigurations.Select(c => c.FileName).ToList());
_selectedCaddyConfigurations =
- _selectedCaddyConfigurations.Except(response.DeletedConfigurations).ToList();
+ _selectedCaddyConfigurations.Where(c => !response.DeletedConfigurations.Contains(c.FileName)).ToList();
if (response.Success)
{
diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor
index 6c28dac..e830624 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor
@@ -1,10 +1,11 @@
@using Humanizer
+@using CaddyManager.Models.Caddy
@attribute [StreamRendering]
-
+
- @FileName
+ @ConfigurationInfo.FileName
@ConfigurationInfo.ReverseProxyHostname
diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs
index 938da40..6cc4420 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs
@@ -11,48 +11,20 @@ namespace CaddyManager.Components.Pages.Caddy.CaddyReverseProxies;
///
public partial class CaddyReverseProxyItem : ComponentBase
{
- ///
- /// File path of the Caddy configuration file
- ///
- [Parameter]
- public string FileName { get; set; } = string.Empty;
-
///
/// Callback to refresh the Caddy reverse proxies on the main page
///
[Parameter]
public EventCallback OnCaddyRestartRequired { get; set; }
+ [Parameter]
+ public CaddyConfigurationInfo ConfigurationInfo { get; set; } = null!;
+
///
/// Dialog service for showing the Caddy file editor dialog
///
[Inject]
private IDialogService DialogService { get; set; } = null!;
-
- ///
- /// Caddy service for getting the Caddy configuration file information
- ///
- [Inject]
- private ICaddyService CaddyService { get; set; } = null!;
-
- private CaddyConfigurationInfo ConfigurationInfo { get; set; } = new();
-
- ///
- /// Refresh the current state of the component.
- ///
- private void Refresh()
- {
- ConfigurationInfo = CaddyService.GetCaddyConfigurationInfo(FileName);
- StateHasChanged();
- }
-
- ///
- protected override void OnAfterRender(bool firstRender)
- {
- if (!firstRender) return;
-
- Refresh();
- }
///
/// Show the Caddy file editor dialog
@@ -63,10 +35,10 @@ public partial class CaddyReverseProxyItem : ComponentBase
var dialog = await DialogService.ShowAsync("Caddy file", options: new DialogOptions
{
FullWidth = true,
- MaxWidth = MaxWidth.Medium,
- }, parameters: new DialogParameters
+ MaxWidth = MudBlazor.MaxWidth.Medium,
+ }, parameters: new MudBlazor.DialogParameters
{
- { "FileName", FileName }
+ { "FileName", ConfigurationInfo.FileName }
});
var result = await dialog.Result;
@@ -75,7 +47,5 @@ public partial class CaddyReverseProxyItem : ComponentBase
{
await OnCaddyRestartRequired.InvokeAsync();
}
-
- Refresh();
}
}
\ No newline at end of file
diff --git a/CaddyManager/Contracts/Caddy/ICaddyService.cs b/CaddyManager/Contracts/Caddy/ICaddyService.cs
index 56a890b..757b06d 100644
--- a/CaddyManager/Contracts/Caddy/ICaddyService.cs
+++ b/CaddyManager/Contracts/Caddy/ICaddyService.cs
@@ -11,7 +11,7 @@ public interface ICaddyService
/// Returns the existing Caddy configurations within the configured directory
///
///
- List GetExistingCaddyConfigurations();
+ List GetExistingCaddyConfigurations();
///
/// Method to get the content of a Caddy configuration file by its name
diff --git a/CaddyManager/Models/Caddy/CaddyConfigurationInfo.cs b/CaddyManager/Models/Caddy/CaddyConfigurationInfo.cs
index abfabd5..cc9a62e 100644
--- a/CaddyManager/Models/Caddy/CaddyConfigurationInfo.cs
+++ b/CaddyManager/Models/Caddy/CaddyConfigurationInfo.cs
@@ -19,4 +19,9 @@ public class CaddyConfigurationInfo
/// Ports being used with the reverse proxy hostname
///
public List ReverseProxyPorts { get; set; } = [];
+
+ ///
+ /// The name of the configuration file.
+ ///
+ public string FileName { get; set; } = string.Empty;
}
\ No newline at end of file
diff --git a/CaddyManager/Services/Caddy/CaddyService.cs b/CaddyManager/Services/Caddy/CaddyService.cs
index 000210e..0109736 100644
--- a/CaddyManager/Services/Caddy/CaddyService.cs
+++ b/CaddyManager/Services/Caddy/CaddyService.cs
@@ -18,18 +18,23 @@ public class CaddyService(
private CaddyServiceConfigurations Configurations => configurationsService.Get();
///
- public List GetExistingCaddyConfigurations()
+ public List GetExistingCaddyConfigurations()
{
if (!Directory.Exists(Configurations.ConfigDir))
{
Directory.CreateDirectory(Configurations.ConfigDir);
}
- return Directory.GetFiles(Configurations.ConfigDir)
+ return [.. Directory.GetFiles(Configurations.ConfigDir)
.Where(filePath => Path.GetFileName(filePath) != CaddyGlobalConfigName)
- .Select(Path.GetFileNameWithoutExtension)
- .Order()
- .ToList()!;
+ .Select(filePath =>
+ {
+ var fileName = Path.GetFileNameWithoutExtension(filePath);
+ var info = GetCaddyConfigurationInfo(fileName);
+ info.FileName = fileName;
+ return info;
+ })
+ .OrderBy(info => info.FileName)];
}
///