Owner decision pending (STATE.md DC-100 tick): adopt/ship/park. Preserved from fragile git stash to named branch 2026-08-23. NOTE: requires a Windows build machine (WinUI XAML compiler + MSIX do not cross-build on Linux) — see WINDOWS_APP_BUILD.md in this tree. Secret-scanned clean 2026-08-23 (no keys/tokens/PEM in tree).
96 lines
6.4 KiB
XML
96 lines
6.4 KiB
XML
<ContentDialog
|
|
x:Class="DashCaddy.Desktop.SettingsDialog"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:vm="using:DashCaddy.Desktop.ViewModels"
|
|
mc:Ignorable="d"
|
|
Title="Settings"
|
|
PrimaryButtonText="Save"
|
|
CloseButtonText="Cancel"
|
|
DefaultButton="Primary"
|
|
Width="600">
|
|
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="600">
|
|
<StackPanel Spacing="20" Margin="8">
|
|
<!-- Domain Settings -->
|
|
<Border Style="{StaticResource CardStyle}">
|
|
<StackPanel Spacing="12">
|
|
<TextBlock Text="Domain & Network" FontSize="16" FontWeight="SemiBold" />
|
|
<TextBox x:Name="DomainBox" Header="Base Domain" PlaceholderText="example.com (or 'local' for local-only)" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="EmailBox" Header="Email (for Let's Encrypt)" PlaceholderText="admin@example.com" Style="{StaticResource InputFieldStyle}" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- DNS Provider -->
|
|
<Border Style="{StaticResource CardStyle}">
|
|
<StackPanel Spacing="12">
|
|
<TextBlock Text="DNS Provider" FontSize="16" FontWeight="SemiBold" />
|
|
|
|
<ComboBox x:Name="DnsProviderCombo" Header="Provider" Style="{StaticResource ComboBoxStyle}" SelectionChanged="DnsProvider_SelectionChanged">
|
|
<ComboBoxItem Content="Technitium DNS (Local)" Tag="Technitium" IsSelected="True" />
|
|
<ComboBoxItem Content="CoreDNS (Local)" Tag="CoreDNS" />
|
|
<ComboBoxItem Content="Cloudflare" Tag="Cloudflare" />
|
|
<ComboBoxItem Content="AWS Route 53" Tag="Route53" />
|
|
<ComboBoxItem Content="Custom HTTP API" Tag="Custom" />
|
|
</ComboBox>
|
|
|
|
<!-- Technitium Settings -->
|
|
<StackPanel x:Name="TechnitiumPanel" Spacing="12" Visibility="Visible">
|
|
<TextBox x:Name="TechnitiumUrl" Header="Technitium API URL" PlaceholderText="http://localhost:5380/api" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="TechnitiumApiKey" Header="API Key" PlaceholderText="Leave blank if no auth" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="TechnitiumZone" Header="Zone" PlaceholderText="local" Style="{StaticResource InputFieldStyle}" />
|
|
</StackPanel>
|
|
|
|
<!-- CoreDNS Settings -->
|
|
<StackPanel x:Name="CoreDnsPanel" Spacing="12" Visibility="Collapsed">
|
|
<TextBox x:Name="CoreDnsApiUrl" Header="CoreDNS API URL (via DashCaddy)" PlaceholderText="http://localhost:3001/api/v1/dns" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="CoreDnsZone" Header="Zone" PlaceholderText="local" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBlock Text="CoreDNS is managed via DashCaddy API — no direct API needed" FontSize="12" Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}" />
|
|
</StackPanel>
|
|
|
|
<!-- Cloudflare Settings -->
|
|
<StackPanel x:Name="CloudflarePanel" Spacing="12" Visibility="Collapsed">
|
|
<TextBox x:Name="CloudflareApiToken" Header="API Token" PlaceholderText="Cloudflare API token with Zone:DNS:Edit" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="CloudflareZoneId" Header="Zone ID" PlaceholderText="Get from Cloudflare dashboard" Style="{StaticResource InputFieldStyle}" />
|
|
</StackPanel>
|
|
|
|
<!-- Route53 Settings -->
|
|
<StackPanel x:Name="Route53Panel" Spacing="12" Visibility="Collapsed">
|
|
<TextBox x:Name="AwsAccessKey" Header="AWS Access Key" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="AwsSecretKey" Header="AWS Secret Key" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="AwsRegion" Header="Region" PlaceholderText="us-east-1" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="Route53ZoneId" Header="Hosted Zone ID" PlaceholderText="Z123456789" Style="{StaticResource InputFieldStyle}" />
|
|
</StackPanel>
|
|
|
|
<!-- Custom Settings -->
|
|
<StackPanel x:Name="CustomPanel" Spacing="12" Visibility="Collapsed">
|
|
<TextBox x:Name="CustomDnsUrl" Header="Custom DNS API URL" PlaceholderText="http://your-dns-api:port/api" Style="{StaticResource InputFieldStyle}" />
|
|
<TextBox x:Name="CustomDnsKey" Header="API Key (optional)" Style="{StaticResource InputFieldStyle}" />
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Docker Settings -->
|
|
<Border Style="{StaticResource CardStyle}">
|
|
<StackPanel Spacing="12">
|
|
<TextBlock Text="Docker" FontSize="16" FontWeight="SemiBold" />
|
|
<TextBox x:Name="DockerDataBox" Header="Docker Data Root" PlaceholderText="E:/dockerdata" Style="{StaticResource InputFieldStyle}" />
|
|
<CheckBox x:Name="AutoStartCheck" Content="Start DashCaddy on login" IsChecked="True" />
|
|
<CheckBox x:Name="AutoUpdateCheck" Content="Auto-update Docker images" IsChecked="False" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Advanced -->
|
|
<Border Style="{StaticResource CardStyle}">
|
|
<StackPanel Spacing="12">
|
|
<TextBlock Text="Advanced" FontSize="16" FontWeight="SemiBold" />
|
|
<Button Content="Open Config Folder" Click="OpenConfigFolder_Click" />
|
|
<Button Content="View Logs" Click="ViewLogs_Click" />
|
|
<Button Content="Reset All Data (Dangerous)" Click="ResetData_Click" Style="{StaticResource AccentButtonStyle}" Background="{StaticResource ErrorBrush}" />
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</ContentDialog> |