|
|
@@ -6,8 +6,20 @@ using System.Text; |
|
|
|
|
|
|
|
namespace Shadowsocks.Controller |
|
|
|
{ |
|
|
|
class RequestAddUrlEventArgs : EventArgs |
|
|
|
{ |
|
|
|
public readonly string Url; |
|
|
|
|
|
|
|
public RequestAddUrlEventArgs(string url) |
|
|
|
{ |
|
|
|
this.Url = url; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
internal class PipeServer |
|
|
|
{ |
|
|
|
public event EventHandler<RequestAddUrlEventArgs> AddUrlRequested; |
|
|
|
public async void Run(string path) |
|
|
|
{ |
|
|
|
byte[] buf = new byte[4096]; |
|
|
@@ -17,10 +29,17 @@ namespace Shadowsocks.Controller |
|
|
|
{ |
|
|
|
stream.WaitForConnection(); |
|
|
|
await stream.ReadAsync(buf, 0, 4); |
|
|
|
int strlen = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buf, 0)); |
|
|
|
await stream.ReadAsync(buf, 0, strlen); |
|
|
|
string url = Encoding.UTF8.GetString(buf, 0, strlen); |
|
|
|
Console.WriteLine(url); |
|
|
|
int opcode = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buf, 0)); |
|
|
|
if (opcode == 1) |
|
|
|
{ |
|
|
|
await stream.ReadAsync(buf, 0, 4); |
|
|
|
int strlen = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buf, 0)); |
|
|
|
|
|
|
|
await stream.ReadAsync(buf, 0, strlen); |
|
|
|
string url = Encoding.UTF8.GetString(buf, 0, strlen); |
|
|
|
|
|
|
|
AddUrlRequested?.Invoke(this, new RequestAddUrlEventArgs(url)); |
|
|
|
} |
|
|
|
stream.Close(); |
|
|
|
} |
|
|
|
} |
|
|
|