using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Xml.Schema; namespace WoL_Manager { class ManagerSettings { private static int ping_timeout = 1000; private static int ping_waittime = 3; private static int wake_waittime = 5*60; public static int PingTimeOut { set { ping_timeout = value; } get { return ping_timeout; } } public static int PingWaitTime { set { ping_waittime = value; } get { return ping_waittime; } } public static int WakeWaitTime { set { wake_waittime = value; } get { return wake_waittime; } } public static void createDTD(string file) { string temp = "\n\n\n\n\n"; System.IO.File.WriteAllText(file, temp); } public static void writeToFile(string file) { string temp = "\n\n\n"; temp = String.Concat(temp, "\n", ManagerSettings.PingTimeOut.ToString(), ""); temp = String.Concat(temp, "\n", ManagerSettings.PingWaitTime.ToString(), ""); temp = String.Concat(temp, "\n", ManagerSettings.WakeWaitTime.ToString(), ""); temp = String.Concat(temp, "\n"); System.IO.File.WriteAllText(file, temp); } private static void validationEventHandler(object sender, ValidationEventArgs args) { valitationResult = false; } private static bool valitationResult = true; public static bool readFromFile(string file) { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; settings.ProhibitDtd = false; settings.ValidationType = ValidationType.DTD; settings.ValidationEventHandler += new ValidationEventHandler(validationEventHandler); XmlReader reader = XmlReader.Create(file, settings); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.LocalName.CompareTo("settings") == 0) { string p_timeout; string p_waittime; string w_waittime; int temp1, temp2, temp3; reader.Read(); p_timeout = reader.ReadString(); reader.Read(); p_waittime = reader.ReadString(); reader.Read(); w_waittime = reader.ReadString(); try { temp1 = Int32.Parse(p_timeout); temp2 = Int32.Parse(p_waittime); temp3 = Int32.Parse(w_waittime); } catch (Exception) { reader.Close(); return false; } if (temp1 < 1 || temp1 > 30000) { reader.Close(); return false; } if (temp2 < 1 || temp2 > 30000) { reader.Close(); return false; } if (temp3 < 1 || temp3 > 30000) { reader.Close(); return false; } if (valitationResult == false) { reader.Close(); return false; } ping_timeout = temp1; ping_waittime = temp2; wake_waittime = temp3; } } reader.Close(); return true; } } }