NonExclusiveReadAllText() public static method

public static NonExclusiveReadAllText ( string path ) : string
path string
return string
Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        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")));
     }
 }
Ejemplo n.º 6
0
 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));
         }
     }
 }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
        /// <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);
        }