示例#1
0
        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);
        }
示例#2
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);
             * }*/
        }
示例#3
0
        internal void Add(string item, string ip)
        {
            DnsItem it = new DnsItem(item, ip);

            mDns.Add(it);
        }