123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Windows.Forms;
- namespace Optimizer
- {
- internal static class HostsHelper
- {
- internal static string NewLine = Environment.NewLine;
- internal static readonly string HostsFile = CleanHelper.System32Folder + "\\drivers\\etc\\hosts";
- //static string AdBlockBasicLink = "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling/hosts";
- //static string AdBlockWithPornLink = "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts";
- //static string AdBlockWithSocialLink = "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-social/hosts";
- //static string AdBlockUltimateLink = "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts";
- static WebClient _client = new WebClient()
- {
- Encoding = Encoding.UTF8
- };
- internal static void RestoreDefaultHosts()
- {
- try
- {
- if (File.Exists(HostsFile))
- {
- File.Delete(HostsFile);
- }
- File.WriteAllBytes(HostsFile, Properties.Resources.hosts);
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.RestoreDefaultHosts", ex.Message, ex.StackTrace);
- MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "Optimizer", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- //internal static void AdblockBasic()
- //{
- // try
- // {
- // if (File.Exists(HostsFile))
- // {
- // File.Delete(HostsFile);
- // }
- // File.WriteAllText(HostsFile, _client.DownloadString(AdBlockBasicLink));
- // }
- // catch (Exception ex)
- // {
- // ErrorLogger.LogError("HostsHelper.AdblockBasic", ex.Message, ex.StackTrace);
- // MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- // }
- //}
- //internal static void AdBlockWithPorn()
- //{
- // try
- // {
- // if (File.Exists(HostsFile))
- // {
- // File.Delete(HostsFile);
- // }
- // File.WriteAllText(HostsFile, _client.DownloadString(AdBlockWithPornLink));
- // }
- // catch (Exception ex)
- // {
- // ErrorLogger.LogError("HostsHelper.AdBlockWithPorn", ex.Message, ex.StackTrace);
- // MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- // }
- //}
- //internal static void AdBlockWithSocial()
- //{
- // try
- // {
- // if (File.Exists(HostsFile))
- // {
- // File.Delete(HostsFile);
- // }
- // File.WriteAllText(HostsFile, _client.DownloadString(AdBlockWithSocialLink));
- // }
- // catch (Exception ex)
- // {
- // ErrorLogger.LogError("HostsHelper.AdBlockWithSocial", ex.Message, ex.StackTrace);
- // MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- // }
- //}
- //internal static void AdBlockUltimate()
- //{
- // try
- // {
- // if (File.Exists(HostsFile))
- // {
- // File.Delete(HostsFile);
- // }
- // File.WriteAllText(HostsFile, _client.DownloadString(AdBlockUltimateLink));
- // }
- // catch (Exception ex)
- // {
- // ErrorLogger.LogError("HostsHelper.AdBlockUltimate", ex.Message, ex.StackTrace);
- // MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- // }
- //}
- internal static string[] ReadHosts()
- {
- StringBuilder sb = new StringBuilder();
- try
- {
- using (StreamReader sr = File.OpenText(HostsFile))
- {
- sb.Append(sr.ReadToEnd());
- }
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.ReadHosts", ex.Message, ex.StackTrace);
- }
- return sb.ToString().Split(Environment.NewLine.ToCharArray());
- //return File.ReadAllLines(HostsFile);
- }
- internal static string ReadHostsFast()
- {
- StringBuilder sb = new StringBuilder();
- try
- {
- using (StreamReader sr = File.OpenText(HostsFile))
- {
- sb.Append(sr.ReadToEnd());
- }
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.ReadHostsFast", ex.Message, ex.StackTrace);
- }
- return sb.ToString();
- }
- internal static void LocateHosts()
- {
- Utilities.FindFile(HostsFile);
- }
- internal static void SaveHosts(string[] lines)
- {
- for (int i = 0; i < lines.Length; i++)
- {
- if (!lines[i].StartsWith("#") && (!string.IsNullOrEmpty(lines[i])))
- {
- lines[i] = SanitizeEntry(lines[i]);
- }
- }
- try
- {
- File.WriteAllText(HostsFile, string.Empty);
- File.WriteAllLines(HostsFile, lines);
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.SaveHosts", ex.Message, ex.StackTrace);
- MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- internal static List<string> GetHostsEntries()
- {
- List<string> entries = new List<string>();
- //string[] lines = File.ReadAllLines(HostsFile);
- string[] lines = ReadHosts();
- foreach (string line in lines)
- {
- if (!line.StartsWith("#") && (!string.IsNullOrEmpty(line)))
- {
- entries.Add(line.Replace(" ", " : "));
- }
- }
- return entries;
- }
- internal static void AddEntry(string entry, string comment = null)
- {
- try
- {
- if (string.IsNullOrEmpty(comment))
- {
- File.AppendAllText(HostsFile, NewLine + $"{entry}");
- return;
- }
- File.AppendAllText(HostsFile, NewLine + $"{entry} #{comment}");
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.AddEntry", ex.Message, ex.StackTrace);
- MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- internal static void RemoveEntry(string entry)
- {
- try
- {
- File.WriteAllLines(HostsFile, File.ReadLines(HostsFile).Where(x => x != entry).ToList());
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.RemoveEntry", ex.Message, ex.StackTrace);
- MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- internal static void RemoveAllEntries(List<string> collection)
- {
- try
- {
- foreach (string text in collection)
- {
- File.WriteAllLines(HostsFile, File.ReadLines(HostsFile).Where(l => l != text).ToList());
- }
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.RemoveAllEntries", ex.Message, ex.StackTrace);
- MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- internal static string SanitizeEntry(string entry)
- {
- // remove multiple white spaces and keep only one
- return Regex.Replace(entry, @"\s{2,}", " ");
- }
- internal static bool GetReadOnly()
- {
- try
- {
- return new FileInfo(HostsFile).IsReadOnly;
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.ReadOnly", ex.Message, ex.StackTrace);
- return false;
- }
- }
- // edit read-only attibute
- internal static void ReadOnly(bool enable)
- {
- try
- {
- FileInfo fi = new FileInfo(HostsFile);
- fi.IsReadOnly = enable;
- }
- catch (Exception ex)
- {
- ErrorLogger.LogError("HostsHelper.ReadOnly", ex.Message, ex.StackTrace);
- }
- }
- }
- }
|