// ==========================================================================
// Author: Yee Hsu
// Date: 8/5/2008
// File: String.cpp
//
// Desc: Big Brother Server Monitor
// ==========================================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Net.Mail;
namespace BigBrotherEx
{
class BBStruct
{
public int nUpdateId;
public int nTimeStamp;
public string sVendorName;
public string sDefDate;
public string sDefVersion;
public string sEngVersion;
public string sStatus;
};
class Monitor
{
public XmlTextReader xmlReader;
public Dictionary<int, BBStruct> bbdata;
public Monitor()
{
this.xmlReader = null;
this.bbdata = new Dictionary<int, BBStruct>();
}
public void ParseBigBrother(string sFileName)
{
this.xmlReader = new XmlTextReader(sFileName);
// move xml reader to the node we want...
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
if (xmlReader.LocalName == "Monitor")
{
if (xmlReader.GetAttribute("Item") == "GSX")
break;
}
}
}
// now start parsing...
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
if (xmlReader.LocalName == "VM")
{
BBStruct bbstruct = new BBStruct();
bbstruct.nUpdateId = int.Parse(xmlReader.GetAttribute("UpdateId"));
bbstruct.nTimeStamp = int.Parse(xmlReader.GetAttribute("TimeStamp"));
bbstruct.sVendorName = xmlReader.GetAttribute("VendorName");
bbstruct.sDefDate = xmlReader.GetAttribute("DefDate");
bbstruct.sDefVersion = xmlReader.GetAttribute("DefVersion");
bbstruct.sEngVersion = xmlReader.GetAttribute("EngVersion");
bbstruct.sStatus = xmlReader.GetAttribute("Status");
this.bbdata.Add(bbstruct.nUpdateId, bbstruct);
}
}
}
}
public void DisplayWarningVMs()
{
foreach (KeyValuePair<int, BBStruct> bMap in this.bbdata)
{
if (bMap.Value.sStatus.Equals("Yellow") == true || bMap.Value.sStatus.Equals("Red"))
{
Console.Write(bMap.Value.nUpdateId + " ");
Console.Write(bMap.Value.nTimeStamp + " ");
Console.Write(bMap.Value.sVendorName + " ");
Console.Write(bMap.Value.sDefDate + " ");
Console.Write(bMap.Value.sDefVersion + " ");
Console.Write(bMap.Value.sEngVersion + " ");
Console.Write(bMap.Value.sStatus + " ");
Console.WriteLine();
}
}
}
public void SendEmailWithVMErrors()
{
string sEmailString = "";
// header
sEmailString += "\r\n";
sEmailString += "Date: " + DateTime.Now.ToString();
sEmailString += "\r\n";
sEmailString += "\r\n";
sEmailString += "GSX Virtual Machine Errors...";
// red status
sEmailString += "\r\n";
sEmailString += "\r\n";
sEmailString += "RED Status\r\n";
sEmailString += "============================================================================\r\n";
foreach (KeyValuePair<int, BBStruct> bMap in this.bbdata)
{
if (bMap.Value.sStatus.Equals("Red"))
{
string sLine = string.Format("{0,-10}{1,-50}{2}",
bMap.Value.nUpdateId, bMap.Value.sVendorName, bMap.Value.sDefDate);
sEmailString += sLine;
sEmailString += "\r\n";
}
}
// yellow status
sEmailString += "\r\n";
sEmailString += "\r\n";
sEmailString += "YELLOW Status\r\n";
sEmailString += "============================================================================\r\n";
foreach (KeyValuePair<int, BBStruct> bMap in this.bbdata)
{
if (bMap.Value.sStatus.Equals("Yellow"))
{
string sLine = string.Format("{0,-10}{1,-50}{2}",
bMap.Value.nUpdateId, bMap.Value.sVendorName, bMap.Value.sDefDate);
sEmailString += sLine;
sEmailString += "\r\n";
}
}
/*
// lets send the email...
MailMessage mail = new MailMessage();
SmtpClient smtp = new SmtpClient("smtp.domain.net");
mail.From = new MailAddress("bigbrother@company.com");
mail.To.Add("email@company.com");
//mail.To.Add("bb_qa@company.com");
mail.Subject = "BigBrother GSX VM Warnings!";
mail.Body = sEmailString;
smtp.Send(mail);
* */
MailMessage mail = new MailMessage();
SmtpClient smtp = new SmtpClient("smtp.domain.com");
mail.From = new MailAddress("bigbrother@company.com");
mail.To.Add("mail@bbmonitor.com");
mail.Subject = "BigBrother GSX VM Warnings!";
mail.Body = sEmailString;
System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("bigbrother@bbmonitor.com", "password");
smtp.UseDefaultCredentials = false;
smtp.Credentials = SMTPUserInfo;
smtp.Send(mail);
}
}
}