public bool IsInRange(IPAddress _ip) { sites = GetWebsites(); foreach (var site in sites.Websites) { if (site.IsSelected == true) { for (int i = 0; i < site.IPAddressStart.Length; i++) { IPAddress ipAddressStart = IPAddress.Parse(site.IPAddressStart[i]); IPAddress ipAddressEnd = IPAddress.Parse(site.IPAddressEnd[i]); byte[] ipStart = ipAddressStart.GetAddressBytes(); byte[] ipEnd = ipAddressEnd.GetAddressBytes(); byte[] ip = _ip.GetAddressBytes(); if ( //проверка на нижний предел диапазона ip[0] == ipStart[0] && ip[1] == ipStart[1] && ip[2] >= ipStart[2] && //проверка на верхний предел диапазона ip[0] == ipEnd[0] && ip[1] == ipEnd[1] && ip[2] <= ipEnd[2] ) { name = site.Name; return(true); } } } } return(false); }
//получаем все IP для блокировки private string GetAllRemoteAddresses() { string str = ""; string serializedText = ""; using (StreamReader sr = new StreamReader(path, Encoding.Default)) { serializedText = sr.ReadToEnd(); } BlockWebsitesModel newCollection = JsonConvert.DeserializeObject <BlockWebsitesModel>(serializedText); foreach (var item in newCollection.Websites) { if (item.IsSelected == true) { foreach (var ip in item.IP) { str += ip + ","; } } } //удаление последней , str.Remove(str.Length - 1, 1); return(str); }
public bool ChangeBlockWebsites(List <WebsitesModel> newList) { try { string serializedText = ""; using (StreamReader sr = new StreamReader(pathWebsites, Encoding.Default)) { serializedText = sr.ReadToEnd(); } BlockWebsitesModel collection = JsonConvert.DeserializeObject <BlockWebsitesModel>(serializedText); for (int i = 0; i < collection.Websites.Length; i++) { collection.Websites[i].IsSelected = newList[i].IsSelected; } //в json string serialized = JsonConvert.SerializeObject(collection); //запись в файл StreamWriter sw = new StreamWriter(pathWebsites); sw.Write(serialized); sw.Close(); block.DeleteRule(); return(true); } catch { return(false); } }
public bool Add(string _domen, string _ipDns, string _ipRange) { try { //считываем текущие сайты string serializedText = ""; using (StreamReader sr = new StreamReader(path, Encoding.Default)) { serializedText = sr.ReadToEnd(); } BlockWebsitesModel collection = JsonConvert.DeserializeObject <BlockWebsitesModel>(serializedText); //создаем объект с данными нового сайта string[] ipDns = _ipDns.Trim().Split(','); int length = ipDns.Length; string[] ipRange = _ipRange.Trim().Split('-'); int number = collection.Websites.Length; List <string> listIP = new List <string>(); for (int i = 0; i < ipDns.Length; i++) { listIP.Add(ipDns[i]); } BlockWebsitesModel newCollection = new BlockWebsitesModel(); newCollection.Websites = new Website[number + 1]; for (int i = 0; i < collection.Websites.Length; i++) { newCollection.Websites[i] = collection.Websites[i]; } newCollection.Websites[number] = new Website() { Name = _domen, IP = listIP.ToArray <string>(), IPAddressStart = new string[1] { ipRange[0] }, IPAddressEnd = new string[1] { ipRange[1] }, IsSelected = true, }; //в json string serialized = JsonConvert.SerializeObject(newCollection); //записываем в файл обратно StreamWriter sw = new StreamWriter(path); sw.Write(serialized); sw.Close(); return(true); } catch { return(false); } }
//получаем все сайты из файла private BlockWebsitesModel GetWebsites() { string serializedText = ""; using (StreamReader sr = new StreamReader(path, Encoding.Default)) { serializedText = sr.ReadToEnd(); } BlockWebsitesModel newCollection = JsonConvert.DeserializeObject <BlockWebsitesModel>(serializedText); return(newCollection); }
//список для вывода в грид public List <WebsitesModel> GetList() { string serializedText = ""; using (StreamReader sr = new StreamReader(pathWebsites, Encoding.Default)) { serializedText = sr.ReadToEnd(); } BlockWebsitesModel collection = JsonConvert.DeserializeObject <BlockWebsitesModel>(serializedText); listWebsites = new List <WebsitesModel>(); foreach (var item in collection.Websites) { WebsitesModel site = new WebsitesModel() { Name = item.Name, RangeIP = item.IPAddressStart[0] + " - " + item.IPAddressEnd[0], IsSelected = item.IsSelected, }; listWebsites.Add(site); } return(listWebsites); }
public void Write() { //вебсайты для блокировки по умолчанию BlockWebsitesModel collection = new BlockWebsitesModel(); collection.Websites = new Website[4]; collection.Websites[0] = new Website() { Name = "vk.com", IP = new string[2] { "87.240.165.82", "95.213.11.180" }, IPAddressStart = new string[2] { "95.213.4.0", "87.240.160.0" }, IPAddressEnd = new string[2] { "95.213.7.255", "87.240.191.255" }, IsSelected = true, }; collection.Websites[1] = new Website() { Name = "facebook.com", IP = new string[1] { "31.13.72.36" }, IPAddressStart = new string[2] { "31.13.93.0", "31.13.72.0" }, IPAddressEnd = new string[2] { "31.13.93.255", "31.13.72.255" }, IsSelected = true, }; collection.Websites[2] = new Website() { Name = "ok.ru", IP = new string[3] { "5.61.23.5", "217.20.156.159", "217.20.155.58" }, IPAddressStart = new string[2] { "5.61.23.0", "217.20.152.0" }, IPAddressEnd = new string[2] { "5.61.23.255", "217.20.159.255" }, IsSelected = true, }; collection.Websites[3] = new Website() { Name = "mail.ru", IP = new string[4] { "217.69.139.199", "217.69.139.202", "94.100.180.199", "94.100.180.202" }, IPAddressStart = new string[2] { "94.100.176.0", "217.69.136.0" }, IPAddressEnd = new string[2] { "94.100.183.255", "217.69.141.255" }, IsSelected = true, }; //в json string serialized = JsonConvert.SerializeObject(collection); //запись в файл StreamWriter sw = new StreamWriter(path); sw.Write(serialized); sw.Close(); }