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); } }
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); * }*/ }
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); * }*/ }