protected bool Load() { //Load会重复调用,先清理一下旧数据 mDns.Clear(); try { XmlDocument doc = new XmlDocument(); //获得配置文件的全路径 doc.Load(strFileName); //找出名称为“add”的所有元素 XmlNodeList dnsListSection = doc.GetElementsByTagName("dnsList"); if (null != dnsListSection) { for (int i = 0; i < dnsListSection.Count; i++) { XmlNode node = dnsListSection[i]; XmlNodeList nodes = node.SelectNodes("add"); foreach (XmlElement el in nodes) { DnsItem dnsItem = new DnsItem((string)el.Attributes["domain"].Value, (string)el.Attributes["ip"].Value); mDns.Add(dnsItem); } } } } catch (Exception e) { Log.Logger.Instance.WriteException(e); } return(mDns.Count > 0); }
public void UpdateDnsLog(bool clear = false) { if (firewallPage == null) { return; } if (clear) { LogList.Clear(); } Dictionary <Guid, DnsItem> oldLog = new Dictionary <Guid, DnsItem>(); foreach (DnsItem oldItem in LogList) { oldLog.Add(oldItem.entry.guid, oldItem); } Dictionary <Guid, List <Program.DnsEntry> > entries = App.client.GetDomains(firewallPage.GetCurGuids()); foreach (var entrySet in entries) { ProgramSet prog = firewallPage.GetProgSet(entrySet.Key); if (prog == null) { continue; } foreach (Program.DnsEntry logEntry in entrySet.Value) { DnsItem entry = null; if (!oldLog.TryGetValue(logEntry.guid, out entry)) { oldLog.Remove(logEntry.guid); Program program = ProgramList.GetProgramFuzzy(prog.Programs, logEntry.ProgID, ProgramList.FuzzyModes.Any); LogList.Insert(0, new DnsItem(logEntry, program != null ? program.Description : prog.config.Name)); } else // update entry { oldLog.Remove(logEntry.guid); entry.Update(logEntry); } } } foreach (DnsItem item in oldLog.Values) { LogList.Remove(item); } // force sort // todo: improve that /*if (sockGrid.Items.SortDescriptions.Count > 0) * { * sockGrid.Items.SortDescriptions.Insert(0, sockGrid.Items.SortDescriptions.First()); * sockGrid.Items.SortDescriptions.RemoveAt(0); * }*/ }
internal void Add(string item, string ip) { DnsItem it = new DnsItem(item, ip); mDns.Add(it); }