mirror of
https://github.com/mm201/pkmn-classic-framework.git
synced 2026-03-28 12:44:46 -05:00
64 lines
2.1 KiB
C#
64 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Net.Sockets;
|
|
using System.Threading;
|
|
using System.IO;
|
|
using System.Net.Security;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Net;
|
|
|
|
namespace sslProxy
|
|
{
|
|
class Program
|
|
{
|
|
public static X509Certificate2 m_cert;
|
|
static void Main(string[] args)
|
|
{
|
|
TcpListener listener = new TcpListener(new IPAddress(new byte[]{10, 211, 55, 8}), 12401);
|
|
Directory.CreateDirectory("log");
|
|
m_cert = new X509Certificate2("iis private key.pfx", "letmein");
|
|
|
|
// turn off cert validation entirely...
|
|
// http://stackoverflow.com/questions/777607/the-remote-certificate-is-invalid-according-to-the-validation-procedure-using
|
|
|
|
listener.Start();
|
|
Console.WriteLine("Waiting for connection...");
|
|
while (true)
|
|
{
|
|
if (!listener.Pending())
|
|
{
|
|
Thread.Sleep(5);
|
|
continue;
|
|
}
|
|
|
|
BeginConversation(listener.AcceptTcpClient());
|
|
}
|
|
}
|
|
|
|
static void BeginConversation(TcpClient client)
|
|
{
|
|
Console.WriteLine("Received connection from {0}", client.Client.AddressFamily);
|
|
|
|
SslStream sslClient = new SslStream(client.GetStream());
|
|
sslClient.AuthenticateAsServer(m_cert);
|
|
|
|
TcpClient server = new TcpClient("pkgdsprod.nintendo.co.jp", 12401);
|
|
SslStream sslServer = new SslStream(server.GetStream(), false, delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; });
|
|
sslServer.AuthenticateAsClient("pkgdsprod.nintendo.co.jp");
|
|
|
|
ThreadPool.QueueUserWorkItem(delegate(object state)
|
|
{
|
|
sslServer.CopyTo(sslClient);
|
|
});
|
|
|
|
ThreadPool.QueueUserWorkItem(delegate(object state)
|
|
{
|
|
sslClient.CopyTo(sslServer);
|
|
});
|
|
|
|
}
|
|
}
|
|
}
|