コード例 #1
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));
         }
     }
 }
コード例 #2
0
 public static List<string> ParseResult(string response)
 {
     byte[] bytes = Convert.FromBase64String(response);
     string content = Encoding.ASCII.GetString(bytes);
     List<string> valid_lines = new List<string>();
     using (var sr = new StringReader(content))
     {
         foreach (var line in sr.NonWhiteSpaceLines())
         {
             if (line.BeginWithAny(IgnoredLineBegins))
                 continue;
             valid_lines.Add(line);
         }
     }
     return valid_lines;
 }
コード例 #3
0
        private static void Init(string res)
        {
            using (var sr = new StringReader(res))
            {
                foreach (var line in sr.NonWhiteSpaceLines())
                {
                    if (line[0] == '#')
                        continue;

                    var pos = line.IndexOf('=');
                    if (pos < 1)
                        continue;
                    _strings[line.Substring(0, pos)] = line.Substring(pos + 1);
                }
            }
        }
コード例 #4
0
ファイル: I18N.cs プロジェクト: CharlieQ1/shadowsocks-windows
        static I18N()
        {
            Strings = new Dictionary<string, string>();

            if (CultureInfo.CurrentCulture.IetfLanguageTag.StartsWith("zh", StringComparison.OrdinalIgnoreCase))
            {
                using (var sr = new StringReader(Resources.cn))
                {
                    foreach (var line in sr.NonWhiteSpaceLines())
                    {
                        if (line[0] == '#')
                            continue;

                        var pos = line.IndexOf('=');
                        if (pos < 1)
                            continue;
                        Strings[line.Substring(0, pos)] = line.Substring(pos + 1);
                    }
                }
            }
        }
コード例 #5
0
 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 = GFWListUpdater.ParseResult(File.ReadAllText(Utils.GetTempPath("gfwlist.txt")));
     if (File.Exists(PACServer.USER_RULE_FILE))
     {
         string local = File.ReadAllText(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 = File.ReadAllText(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 = File.ReadAllText(PACServer.PAC_FILE, Encoding.UTF8);
         if (original == abpContent)
         {
             return;
         }
     }
     File.WriteAllText(PACServer.PAC_FILE, abpContent, Encoding.UTF8);
 }