diff --git a/src/SiteMonitor/ViewModels/MainWindowViewModel.cs b/src/SiteMonitor/ViewModels/MainWindowViewModel.cs index 12749d2..30943d6 100644 --- a/src/SiteMonitor/ViewModels/MainWindowViewModel.cs +++ b/src/SiteMonitor/ViewModels/MainWindowViewModel.cs @@ -39,6 +39,7 @@ public class MainWindowViewModel : ViewModelBase { public MainWindowViewModel() { OnShowCommandsCommand = ReactiveCommand.Create(OnShowCommands); OnRestartCommand = ReactiveCommand.Create(OnRestart); + OnRestartImagesCommand = ReactiveCommand.Create(OnRestartImages); Task.Factory.StartNew(PingServer); Task.Factory.StartNew(PingSite); ServerAddress = Configuration.Instance.ServerAddress; @@ -169,6 +170,11 @@ public string? SshPassword { /// public ICommand OnRestartCommand { get; set; } + /// + /// Restarts the remote docker images. + /// + public ICommand OnRestartImagesCommand { get; set; } + /// /// Restarts the remote machine. /// @@ -179,6 +185,24 @@ private async Task OnRestart() { using SshCommand? ssh = client.RunCommand($"echo {_sshPassword} | sudo -S {command}"); } + /// + /// Restarts the docker images. + /// + private async Task OnRestartImages() { + using SshClient client = new(_serverAddress!, _sshUsername!, _sshPassword!); + await client.ConnectAsync(CancellationToken.None); + string[] command = [ + "docker compose -p nullinside-ui restart", + "docker compose -p nullinside-api restart", + "docker compose -p nullinside-api-null restart", + "docker compose -p nullinside-api-twitch-bot restart" + ]; + + foreach (string line in command) { + using SshCommand? ssh = client.RunCommand($"echo {_sshPassword} | sudo -S {line}"); + } + } + /// /// Handles showing the server commands. /// diff --git a/src/SiteMonitor/Views/MainWindow.axaml b/src/SiteMonitor/Views/MainWindow.axaml index 3bd39cd..61154e9 100644 --- a/src/SiteMonitor/Views/MainWindow.axaml +++ b/src/SiteMonitor/Views/MainWindow.axaml @@ -79,10 +79,16 @@ RevealPassword="False" Text="{Binding SshPassword}" /> - + + + + diff --git a/src/SiteMonitor/Views/MainWindow.axaml.cs b/src/SiteMonitor/Views/MainWindow.axaml.cs index ff365e1..4a25caa 100644 --- a/src/SiteMonitor/Views/MainWindow.axaml.cs +++ b/src/SiteMonitor/Views/MainWindow.axaml.cs @@ -12,6 +12,7 @@ using Avalonia.Threading; using SiteMonitor.ViewModels; + #else using Avalonia; #endif