Пример #1
0
        public void UpdateConnections(bool clear = false)
        {
            if (firewallPage == null)
            {
                return;
            }

            if (clear)
            {
                LogList.Clear();
            }

            Dictionary <Guid, LogItem> oldLog = new Dictionary <Guid, LogItem>();

            foreach (LogItem oldItem in LogList)
            {
                oldLog.Add(oldItem.entry.guid, oldItem);
            }

            Dictionary <Guid, List <Program.LogEntry> > entries = App.client.GetConnections(firewallPage.GetCurGuids());

            foreach (var entrySet in entries)
            {
                ProgramSet prog = firewallPage.GetProgSet(entrySet.Key);
                if (prog == null)
                {
                    continue;
                }

                foreach (Program.LogEntry entry in entrySet.Value)
                {
                    //if (!TestEntry(prog, entry))
                    //    continue;

                    //LogItem Item;
                    //if (!oldLog.TryGetValue(entry.guid, out Item))
                    if (!oldLog.Remove(entry.guid))
                    {
                        Program program = ProgramID.GetProgramFuzzy(prog.Programs, entry.ProgID, ProgramID.FuzzyModes.Any);

                        LogList.Insert(0, new LogItem(entry, program != null ? program.Description : prog.config.Name));
                    }

                    /*else
                     * {
                     *  oldLog.Remove(entry.guid);
                     *  Item.Update(entry);
                     * }*/
                }
            }

            foreach (LogItem item in oldLog.Values)
            {
                LogList.Remove(item);
            }
        }
Пример #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 = ProgramID.GetProgramFuzzy(prog.Programs, logEntry.ProgID, ProgramID.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
        public void UpdateSockets(bool clear = false)
        {
            if (firewallPage == null)
            {
                return;
            }

            if (clear)
            {
                SocketList.Clear();
            }

            Dictionary <Guid, SocketItem> oldLog = new Dictionary <Guid, SocketItem>();

            foreach (SocketItem oldItem in SocketList)
            {
                oldLog.Add(oldItem.sock.guid, oldItem);
            }

            Dictionary <Guid, List <NetworkSocket> > entries = App.client.GetSockets(firewallPage.GetCurGuids());

            foreach (var entrySet in entries)
            {
                ProgramSet prog = firewallPage.GetProgSet(entrySet.Key);
                if (prog == null)
                {
                    continue;
                }

                foreach (NetworkSocket socket in entrySet.Value)
                {
                    SocketItem entry = null;
                    if (!oldLog.TryGetValue(socket.guid, out entry))
                    {
                        oldLog.Remove(socket.guid);

                        Program program = ProgramID.GetProgramFuzzy(prog.Programs, socket.ProgID, ProgramID.FuzzyModes.Any);

                        SocketList.Insert(0, new SocketItem(socket, program != null ? program.Description : prog.config.Name));
                    }
                    else // update entry
                    {
                        oldLog.Remove(socket.guid);
                        entry.Update(socket);
                    }
                }
            }

            foreach (SocketItem item in oldLog.Values)
            {
                SocketList.Remove(item);
            }


            // force sort
            // todo: improve that

            /*if (socksGrid.Items.SortDescriptions.Count > 0)
             * {
             *  socksGrid.Items.SortDescriptions.Insert(0, socksGrid.Items.SortDescriptions.First());
             *  socksGrid.Items.SortDescriptions.RemoveAt(0);
             * }*/
        }