private void LoadSelectedTemplate() { if (lvwTemplates.SelectedItems.Count == 1 && lvwTemplates.SelectedItems[0].Tag is QuickMonTemplate) { cboType.Enabled = cboTypeFilter.SelectedIndex == 5; txtName.Enabled = true; cboClass.Enabled = true; txtDescription.Enabled = true; QuickMonTemplate t = (QuickMonTemplate)lvwTemplates.SelectedItems[0].Tag; cboType.SelectedIndex = (int)t.TemplateType; txtName.Text = t.Name; cboClass.Text = t.ForClass; txtDescription.Text = t.Description; txtConfig.Text = XmlFormattingUtils.NormalizeXML(t.Config); SetSaveButton(false); } else { cboType.Enabled = lvwTemplates.SelectedItems.Count == 0 && cboTypeFilter.SelectedIndex == 5; txtName.Enabled = lvwTemplates.SelectedItems.Count == 0; cboClass.Enabled = lvwTemplates.SelectedItems.Count == 0; txtDescription.Enabled = lvwTemplates.SelectedItems.Count == 0; txtName.Text = ""; cboClass.Text = ""; txtDescription.Text = ""; txtConfig.Text = ""; SetSaveButton(false); } }
private void LoadMonitorPackItems() { lvwAgentType.Items.Clear(); lvwAgentType.Groups.Clear(); ListViewGroup generalGroup = new ListViewGroup("General"); lvwAgentType.Groups.Add(generalGroup); ListViewItem lviEmptyMonitorPack = new ListViewItem("Empty monitor pack"); lviEmptyMonitorPack.SubItems.Add("Creates a blank monitor pack with no collectors"); lviEmptyMonitorPack.Group = generalGroup; lviEmptyMonitorPack.Tag = Properties.Resources.BlankTemplateMonitorPack; lvwAgentType.Items.Add(lviEmptyMonitorPack); ListViewGroup templatesGroup = new ListViewGroup("Templates"); lvwAgentType.Groups.Add(templatesGroup); foreach (QuickMonTemplate qt in QuickMonTemplate.GetAllTemplates().Where(t => t.TemplateType == TemplateType.MonitorPack)) { ListViewItem lviTemplateCollector = new ListViewItem(qt.Name); lviTemplateCollector.SubItems.Add(qt.Description); lviTemplateCollector.Group = templatesGroup; lviTemplateCollector.Tag = qt; lvwAgentType.Items.Add(lviTemplateCollector); } }
private void LoadTemplates() { lvwTemplates.Items.Clear(); foreach (QuickMonTemplate t in (from t in QuickMonTemplate.GetAllTemplates() orderby t.Name select t)) { if ( cboTypeFilter.SelectedIndex == 5 || ( (cboTypeFilter.SelectedIndex == 0 && t.TemplateType == TemplateType.MonitorPack) || (cboTypeFilter.SelectedIndex == 1 && t.TemplateType == TemplateType.CollectorHost) || (cboTypeFilter.SelectedIndex == 2 && t.TemplateType == TemplateType.CollectorAgent) || (cboTypeFilter.SelectedIndex == 3 && t.TemplateType == TemplateType.NotifierHost) || (cboTypeFilter.SelectedIndex == 4 && t.TemplateType == TemplateType.NotifierAgent) ) ) { ListViewGroup lg = (from ListViewGroup g in lvwTemplates.Groups where (g.Header == "Monitor Pack" && t.TemplateType == TemplateType.MonitorPack) || (g.Header == "Collector Host" && t.TemplateType == TemplateType.CollectorHost) || (g.Header == "Collector Agent" && t.TemplateType == TemplateType.CollectorAgent) || (g.Header == "Notifier Host" && t.TemplateType == TemplateType.NotifierHost) || (g.Header == "Notifier Agent" && t.TemplateType == TemplateType.NotifierAgent) select g).FirstOrDefault(); ListViewItem lvi = new ListViewItem(t.Name); lvi.SubItems.Add(t.ForClass); lvi.SubItems.Add(t.Description); lvi.Group = lg; lvi.Tag = t; lvwTemplates.Items.Add(lvi); } } }
private void LoadNotifierHostItems() { lvwAgentType.Items.Clear(); lvwAgentType.Groups.Clear(); ListViewGroup generalGroup = new ListViewGroup("General"); lvwAgentType.Groups.Add(generalGroup); ListViewItem lviDefaultNotifier = new ListViewItem("Default Notifier"); lviDefaultNotifier.SubItems.Add("Creates a default notifier with 'In Memory' agent"); lviDefaultNotifier.Group = generalGroup; lviDefaultNotifier.Tag = NotifierHost.FromXml("<notifierHost name=\"Default Notifier\" enabled=\"True\" alertLevel=\"Warning\" detailLevel=\"Detail\" attendedOptionOverride=\"OnlyAttended\"><notifierAgents><notifierAgent name=\"Memory agent\" type=\"QuickMon.Notifiers.InMemoryNotifier\" enabled=\"True\"><config><inMemory maxEntryCount=\"99999\" /></config></notifierAgent></notifierAgents></notifierHost>"); lvwAgentType.Items.Add(lviDefaultNotifier); ListViewGroup templatesGroup = new ListViewGroup("Templates"); lvwAgentType.Groups.Add(templatesGroup); foreach (QuickMonTemplate qt in QuickMonTemplate.GetAllTemplates().Where(t => t.TemplateType == TemplateType.NotifierHost)) { ListViewItem lviTemplateCollector = new ListViewItem(qt.Name); lviTemplateCollector.SubItems.Add(qt.Description); lviTemplateCollector.Group = templatesGroup; lviTemplateCollector.Tag = qt; lvwAgentType.Items.Add(lviTemplateCollector); } }
private void resetToolStripButton_Click(object sender, EventArgs e) { if (MessageBox.Show("Are you sure you want to reset all templates to the defaults that came with the original installation?", "Reset", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.Yes) { QuickMonTemplate.ResetTemplates(); CreateNewTemplate(); //to blank out everything LoadTemplates(); } }
private void SaveSelectedTemplate() { ListViewItem lvi; QuickMonTemplate t; if (txtName.Text.Trim().Length == 0) { MessageBox.Show("You must specify the a name for the template!", "Name", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtName.Focus(); return; } if (cboType.SelectedIndex == -1) { MessageBox.Show("You must specify the template type!", "Type", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); cboType.Focus(); return; } if (lvwTemplates.SelectedItems.Count == 1 && lvwTemplates.SelectedItems[0].Tag is QuickMonTemplate) { lvi = lvwTemplates.SelectedItems[0]; t = (QuickMonTemplate)lvwTemplates.SelectedItems[0].Tag; } else { lvi = new ListViewItem(txtName.Text); lvi.SubItems.Add(cboClass.Text); lvi.SubItems.Add(txtDescription.Text); t = new QuickMonTemplate(); lvwTemplates.Items.Add(lvi); } t.Name = txtName.Text; t.TemplateType = (TemplateType)cboType.SelectedIndex; t.ForClass = cboClass.Text; t.Description = txtDescription.Text; t.Config = txtConfig.Text; ListViewGroup lg = (from ListViewGroup g in lvwTemplates.Groups where (g.Header == "Monitor Pack" && t.TemplateType == TemplateType.MonitorPack) || (g.Header == "Collector Host" && t.TemplateType == TemplateType.CollectorHost) || (g.Header == "Collector Agent" && t.TemplateType == TemplateType.CollectorAgent) || (g.Header == "Notifier Host" && t.TemplateType == TemplateType.NotifierHost) || (g.Header == "Notifier Agent" && t.TemplateType == TemplateType.NotifierAgent) select g).FirstOrDefault(); lvi.Selected = true; lvi.Text = t.Name; lvi.SubItems[1].Text = t.ForClass; lvi.SubItems[2].Text = t.Description; lvi.Group = lg; lvi.Tag = t; SaveAllTemplates(); SetSaveButton(false); }
private void SaveAllTemplates() { List <QuickMonTemplate> list = new List <QuickMonTemplate>(); foreach (ListViewItem lvi in lvwTemplates.Items) { if (lvi.Tag is QuickMonTemplate) { QuickMonTemplate t = (QuickMonTemplate)lvi.Tag; list.Add(t); } } QuickMonTemplate.SaveTemplates(list); }
private void LoadCollectorHostItems() { lvwAgentType.Items.Clear(); lvwAgentType.Groups.Clear(); ListViewGroup generalGroup = new ListViewGroup("General"); lvwAgentType.Groups.Add(generalGroup); ListViewItem lviEmptyCollector = new ListViewItem("Folder/Blank collector"); //lviEmptyCollector.SubItems.Add("Creates a blank collector with no agents"); //lviEmptyCollector.Group = generalGroup; //lviEmptyCollector.Tag = new CollectorHost() { Name = "Folder" }; //lvwAgentType.Items.Add(lviEmptyCollector); //lviEmptyCollector = new ListViewItem("Folder/Blank Collector"); lviEmptyCollector.SubItems.Add("Creates a blank collector with no agents"); lviEmptyCollector.Group = generalGroup; lviEmptyCollector.Tag = CollectorHost.FromXml("<collectorHost uniqueId=\"\" dependOnParentId=\"\" name=\"[[FolderName:]]\"><collectorAgents agentCheckSequence=\"All\"></collectorAgents></collectorHost>").Clone(true); lvwAgentType.Items.Add(lviEmptyCollector); //<collectorHost uniqueId=\"\" dependOnParentId=\"\" name=\"[[FolderName:]]\"><collectorAgents agentCheckSequence="All"></collectorAgents></collectorHost> ListViewItem lviPingCollector = new ListViewItem("Ping (ICMP)"); lviPingCollector.SubItems.Add("Creates a collector with a Ping (ICMP) agent"); lviPingCollector.Group = generalGroup; lviPingCollector.Tag = CollectorHost.FromXml("<collectorHost uniqueId=\"\" dependOnParentId=\"\" name=\"Ping [[MachineName:localhost]]\"><collectorAgents agentCheckSequence=\"All\"><collectorAgent name=\"Ping [[MachineName:localhost]]\" type=\"QuickMon.Collectors.PingCollector\" enabled=\"True\"><config><entries><entry pingMethod=\"Ping\" address=\"[[MachineName:localhost]]\" maxTimeMS=\"[[maxTimeMS:1000]]\" timeOutMS=\"[[timeOutMS:5000]]\" /></entries></config></collectorAgent></collectorAgents></collectorHost>").Clone(true); lvwAgentType.Items.Add(lviPingCollector); lviPingCollector = new ListViewItem("Ping (http)"); lviPingCollector.SubItems.Add("Creates a collector with a Ping (http) agent"); lviPingCollector.Group = generalGroup; lviPingCollector.Tag = CollectorHost.FromXml("<collectorHost uniqueId=\"\" dependOnParentId=\"\" name=\"Ping [[MachineName:localhost]]\"><collectorAgents agentCheckSequence=\"All\"><collectorAgent name=\"Ping [[MachineName:localhost]]\" type=\"QuickMon.Collectors.PingCollector\" enabled=\"True\"><config><entries><entry pingMethod=\"Http\" address=\"http://[[MachineName:localhost]]\" maxTimeMS=\"[[maxTimeMS:1000]]\" timeOutMS=\"[[timeOutMS:5000]]\" /></entries></config></collectorAgent></collectorAgents></collectorHost>").Clone(true); lvwAgentType.Items.Add(lviPingCollector); ListViewGroup templatesGroup = new ListViewGroup("Templates"); lvwAgentType.Groups.Add(templatesGroup); foreach (QuickMonTemplate qt in QuickMonTemplate.GetAllTemplates().Where(t => t.TemplateType == TemplateType.CollectorHost)) { ListViewItem lviTemplateCollector = new ListViewItem(qt.Name); lviTemplateCollector.SubItems.Add(qt.Description); lviTemplateCollector.Group = templatesGroup; lviTemplateCollector.Tag = qt; lvwAgentType.Items.Add(lviTemplateCollector); } }
private void cmdResetTemplates_Click(object sender, EventArgs e) { if (MessageBox.Show("Are you sure you want to reset all templates? This cannot be undone.", "Reset", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { QuickMonTemplate.ResetTemplates(); if (selectingCollectorHosts) { LoadCollectorHostItems(); } else if (selectingCollectorAgents || selectingNotifierAgents) { LoadCollectorAgents(); } else if (selectingNotifierHosts) { LoadNotifierHostItems(); } } }
private void LoadTemplates() { Text = "Select Template - "; switch (FilterTemplatesBy) { case TemplateType.CollectorHost: Text += "Collector Host"; break; case TemplateType.CollectorAgent: Text += "Collector Agent"; break; case TemplateType.NotifierHost: Text += "Notifier Host"; break; case TemplateType.NotifierAgent: Text += "Notifier Agent"; break; default: Text += "Monitor pack"; break; } lvwTemplates.Items.Clear(); foreach (QuickMonTemplate template in (from p in QuickMonTemplate.GetAllTemplates() where p.TemplateType == FilterTemplatesBy orderby p.Name select p)) { try { ListViewItem lvi = new ListViewItem(template.Name); lvi.ImageIndex = 0; string details = template.Description.Trim().Length == 0 ? template.Config : template.Description; lvi.SubItems.Add(details); lvi.Tag = template; lvwTemplates.Items.Add(lvi); } catch { } } }
private void LoadSelectedTemplate() { if (lvwTemplates.SelectedItems.Count == 1 && lvwTemplates.SelectedItems[0].Tag is QuickMonTemplate) { cboType.Enabled = cboTypeFilter.SelectedIndex == 5; txtName.Enabled = true; cboClass.Enabled = true; txtDescription.Enabled = true; QuickMonTemplate t = (QuickMonTemplate)lvwTemplates.SelectedItems[0].Tag; cboType.SelectedIndex = (int)t.TemplateType; txtName.Text = t.Name; cboClass.Text = t.ForClass; txtDescription.Text = t.Description; txtConfig.Text = t.Config; try { txtConfig.Text = txtConfig.Text.BeautifyXML(); // XmlFormattingUtils.NormalizeXML(txtConfig.Text); } catch (Exception ex) { MessageBox.Show(string.Format("Error formatting xml\r\n{0}", ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } SetSaveButton(false); } else { cboType.Enabled = lvwTemplates.SelectedItems.Count == 0 && cboTypeFilter.SelectedIndex == 5; txtName.Enabled = lvwTemplates.SelectedItems.Count == 0; cboClass.Enabled = lvwTemplates.SelectedItems.Count == 0; txtDescription.Enabled = lvwTemplates.SelectedItems.Count == 0; txtName.Text = ""; cboClass.Text = ""; txtDescription.Text = ""; txtConfig.Text = ""; SetSaveButton(false); } }
private void SaveSelectedTemplate() { ListViewItem lvi; QuickMonTemplate t; if (txtName.Text.Trim().Length == 0) { MessageBox.Show("You must specify the a name for the template!", "Name", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtName.Focus(); return; } if (cboType.SelectedIndex == -1) { MessageBox.Show("You must specify the template type!", "Type", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); cboType.Focus(); return; } if (txtConfig.Text.Trim().Length == 0) { MessageBox.Show("You must specify the config for the template!", "Config", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtConfig.Focus(); return; } if (((TemplateType)cboType.SelectedIndex) == TemplateType.CollectorHost) { try { System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument(); xdoc.LoadXml(txtConfig.Text); System.Xml.XmlElement root = xdoc.DocumentElement; if (root.ReadXmlElementAttr("uniqueId", "") == "" || root.ReadXmlElementAttr("dependOnParentId", "") == "") { root.SetAttributeValue("uniqueId", ""); root.SetAttributeValue("dependOnParentId", ""); txtConfig.Text = XmlFormattingUtils.NormalizeXML(xdoc.OuterXml); } } catch (Exception ex) { MessageBox.Show("Invalid config!\r\n" + ex.Message, "Config", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } if (lvwTemplates.SelectedItems.Count == 1 && lvwTemplates.SelectedItems[0].Tag is QuickMonTemplate) { lvi = lvwTemplates.SelectedItems[0]; t = (QuickMonTemplate)lvwTemplates.SelectedItems[0].Tag; } else { lvi = new ListViewItem(txtName.Text); lvi.SubItems.Add(cboClass.Text); lvi.SubItems.Add(txtDescription.Text); t = new QuickMonTemplate(); lvwTemplates.Items.Add(lvi); } t.Name = txtName.Text; t.TemplateType = (TemplateType)cboType.SelectedIndex; t.ForClass = cboClass.Text; t.Description = txtDescription.Text; t.Config = txtConfig.Text; ListViewGroup lg = (from ListViewGroup g in lvwTemplates.Groups where (g.Header == "Monitor Pack" && t.TemplateType == TemplateType.MonitorPack) || (g.Header == "Collector Host" && t.TemplateType == TemplateType.CollectorHost) || (g.Header == "Collector Agent" && t.TemplateType == TemplateType.CollectorAgent) || (g.Header == "Notifier Host" && t.TemplateType == TemplateType.NotifierHost) || (g.Header == "Notifier Agent" && t.TemplateType == TemplateType.NotifierAgent) select g).FirstOrDefault(); lvi.Selected = true; lvi.Text = t.Name; lvi.SubItems[1].Text = t.ForClass; lvi.SubItems[2].Text = t.Description; lvi.Group = lg; lvi.Tag = t; SaveAllTemplates(); SetSaveButton(false); }
private void cmdOK_Click(object sender, EventArgs e) { if (lvwAgentType.SelectedItems.Count == 1) { string configToUse = ""; if (selectingMonitorPacks) { #region Monitor pack if (lvwAgentType.SelectedItems[0].Tag is string) { configToUse = lvwAgentType.SelectedItems[0].Tag.ToString(); } else if (lvwAgentType.SelectedItems[0].Tag is QuickMonTemplate) { QuickMonTemplate selectedTemplate = (QuickMonTemplate)(lvwAgentType.SelectedItems[0].Tag); configToUse = selectedTemplate.Config; } if (chkShowCustomConfig.Checked) { RAWXmlEditor editor = new RAWXmlEditor(); editor.SelectedMarkup = configToUse; if (editor.ShowDialog() == DialogResult.OK) { configToUse = editor.SelectedMarkup; } } configToUse = FormatTemplateVariables(configToUse); if (configToUse.Length == 0) { return; } MonitorPack mp = new MonitorPack(); mp.LoadXml(configToUse); SelectedMonitorPack = mp; #endregion } else if (selectingCollectorHosts) { #region Collector hosts if (lvwAgentType.SelectedItems[0].Tag is CollectorHost) { CollectorHost newCH = (CollectorHost)lvwAgentType.SelectedItems[0].Tag; newCH.UniqueId = ""; configToUse = newCH.ToXml(); } else if (lvwAgentType.SelectedItems[0].Tag is QuickMonTemplate) { QuickMonTemplate selectedTemplate = (QuickMonTemplate)(lvwAgentType.SelectedItems[0].Tag); configToUse = selectedTemplate.Config; } if (chkShowCustomConfig.Checked) { RAWXmlEditor editor = new RAWXmlEditor(); editor.SelectedMarkup = configToUse; if (editor.ShowDialog() == DialogResult.OK) { configToUse = editor.SelectedMarkup; } } configToUse = FormatTemplateVariables(configToUse); if (configToUse.Length == 0) { return; } CollectorHost cls = CollectorHost.FromXml(configToUse); if (cls != null) { SelectedCollectorHost = cls; } else { MessageBox.Show("The configuration for this template is invalid! Please correct and try again.", "Template", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } #endregion } else if (selectingCollectorAgents || selectingNotifierAgents) { #region Collector agents RegisteredAgent ra = null; if (lvwAgentType.SelectedItems[0].Tag is RegisteredAgent) { ra = (RegisteredAgent)lvwAgentType.SelectedItems[0].Tag; } else if (lvwAgentType.SelectedItems[0].Tag is QuickMonTemplate) { QuickMonTemplate template = (QuickMonTemplate)lvwAgentType.SelectedItems[0].Tag; ra = RegisteredAgentCache.GetRegisteredAgentByClassName(template.ForClass, selectingCollectorAgents); configToUse = template.Config; } if (ra != null) { if (System.IO.File.Exists(ra.AssemblyPath)) { Assembly collectorEntryAssembly = Assembly.LoadFile(ra.AssemblyPath); SelectedAgent = (IAgent)collectorEntryAssembly.CreateInstance(ra.ClassName); SelectedAgent.AgentClassName = ra.ClassName; SelectedAgent.AgentClassDisplayName = ra.DisplayName; if (configToUse.Length == 0) { configToUse = SelectedAgent.AgentConfig.GetDefaultOrEmptyXml(); } if (chkShowCustomConfig.Checked) { RAWXmlEditor editor = new RAWXmlEditor(); editor.SelectedMarkup = configToUse; if (editor.ShowDialog() == DialogResult.OK) { configToUse = editor.SelectedMarkup; } } try { if ((selectingCollectorAgents && configToUse.StartsWith("<collectorAgent")) || (selectingNotifierAgents && configToUse.StartsWith("<notifierAgent"))) { System.Xml.XmlDocument collectorAgentDoc = new System.Xml.XmlDocument(); collectorAgentDoc.LoadXml(configToUse); System.Xml.XmlNode configNode = collectorAgentDoc.DocumentElement.SelectSingleNode("config"); if (configNode != null) { configToUse = configNode.OuterXml; } } configToUse = FormatTemplateVariables(configToUse); if (configToUse.Length == 0) { return; } SelectedAgent.AgentConfig.FromXml(configToUse); DialogResult = DialogResult.OK; Close(); } catch (Exception ex) { MessageBox.Show("An error occured while processing the config!\r\n" + ex.Message, "Edit config", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } #endregion } else if (selectingNotifierHosts) { #region Notifier hosts if (lvwAgentType.SelectedItems[0].Tag is NotifierHost) { configToUse = ((NotifierHost)lvwAgentType.SelectedItems[0].Tag).ToXml(); } else if (lvwAgentType.SelectedItems[0].Tag is QuickMonTemplate) { QuickMonTemplate selectedTemplate = (QuickMonTemplate)(lvwAgentType.SelectedItems[0].Tag); configToUse = selectedTemplate.Config; } if (chkShowCustomConfig.Checked) { RAWXmlEditor editor = new RAWXmlEditor(); editor.SelectedMarkup = configToUse; if (editor.ShowDialog() == DialogResult.OK) { configToUse = editor.SelectedMarkup; } } configToUse = FormatTemplateVariables(configToUse); if (configToUse.Length == 0) { return; } NotifierHost cls = NotifierHost.FromXml(configToUse); if (cls != null) { SelectedNotifierHost = cls; } else { MessageBox.Show("The configuration for this template is invalid! Please correct and try again.", "Template", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } #endregion } EditAfterCreation = chkEditAfterCreate.Checked; DialogResult = DialogResult.OK; Close(); } }
private void LoadCollectorAgents() { lvwAgentType.Items.Clear(); lvwAgentType.Groups.Clear(); ListViewGroup generalGroup = new ListViewGroup("General"); lvwAgentType.Groups.Add(generalGroup); foreach (string categoryName in (from a in RegisteredAgentCache.Agents where ((a.IsCollector && selectingCollectorAgents) || (selectingNotifierAgents && a.IsNotifier)) && a.CategoryName != "Test" && a.CategoryName != "General" group a by a.CategoryName into g orderby g.Key select g.Key)) { lvwAgentType.Groups.Add(new ListViewGroup(categoryName)); } ListViewGroup testGroup = new ListViewGroup("Test"); lvwAgentType.Groups.Add(testGroup); ListViewItem lvi; foreach (RegisteredAgent ar in (from a in RegisteredAgentCache.Agents where (selectingCollectorAgents && a.IsCollector) || (selectingNotifierAgents && a.IsNotifier) orderby a.Name select a)) { try { ListViewGroup agentGroup = (from ListViewGroup gr in lvwAgentType.Groups where gr.Header.ToLower() == ar.CategoryName.ToLower() select gr).FirstOrDefault(); if (agentGroup == null) { agentGroup = generalGroup; } lvi = new ListViewItem(ar.DisplayName); string details = ar.ClassName; System.Reflection.Assembly a = System.Reflection.Assembly.LoadFrom(ar.AssemblyPath); details += ", Version: " + a.GetName().Version.ToString(); details += ", Assembly: " + System.IO.Path.GetFileName(a.Location); if (agentGroup == testGroup) { lvi.ImageIndex = 1; } else { lvi.ImageIndex = 0; } lvi.Group = agentGroup; lvi.SubItems.Add(details); lvi.Tag = ar; lvwAgentType.Items.Add(lvi); if (ar.Name == InitialRegistrationName) { lvi.Selected = true; } } catch { } } ListViewGroup templatesGroup = new ListViewGroup("Templates"); lvwAgentType.Groups.Add(templatesGroup); foreach (QuickMonTemplate qt in QuickMonTemplate.GetAllTemplates().Where(t => (selectingCollectorAgents && t.TemplateType == TemplateType.CollectorAgent) || (selectingNotifierAgents && t.TemplateType == TemplateType.NotifierAgent))) { ListViewItem lviTemplateCollector = new ListViewItem(qt.Name); lviTemplateCollector.SubItems.Add(qt.Description); lviTemplateCollector.Group = templatesGroup; lviTemplateCollector.Tag = qt; lvwAgentType.Items.Add(lviTemplateCollector); } }
private void cmdOK_Click(object sender, EventArgs e) { if (lvwAgentType.SelectedItems.Count == 1) { RegisteredAgent ra = null; string configToUse = ""; if (lvwAgentType.SelectedItems[0].Tag is RegisteredAgent) { ra = (RegisteredAgent)lvwAgentType.SelectedItems[0].Tag; TemplateUsed = false; } else if (lvwAgentType.SelectedItems[0].Tag is QuickMonTemplate) { QuickMonTemplate template = (QuickMonTemplate)lvwAgentType.SelectedItems[0].Tag; ra = RegisteredAgentCache.GetRegisteredAgentByClassName(template.ForClass, selectingCollectors); configToUse = template.Config; TemplateUsed = true; } if (ra != null) { if (System.IO.File.Exists(ra.AssemblyPath)) { Assembly collectorEntryAssembly = Assembly.LoadFile(ra.AssemblyPath); SelectedAgent = (IAgent)collectorEntryAssembly.CreateInstance(ra.ClassName); SelectedAgent.AgentClassName = ra.ClassName.Replace("QuickMon.Collectors.", "").Replace("QuickMon.Notifiers.", ""); SelectedAgent.AgentClassDisplayName = ra.DisplayName; if (configToUse.Length == 0) { configToUse = SelectedAgent.AgentConfig.GetDefaultOrEmptyXml(); } if (chkShowCustomConfig.Checked) { RAWXmlEditor editor = new RAWXmlEditor(); editor.SelectedMarkup = configToUse; if (editor.ShowDialog() == System.Windows.Forms.DialogResult.OK) { configToUse = editor.SelectedMarkup; } } try { if (selectingCollectors && configToUse.StartsWith("<collectorAgent")) { SelectedAgent = CollectorHost.GetCollectorAgentFromString(configToUse); } else if (!selectingCollectors && configToUse.StartsWith("<notifierAgent")) { SelectedAgent = NotifierHost.GetNotifierAgentFromString(configToUse); } else { SelectedAgent.AgentConfig.FromXml(configToUse); } DialogResult = System.Windows.Forms.DialogResult.OK; Close(); } catch (Exception ex) { MessageBox.Show("An error occured while processing the config!\r\n" + ex.Message, "Edit config", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } } }
private void LoadTemplates() { lvwAgentType.Items.Clear(); ListViewItem lvi; ListViewGroup generalGroup = (from ListViewGroup gr in lvwAgentType.Groups where gr.Header.ToLower() == "general" select gr).FirstOrDefault(); List <QuickMonTemplate> allTemplates; if (selectingCollectors) { allTemplates = (from p in QuickMonTemplate.GetCollectorAgentTemplates() orderby p.Name select p).ToList(); } else { allTemplates = (from p in QuickMonTemplate.GetNotifierAgentTemplates() orderby p.Name select p).ToList(); } if (allTemplates == null || allTemplates.Count == 0) { if (!firstChoice) { /**************************/ MessageBox.Show("No templates found for the selected agent type!", "Templates", MessageBoxButtons.OK, MessageBoxIcon.Information); } /**************************/ optShowConfigEditor.Checked = true; } else { foreach (QuickMonTemplate template in allTemplates) { try { RegisteredAgent ar = (from a in RegisteredAgentCache.Agents where ((selectingCollectors && a.IsCollector) || (!selectingCollectors && a.IsNotifier)) && a.ClassName.EndsWith(template.ForClass) orderby a.Name select a).FirstOrDefault(); if (ar != null) { ListViewGroup agentGroup = (from ListViewGroup gr in lvwAgentType.Groups where gr.Header.ToLower() == ar.CategoryName.ToLower() select gr).FirstOrDefault(); if (agentGroup == null) { agentGroup = generalGroup; } lvi = new ListViewItem(template.Name); string details = template.Description.Trim().Length == 0 ? template.Config : template.Description; lvi.ImageIndex = 0; lvi.Group = agentGroup; lvi.SubItems.Add(details); lvi.Tag = template; lvwAgentType.Items.Add(lvi); } } catch { } } if (lvwAgentType.Items.Count == 0) { if (!firstChoice) { /**************************/ MessageBox.Show("No templates found for the selected agent type!", "Templates", MessageBoxButtons.OK, MessageBoxIcon.Information); } /**************************/ optShowConfigEditor.Checked = true; } } }