scripts
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace System.Net.Sockets
|
||||
{
|
||||
// Token: 0x020001F3 RID: 499
|
||||
internal static class SocketPolicyClient
|
||||
{
|
||||
// Token: 0x060010BE RID: 4286 RVA: 0x00030878 File Offset: 0x0002EA78
|
||||
private static void Log(string msg)
|
||||
{
|
||||
Console.WriteLine(string.Concat(new object[]
|
||||
{
|
||||
"SocketPolicyClient",
|
||||
SocketPolicyClient.session,
|
||||
": ",
|
||||
msg
|
||||
}));
|
||||
}
|
||||
|
||||
// Token: 0x060010BF RID: 4287 RVA: 0x000308AC File Offset: 0x0002EAAC
|
||||
private static Stream GetPolicyStreamForIP(string ip, int policyport, int timeout)
|
||||
{
|
||||
SocketPolicyClient.session++;
|
||||
SocketPolicyClient.Log("Incoming GetPolicyStreamForIP");
|
||||
IPEndPoint ipendPoint = new IPEndPoint(IPAddress.Parse(ip), policyport);
|
||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
byte[] array = new byte[5000];
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
try
|
||||
{
|
||||
SocketPolicyClient.Log("About to BeginConnect to " + ipendPoint);
|
||||
IAsyncResult asyncResult = socket.BeginConnect(ipendPoint, null, null, false);
|
||||
SocketPolicyClient.Log("About to WaitOne");
|
||||
DateTime now = DateTime.Now;
|
||||
if (!asyncResult.AsyncWaitHandle.WaitOne(timeout))
|
||||
{
|
||||
SocketPolicyClient.Log("WaitOne timed out. Duration: " + (DateTime.Now - now).TotalMilliseconds);
|
||||
socket.Close();
|
||||
throw new Exception("BeginConnect timed out");
|
||||
}
|
||||
socket.EndConnect(asyncResult);
|
||||
SocketPolicyClient.Log("Socket connected");
|
||||
byte[] bytes = Encoding.ASCII.GetBytes("<policy-file-request/>\0");
|
||||
SocketError socketError;
|
||||
socket.Send_nochecks(bytes, 0, bytes.Length, SocketFlags.None, out socketError);
|
||||
if (socketError != SocketError.Success)
|
||||
{
|
||||
SocketPolicyClient.Log("Socket error: " + socketError);
|
||||
return memoryStream;
|
||||
}
|
||||
int num = socket.Receive_nochecks(array, 0, array.Length, SocketFlags.None, out socketError);
|
||||
if (socketError != SocketError.Success)
|
||||
{
|
||||
SocketPolicyClient.Log("Socket error: " + socketError);
|
||||
return memoryStream;
|
||||
}
|
||||
try
|
||||
{
|
||||
socket.Shutdown(SocketShutdown.Both);
|
||||
socket.Close();
|
||||
}
|
||||
catch (SocketException)
|
||||
{
|
||||
}
|
||||
memoryStream = new MemoryStream(array, 0, num);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SocketPolicyClient.Log("Caught exception: " + ex.Message);
|
||||
return memoryStream;
|
||||
}
|
||||
memoryStream.Seek(0L, SeekOrigin.Begin);
|
||||
return memoryStream;
|
||||
}
|
||||
|
||||
// Token: 0x04000F1C RID: 3868
|
||||
private const string policy_request = "<policy-file-request/>\0";
|
||||
|
||||
// Token: 0x04000F1D RID: 3869
|
||||
private static int session;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user