Mercurial > servermonitor
view ServerMonitor/Controls/SshCheckControl.cs @ 1:9e92780ebc0f
Additional validation for SSH check
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Tue, 01 Jan 2019 21:14:47 -0500 |
parents | 3e1a2131f897 |
children | 7127d5b5ac75 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace ServerMonitorApp { [CheckType(typeof(SshCheck))] public partial class SshCheckControl : CheckControl { public SshCheckControl() { InitializeComponent(); } public override void LoadCheck(Check check1) { SshCheck check = (SshCheck)check1; CommandTextBox.Text = check.Command; ExitCodeCheckBox.Checked = check.CheckExitCode; ExitCodeTextBox.Text = check.ExitCode.ToString(); CommandOutputCheckBox.Checked = check.CheckCommandOutput; CommandOutputComboBox.SelectedIndex = (int)check.CommandOutputMatchType; CommandOutputTextBox.Text = check.CommandOutputPattern; CommandOutputRegexCheckBox.Checked = check.CommandOutputUseRegex; } public override void UpdateCheck(Check check1) { SshCheck check = (SshCheck)check1; check.Command = CommandTextBox.Text.Trim(); check.CheckExitCode = ExitCodeCheckBox.Checked; try { check.ExitCode = int.Parse(ExitCodeTextBox.Text); } catch { if (check.CheckExitCode) throw new UpdateCheckException("Exit code must be an integer."); else check.ExitCode = 0; } check.CheckCommandOutput = CommandOutputCheckBox.Checked; check.CommandOutputMatchType = (MatchType)CommandOutputComboBox.SelectedIndex; if (check.CheckCommandOutput && check.CommandOutputMatchType.In(MatchType.GreaterThan, MatchType.LessThan) && !decimal.TryParse(CommandOutputTextBox.Text, out decimal _)) { throw new UpdateCheckException("Command output must be numeric if checking for greater than/less than."); } check.CommandOutputPattern = CommandOutputTextBox.Text; check.CommandOutputUseRegex = CommandOutputRegexCheckBox.Checked; } private void CommandOutputComboBox_SelectedIndexChanged(object sender, EventArgs e) { bool numeric = ((MatchType)CommandOutputComboBox.SelectedIndex).In(MatchType.GreaterThan, MatchType.LessThan); CommandOutputRegexCheckBox.Enabled = !numeric; if (numeric) CommandOutputRegexCheckBox.Checked = false; } } }