}\r
}\r
\r
- private void Process(Object obj)\r
+ private void Process(object obj)\r
{\r
var client = (Socket)obj;\r
var data = new byte[4096];\r
var from = DateTime.MinValue;\r
var to = DateTime.MaxValue;\r
+ var port = 8080;\r
try\r
{\r
if (client.Receive(data) == 0)\r
double.TryParse(query["to"], out tick);\r
to = new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(tick / 1000);\r
}\r
+ if (query["port"] != null)\r
+ {\r
+ port = int.Parse(query["port"]);\r
+ }\r
}\r
\r
path = path == "/" ? "index.html" : path.Substring(1);\r
SendFile(client, full, "application/javascript");\r
return;\r
}\r
+ if (path.EndsWith("proxy.pac"))\r
+ {\r
+ SendProxyPac(client, port);\r
+ return;\r
+ }\r
SendError(client, "404 Not Found");\r
}\r
catch (IOException)\r
}\r
}\r
\r
+ private void SendProxyPac(Socket client, int port)\r
+ {\r
+ var header = new StreamWriter(new MemoryStream(), Encoding.ASCII);\r
+ header.Write("HTTP/1.1 200 OK\r\n");\r
+ header.Write("Server: KancolleSniffer\r\n");\r
+ header.Write("Date: {0:R}\r\n", DateTime.Now);\r
+ header.Write("Content-Type: {0}\r\n", "application/x-ns-proxy-autoconfig");\r
+ header.Write("Connection: close\r\n\r\n");\r
+ header.Flush();\r
+ client.Send(((MemoryStream)header.BaseStream).ToArray());\r
+\r
+ var pacfile = @"\r
+function FindProxyForURL(url, host) {\r
+ if(isInNet(host, ""203.104.209.71"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.184.15"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.184.16"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.187.205"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.187.229"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.187.253"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.188.25"", ""255.255.255.255"") ||\r
+ isInNet(host, ""203.104.248.135"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.7"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.39"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.71"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.103"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.135"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.167"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.215"", ""255.255.255.255"") ||\r
+ isInNet(host, ""125.6.189.247"", ""255.255.255.255"") ||\r
+ isInNet(host, ""203.104.209.23"", ""255.255.255.255"") ||\r
+ isInNet(host, ""203.104.209.39"", ""255.255.255.255"") ||\r
+ isInNet(host, ""203.104.209.55"", ""255.255.255.255"") ||\r
+ isInNet(host, ""203.104.209.102"", ""255.255.255.255"") ||\r
+ isInNet(host, ""203.104.209.87"", ""255.255.255.255"")) {\r
+ return ""PROXY 127.0.0.1:8080"";\r
+ }\r
+ else {\r
+ return ""DIRECT"";\r
+ }\r
+}".Replace("8080", port.ToString());\r
+ client.Send(Encoding.ASCII.GetBytes(pacfile));\r
+ }\r
+\r
public void Stop()\r
{\r
IsListening = false;\r