public bool UpdateDomainBlocklist(DomainBlocklist Blocklist) { List <byte[]> args = new List <byte[]>(); args.Add(PutBlockEntry(Blocklist)); List <byte[]> ret = RemoteExec("UpdateDomainBlocklist", args); return(ret != null?GetBool(ret[0]) : false); }
public void AddDefaultLists() { foreach (var Url in DefaultLists) { if (!Blocklists.ContainsKey(Url)) { DomainBlocklist blocklist = new DomainBlocklist() { Url = Url }; AddDomainBlocklistImpl(blocklist); } } }
public bool UpdateDomainBlocklist(DomainBlocklist Blocklist) { ListLock.EnterWriteLock(); DomainBlocklist KnownBlocklist; if (Blocklists.TryGetValue(Blocklist.Url, out KnownBlocklist)) { KnownBlocklist.Enabled = Blocklist.Enabled; } else { AddDomainBlocklistImpl(Blocklist); } ListLock.ExitWriteLock(); ReloadBlocklists = MiscFunc.GetUTCTimeMs() + 5 * 1000; // schedule reaload return(true); }
private void LoadList(XmlNode rootNode) { foreach (XmlNode node in rootNode) { if (node.Name != "DomainBlocklist") { continue; } DomainBlocklist blocklist = new DomainBlocklist(); foreach (XmlNode subNode in node) { if (subNode.Name == "Url") { blocklist.Url = subNode.InnerText; } else if (subNode.Name == "Enabled") { bool.TryParse(subNode.InnerText, out blocklist.Enabled); } else if (subNode.Name == "LastUpdate") { DateTime dateTime; if (DateTime.TryParse(subNode.InnerText, out dateTime)) { blocklist.LastUpdate = dateTime; } } else if (subNode.Name == "EntryCount") { int.TryParse(subNode.InnerText, out blocklist.EntryCount); } else if (subNode.Name == "FileName") { blocklist.FileName = subNode.InnerText; } } AddDomainBlocklistImpl(blocklist); } }
private bool AddDomainBlocklistImpl(DomainBlocklist Blocklist) { // WARNING: ListLock must be locked for writing when entering this function. if (!Blocklists.ContainsKey(Blocklist.Url)) { if (Blocklist.FileName.Length == 0) { Blocklist.FileName = Path.GetFileName(new Uri(Blocklist.Url).LocalPath); //if (Blocklist.FileName.Length == 0) // Blocklist.FileName = "blocklist"; } if (Blocklist.FileName.Length > 0) { string fileName = Blocklist.FileName; for (int i = 0; ;) { bool Found = false; foreach (DomainBlocklist blocklist in Blocklists.Values) { if (blocklist.FileName.Equals(Blocklist.FileName, StringComparison.OrdinalIgnoreCase)) { Found = true; break; } } if (!Found) { break; } Blocklist.FileName = fileName + " (" + ++i + ")"; } } Blocklists.Add(Blocklist.Url, Blocklist); } return(true); }
public bool RemoveDomainBlocklist(string Url) { DomainBlocklist Blocklist = null; ListLock.EnterWriteLock(); if (Blocklists.TryGetValue(Url, out Blocklist)) { Blocklists.Remove(Url); } ListLock.ExitWriteLock(); if (Blocklist == null) { return(false); } string fileName = App.dataPath + @"\DnsBlockLists\" + Blocklist.FileName; FileOps.DeleteFile(fileName); ReloadBlocklists = MiscFunc.GetUTCTimeMs() + 5 * 1000; // schedule reaload return(true); }
public bool UpdateDomainBlocklist(DomainBlocklist Blocklist) { return(RemoteExec("UpdateDomainBlocklist", Blocklist, false)); }
protected byte[] PutBlockEntry(DomainBlocklist entry) { return(PutXmlObj(entry)); }