Browse Source

add commented code of auto proxy type choosing, not enabled now

tags/2.3
clowwindy 10 years ago
parent
commit
cec8378fea
1 changed files with 34 additions and 4 deletions
  1. +34
    -4
      shadowsocks-csharp/Controller/PACServer.cs

+ 34
- 4
shadowsocks-csharp/Controller/PACServer.cs View File

@@ -15,6 +15,7 @@ namespace Shadowsocks.Controller
{
private static int PORT = 8090;
private static string PAC_FILE = "pac.txt";
private static Configuration config;
Socket _listener;
FileSystemWatcher watcher;
@@ -25,6 +26,7 @@ namespace Shadowsocks.Controller
{
try
{
config = configuration;
// Create a TCP/IP socket.
_listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_listener.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
@@ -84,8 +86,14 @@ namespace Shadowsocks.Controller
new AsyncCallback(AcceptCallback),
listener);
conn.BeginReceive(new byte[1024], 0, 1024, 0,
new AsyncCallback(ReceiveCallback), conn);
byte[] buf = new byte[2048];
object[] state = new object[] {
conn,
buf
};
conn.BeginReceive(buf, 0, 1024, 0,
new AsyncCallback(ReceiveCallback), state);
}
catch (ObjectDisposedException)
{
@@ -123,7 +131,10 @@ namespace Shadowsocks.Controller
private void ReceiveCallback(IAsyncResult ar)
{
Socket conn = (Socket)ar.AsyncState;
object[] state = (object[])ar.AsyncState;
Socket conn = (Socket)state[0];
byte[] requestBuf = (byte[])state[1];
try
{
int bytesRead = conn.EndReceive(ar);
@@ -132,7 +143,7 @@ namespace Shadowsocks.Controller
IPEndPoint localEndPoint = (IPEndPoint)conn.LocalEndPoint;
string proxy = "PROXY " + localEndPoint.Address + ":8123;";
string proxy = GetPACAddress(requestBuf, localEndPoint);
pac = pac.Replace("__PROXY__", proxy);
@@ -189,5 +200,24 @@ Connection: Close
PACFileChanged(this, new EventArgs());
}
}
private string GetPACAddress(byte[] requestBuf, IPEndPoint localEndPoint)
{
string proxy = "PROXY " + localEndPoint.Address + ":8123;";
//try
//{
// string requestString = Encoding.UTF8.GetString(requestBuf);
// if (requestString.IndexOf("AppleWebKit") >= 0)
// {
// string address = "" + localEndPoint.Address + ":" + config.GetCurrentServer().local_port;
// proxy = "SOCKS5 " + address + "; SOCKS " + address + ";";
// }
//}
//catch (Exception e)
//{
// Console.WriteLine(e);
//}
return proxy;
}
}
}

Loading…
Cancel
Save