mirror of
https://github.com/netchx/netch.git
synced 2026-03-18 18:13:21 +08:00
56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Net;
|
|
using System.Text;
|
|
using Netch.Forms;
|
|
using Netch.Properties;
|
|
|
|
namespace Netch.Utils.HttpProxyHandler
|
|
{
|
|
/// <summary>
|
|
/// 提供PAC功能支持
|
|
/// </summary>
|
|
class PACUtil
|
|
{
|
|
private static readonly IEnumerable<char> IgnoredLineBegins = new[] {'!', '['};
|
|
|
|
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;
|
|
}
|
|
|
|
public static string UnGzip(byte[] buf)
|
|
{
|
|
byte[] buffer = new byte[1024];
|
|
int n;
|
|
using (MemoryStream sb = new MemoryStream())
|
|
{
|
|
using (GZipStream input = new GZipStream(new MemoryStream(buf),
|
|
CompressionMode.Decompress,
|
|
false))
|
|
{
|
|
while ((n = input.Read(buffer, 0, buffer.Length)) > 0)
|
|
{
|
|
sb.Write(buffer, 0, n);
|
|
}
|
|
}
|
|
return System.Text.Encoding.UTF8.GetString(sb.ToArray());
|
|
}
|
|
}
|
|
}
|
|
} |