private static string MergePACFile(string gfwListResult) { string abpContent; if (File.Exists(PACServer.USER_ABP_FILE)) { abpContent = FileManager.NonExclusiveReadAllText(PACServer.USER_ABP_FILE, Encoding.UTF8); } else { abpContent = Utils.UnGzip(Resources.abp_js); } List <string> userruleLines = new List <string>(); if (File.Exists(PACServer.USER_RULE_FILE)) { string userrulesString = FileManager.NonExclusiveReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); userruleLines = ParseToValidList(userrulesString); } List <string> gfwLines = new List <string>(); gfwLines = ParseBase64ToValidList(gfwListResult); abpContent = abpContent.Replace("__USERRULES__", JsonConvert.SerializeObject(userruleLines, Formatting.Indented)) .Replace("__RULES__", JsonConvert.SerializeObject(gfwLines, Formatting.Indented)); return(abpContent); }
private static string MergePACFile(string gfwListResult) { string abpContent; if (File.Exists(PACDaemon.USER_ABP_FILE)) { abpContent = FileManager.NonExclusiveReadAllText(PACDaemon.USER_ABP_FILE, Encoding.UTF8); } else { abpContent = Resources.abp_js; } List <string> userruleLines = new List <string>(); if (File.Exists(PACDaemon.USER_RULE_FILE)) { string userrulesString = FileManager.NonExclusiveReadAllText(PACDaemon.USER_RULE_FILE, Encoding.UTF8); userruleLines = ParseToValidList(userrulesString); } List <string> gfwLines = new List <string>(); gfwLines = ParseBase64ToValidList(gfwListResult); abpContent = $@"var __USERRULES__ = {JsonConvert.SerializeObject(userruleLines, Formatting.Indented)}; var __RULES__ = {JsonConvert.SerializeObject(gfwLines, Formatting.Indented)}; {abpContent}"; return(abpContent); }
private static string MergePACFile(IList <DomainObject> domains, bool blacklist) { string abpContent; if (File.Exists(PACDaemon.USER_ABP_FILE)) { abpContent = FileManager.NonExclusiveReadAllText(PACDaemon.USER_ABP_FILE, Encoding.UTF8); } else { abpContent = Resources.abp_js; } List <string> userruleLines = new List <string>(); if (File.Exists(PACDaemon.USER_RULE_FILE)) { string userrulesString = FileManager.NonExclusiveReadAllText(PACDaemon.USER_RULE_FILE, Encoding.UTF8); userruleLines = PreProcessGFWList(userrulesString); } List <string> gfwLines = GeositeToGFWList(domains, blacklist); abpContent = $@"var __USERRULES__ = {JsonConvert.SerializeObject(userruleLines, Formatting.Indented)}; var __RULES__ = {JsonConvert.SerializeObject(gfwLines, Formatting.Indented)}; {abpContent}"; return(abpContent); }
public static bool MergeAndWritePACFile(string gfwListResult) { //var stackTrace = new System.Diagnostics.StackTrace(new System.Diagnostics.StackFrame(3)); //var memberName = stackTrace.GetFrame(0).GetMethod().Name; //System.Diagnostics.Debug.WriteLine("-----------" + memberName); PACServer.TouchPACFile(); var original = PACServer.PacContent; string rules = null, userrules = null; if (!string.IsNullOrEmpty(gfwListResult)) { var parse = ParseResult(gfwListResult); rules = SimpleJson.SimpleJson.SerializeObject(parse); } if (File.Exists(PACServer.USER_RULE_FILE)) { string ur = FileManager.NonExclusiveReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); var spl = ur.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Where(c => !c.StartsWith("!") && !c.StartsWith("[")); userrules = SimpleJson.SimpleJson.SerializeObject(spl); } var result = PACServer.ReplaceContent(original, rules, userrules); if (original.Equals(result)) { return(false); } PACServer.PacContent = result; return(true); }
private void pacServer_UserRuleFileChanged(object sender, EventArgs e) { if (!File.Exists(Utils.GetTempPath("gfwlist.txt"))) { UpdatePACFromGFWList(); } else { GFWListUpdater.MergeAndWritePACFile(FileManager.NonExclusiveReadAllText(Utils.GetTempPath("gfwlist.txt"))); } }
private void http_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { try { File.WriteAllText(Utils.GetTempPath("gfwlist.txt"), e.Result, Encoding.UTF8); List <string> lines = ParseResult(e.Result); if (File.Exists(PACServer.USER_RULE_FILE)) { string local = FileManager.NonExclusiveReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); using (var sr = new StringReader(local)) { foreach (var rule in sr.NonWhiteSpaceLines()) { if (rule.BeginWithAny(IgnoredLineBegins)) { continue; } lines.Add(rule); } } } string abpContent; if (File.Exists(PACServer.USER_ABP_FILE)) { abpContent = FileManager.NonExclusiveReadAllText(PACServer.USER_ABP_FILE, Encoding.UTF8); } else { abpContent = Utils.UnGzip(Resources.abp_js); } abpContent = abpContent.Replace("__RULES__", JsonConvert.SerializeObject(lines, Formatting.Indented)); if (File.Exists(PACServer.PAC_FILE)) { string original = FileManager.NonExclusiveReadAllText(PACServer.PAC_FILE, Encoding.UTF8); if (original == abpContent) { UpdateCompleted(this, new ResultEventArgs(false)); return; } } File.WriteAllText(PACServer.PAC_FILE, abpContent, Encoding.UTF8); if (UpdateCompleted != null) { UpdateCompleted(this, new ResultEventArgs(true)); } } catch (Exception ex) { if (Error != null) { Error(this, new ErrorEventArgs(ex)); } } }
public static bool MergeAndWritePACFile(string gfwListResult) { string abpContent = MergePACFile(gfwListResult); if (File.Exists(PACDaemon.PAC_FILE)) { string original = FileManager.NonExclusiveReadAllText(PACDaemon.PAC_FILE, Encoding.UTF8); if (original == abpContent) { return false; } } File.WriteAllText(PACDaemon.PAC_FILE, abpContent, Encoding.UTF8); return true; }
/// <summary> /// Merge and write pac.txt from geosite. /// Used at multiple places. /// </summary> /// <param name="directGroups">A list of geosite groups configured for direct connection.</param> /// <param name="proxiedGroups">A list of geosite groups configured for proxied connection.</param> /// <param name="blacklist">Whether to use blacklist mode. False for whitelist.</param> /// <returns></returns> public static bool MergeAndWritePACFile(List <string> directGroups, List <string> proxiedGroups, bool blacklist) { string abpContent = MergePACFile(directGroups, proxiedGroups, blacklist); if (File.Exists(PACDaemon.PAC_FILE)) { string original = FileManager.NonExclusiveReadAllText(PACDaemon.PAC_FILE, Encoding.UTF8); if (original == abpContent) { return(false); } } File.WriteAllText(PACDaemon.PAC_FILE, abpContent, Encoding.UTF8); return(true); }
public static bool MergeAndWritePACFile(string group, bool blacklist) { IList <DomainObject> domains = Geosites[group]; string abpContent = MergePACFile(domains, blacklist); if (File.Exists(PACDaemon.PAC_FILE)) { string original = FileManager.NonExclusiveReadAllText(PACDaemon.PAC_FILE, Encoding.UTF8); if (original == abpContent) { return(false); } } File.WriteAllText(PACDaemon.PAC_FILE, abpContent, Encoding.UTF8); return(true); }
private void pacServer_UserRuleFileChanged(object sender, EventArgs e) { // TODO: this is a dirty hack. (from code GListUpdater.http_DownloadStringCompleted()) if (!File.Exists(Utils.GetTempPath("gfwlist.txt"))) { UpdatePACFromGFWList(); return; } List <string> lines = new List <string>(); if (File.Exists(PACServer.USER_RULE_FILE)) { string local = FileManager.NonExclusiveReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); using (var sr = new StringReader(local)) { foreach (var rule in sr.NonWhiteSpaceLines()) { if (rule.BeginWithAny(IgnoredLineBegins)) { continue; } lines.Add(rule); } } } lines.AddRange(GFWListUpdater.ParseResult(FileManager.NonExclusiveReadAllText(Utils.GetTempPath("gfwlist.txt")))); string abpContent; if (File.Exists(PACServer.USER_ABP_FILE)) { abpContent = FileManager.NonExclusiveReadAllText(PACServer.USER_ABP_FILE, Encoding.UTF8); } else { abpContent = Utils.UnGzip(Resources.abp_js); } abpContent = abpContent.Replace("__RULES__", JsonConvert.SerializeObject(lines, Formatting.Indented)); if (File.Exists(PACServer.PAC_FILE)) { string original = FileManager.NonExclusiveReadAllText(PACServer.PAC_FILE, Encoding.UTF8); if (original == abpContent) { return; } } File.WriteAllText(PACServer.PAC_FILE, abpContent, Encoding.UTF8); }
private void pacServer_UserRuleFileChanged(object sender, EventArgs e) { if (!Utils.IsGFWListPAC(PACServer.PAC_FILE)) { return; } if (!File.Exists(Utils.GetTempPath(PACServer.gfwlist_FILE))) { UpdatePACFromGFWList(); } else { GFWListUpdater.MergeAndWritePACFile(FileManager.NonExclusiveReadAllText(Utils.GetTempPath(PACServer.gfwlist_FILE))); } UpdateSystemProxy(); }
public static bool MergeAndWritePACFile(string gfwListResult) { List <string> lines = new List <string>(); if (File.Exists(PACServer.USER_RULE_FILE)) { string local = FileManager.NonExclusiveReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); using (var sr = new StringReader(local)) { foreach (var rule in sr.NonWhiteSpaceLines()) { if (rule.BeginWithAny(IgnoredLineBegins)) { continue; } lines.Add(rule); } } } lines.AddRange(ParseResult(gfwListResult)); string abpContent; if (File.Exists(PACServer.USER_ABP_FILE)) { abpContent = FileManager.NonExclusiveReadAllText(PACServer.USER_ABP_FILE, Encoding.UTF8); } else { abpContent = Utils.UnGzip(Resources.abp_js); } abpContent = abpContent.Replace("__RULES__", JsonConvert.SerializeObject(lines, Formatting.Indented)); if (File.Exists(PACServer.PAC_FILE)) { string original = FileManager.NonExclusiveReadAllText(PACServer.PAC_FILE, Encoding.UTF8); if (original == abpContent) { return(false); } } File.WriteAllText(PACServer.PAC_FILE, abpContent, Encoding.UTF8); return(true); }