Some checks failed
Build and Publish Docker Image / build-and-push (push) Has been cancelled
- Implemented CreateInstanceView for creating new instances. - Added HostsView for managing SSH hosts with CRUD operations. - Created InstancesView for displaying and managing instances. - Developed LogsView for viewing operation logs. - Introduced SecretsView for managing secrets associated with hosts. - Established SettingsView for configuring application settings. - Created MainWindow as the main application window with navigation. - Added app manifest and configuration files for logging and settings.
206 lines
12 KiB
XML
206 lines
12 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:OTSSignsOrchestrator.Desktop.ViewModels"
|
|
x:Class="OTSSignsOrchestrator.Desktop.Views.SettingsView"
|
|
x:DataType="vm:SettingsViewModel">
|
|
|
|
<DockPanel>
|
|
<!-- Top toolbar -->
|
|
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Spacing="8" Margin="0,0,0,12">
|
|
<Button Content="Save All Settings"
|
|
Command="{Binding SaveCommand}"
|
|
IsEnabled="{Binding !IsBusy}"
|
|
FontWeight="SemiBold" Padding="16,8" />
|
|
<Button Content="Reload" Command="{Binding LoadCommand}" IsEnabled="{Binding !IsBusy}" />
|
|
<TextBlock Text="{Binding StatusMessage}" VerticalAlignment="Center"
|
|
FontSize="12" Foreground="#a6adc8" Margin="12,0,0,0" />
|
|
</StackPanel>
|
|
|
|
<!-- Scrollable settings content -->
|
|
<ScrollViewer>
|
|
<StackPanel Spacing="16" Margin="0,0,16,16" MaxWidth="800">
|
|
|
|
<!-- ═══ Git Repository ═══ -->
|
|
<Border Background="#1e1e2e" CornerRadius="8" Padding="16">
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="Git Repository" FontSize="16" FontWeight="SemiBold"
|
|
Foreground="#89b4fa" Margin="0,0,0,4" />
|
|
<TextBlock Text="Template repository cloned for each new instance."
|
|
FontSize="12" Foreground="#6c7086" Margin="0,0,0,4" />
|
|
|
|
<TextBlock Text="Repository URL" FontSize="12" />
|
|
<TextBox Text="{Binding GitRepoUrl}"
|
|
Watermark="https://github.com/org/template-repo.git" />
|
|
|
|
<TextBlock Text="Personal Access Token (PAT)" FontSize="12" />
|
|
<TextBox Text="{Binding GitRepoPat}" PasswordChar="●"
|
|
Watermark="ghp_xxxx..." />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ═══ MySQL Connection ═══ -->
|
|
<Border Background="#1e1e2e" CornerRadius="8" Padding="16">
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="MySQL Connection" FontSize="16" FontWeight="SemiBold"
|
|
Foreground="#a6e3a1" Margin="0,0,0,4" />
|
|
<TextBlock Text="Admin credentials used to create databases and users for new instances."
|
|
FontSize="12" Foreground="#6c7086" Margin="0,0,0,4" />
|
|
|
|
<Grid ColumnDefinitions="3*,8,1*" RowDefinitions="Auto,Auto">
|
|
<StackPanel Grid.Column="0" Spacing="4">
|
|
<TextBlock Text="Host" FontSize="12" />
|
|
<TextBox Text="{Binding MySqlHost}" Watermark="cms-sql.otshosting.app" />
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="2" Spacing="4">
|
|
<TextBlock Text="Port" FontSize="12" />
|
|
<TextBox Text="{Binding MySqlPort}" Watermark="3306" />
|
|
</StackPanel>
|
|
</Grid>
|
|
|
|
<TextBlock Text="Admin Username" FontSize="12" />
|
|
<TextBox Text="{Binding MySqlAdminUser}" Watermark="root" />
|
|
|
|
<TextBlock Text="Admin Password" FontSize="12" />
|
|
<TextBox Text="{Binding MySqlAdminPassword}" PasswordChar="●" />
|
|
|
|
<Button Content="Test MySQL Connection"
|
|
Command="{Binding TestMySqlConnectionCommand}"
|
|
IsEnabled="{Binding !IsBusy}"
|
|
Margin="0,4,0,0" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ═══ SMTP Settings ═══ -->
|
|
<Border Background="#1e1e2e" CornerRadius="8" Padding="16">
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="SMTP Settings" FontSize="16" FontWeight="SemiBold"
|
|
Foreground="#f5c2e7" Margin="0,0,0,4" />
|
|
<TextBlock Text="Email configuration applied to all CMS instances."
|
|
FontSize="12" Foreground="#6c7086" Margin="0,0,0,4" />
|
|
|
|
<TextBlock Text="SMTP Server (host:port)" FontSize="12" />
|
|
<TextBox Text="{Binding SmtpServer}" Watermark="smtp.azurecomm.net:587" />
|
|
|
|
<TextBlock Text="SMTP Username" FontSize="12" />
|
|
<TextBox Text="{Binding SmtpUsername}" Watermark="user@domain.com" />
|
|
|
|
<TextBlock Text="SMTP Password" FontSize="12" />
|
|
<TextBox Text="{Binding SmtpPassword}" PasswordChar="●" />
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="16">
|
|
<CheckBox Content="Use TLS" IsChecked="{Binding SmtpUseTls}" />
|
|
<CheckBox Content="Use STARTTLS" IsChecked="{Binding SmtpUseStartTls}" />
|
|
</StackPanel>
|
|
|
|
<TextBlock Text="Rewrite Domain" FontSize="12" />
|
|
<TextBox Text="{Binding SmtpRewriteDomain}" Watermark="ots-signs.com" />
|
|
|
|
<TextBlock Text="SMTP Hostname" FontSize="12" />
|
|
<TextBox Text="{Binding SmtpHostname}" Watermark="demo.ots-signs.com" />
|
|
|
|
<TextBlock Text="From Line Override" FontSize="12" />
|
|
<TextBox Text="{Binding SmtpFromLineOverride}" Watermark="NO" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ═══ Pangolin / Newt ═══ -->
|
|
<Border Background="#1e1e2e" CornerRadius="8" Padding="16">
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="Pangolin (Newt Tunnel)" FontSize="16" FontWeight="SemiBold"
|
|
Foreground="#fab387" Margin="0,0,0,4" />
|
|
<TextBlock Text="Global Pangolin endpoint. Newt ID and Secret are configured per-instance."
|
|
FontSize="12" Foreground="#6c7086" Margin="0,0,0,4" />
|
|
|
|
<TextBlock Text="Pangolin Endpoint URL" FontSize="12" />
|
|
<TextBox Text="{Binding PangolinEndpoint}" Watermark="https://app.pangolin.net" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ═══ CIFS Volumes ═══ -->
|
|
<Border Background="#1e1e2e" CornerRadius="8" Padding="16">
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="CIFS Volumes" FontSize="16" FontWeight="SemiBold"
|
|
Foreground="#cba6f7" Margin="0,0,0,4" />
|
|
<TextBlock Text="Network share settings for Docker volumes. Volumes will be mounted via CIFS."
|
|
FontSize="12" Foreground="#6c7086" Margin="0,0,0,4" />
|
|
|
|
<TextBlock Text="CIFS Server (hostname/IP)" FontSize="12" />
|
|
<TextBox Text="{Binding CifsServer}" Watermark="nas.local" />
|
|
|
|
<TextBlock Text="Share Base Path" FontSize="12" />
|
|
<TextBox Text="{Binding CifsShareBasePath}" Watermark="/share/cms" />
|
|
|
|
<TextBlock Text="Username" FontSize="12" />
|
|
<TextBox Text="{Binding CifsUsername}" Watermark="smbuser" />
|
|
|
|
<TextBlock Text="Password" FontSize="12" />
|
|
<TextBox Text="{Binding CifsPassword}" PasswordChar="●" />
|
|
|
|
<TextBlock Text="Extra Mount Options" FontSize="12" />
|
|
<TextBox Text="{Binding CifsOptions}" Watermark="file_mode=0777,dir_mode=0777" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ═══ Instance Defaults ═══ -->
|
|
<Border Background="#1e1e2e" CornerRadius="8" Padding="16">
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="Instance Defaults" FontSize="16" FontWeight="SemiBold"
|
|
Foreground="#89dceb" Margin="0,0,0,4" />
|
|
<TextBlock Text="Default Docker images, naming templates, and PHP settings for new instances. Use {abbrev} as a placeholder for the customer abbreviation."
|
|
FontSize="12" Foreground="#6c7086" Margin="0,0,0,4" TextWrapping="Wrap" />
|
|
|
|
<TextBlock Text="Docker Images" FontSize="13" FontWeight="SemiBold" Margin="0,8,0,4" />
|
|
|
|
<TextBlock Text="CMS Image" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultCmsImage}"
|
|
Watermark="ghcr.io/xibosignage/xibo-cms:release-4.2.3" />
|
|
|
|
<TextBlock Text="Newt Image" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultNewtImage}" Watermark="fosrl/newt" />
|
|
|
|
<TextBlock Text="Memcached Image" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultMemcachedImage}" Watermark="memcached:alpine" />
|
|
|
|
<TextBlock Text="QuickChart Image" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultQuickChartImage}" Watermark="ianw/quickchart" />
|
|
|
|
<TextBlock Text="Naming Templates" FontSize="13" FontWeight="SemiBold" Margin="0,12,0,4" />
|
|
|
|
<TextBlock Text="CMS Server Name Template" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultCmsServerNameTemplate}"
|
|
Watermark="{}{abbrev}.ots-signs.com" />
|
|
|
|
<TextBlock Text="Theme Host Path Template" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultThemeHostPath}"
|
|
Watermark="/cms/{abbrev}-cms-theme-custom" />
|
|
|
|
<TextBlock Text="MySQL Database Name Template" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultMySqlDbTemplate}" Watermark="{}{abbrev}_cms_db" />
|
|
|
|
<TextBlock Text="MySQL User Template" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultMySqlUserTemplate}" Watermark="{}{abbrev}_cms" />
|
|
|
|
<TextBlock Text="PHP Settings" FontSize="13" FontWeight="SemiBold" Margin="0,12,0,4" />
|
|
|
|
<Grid ColumnDefinitions="1*,8,1*,8,1*">
|
|
<StackPanel Grid.Column="0" Spacing="4">
|
|
<TextBlock Text="Post Max Size" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultPhpPostMaxSize}" Watermark="10G" />
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="2" Spacing="4">
|
|
<TextBlock Text="Upload Max Filesize" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultPhpUploadMaxFilesize}" Watermark="10G" />
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="4" Spacing="4">
|
|
<TextBlock Text="Max Execution Time" FontSize="12" />
|
|
<TextBox Text="{Binding DefaultPhpMaxExecutionTime}" Watermark="600" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</DockPanel>
|
|
</UserControl>
|