Пример #1
0
        private void SocketThreadSub(Stream clientStream)
        {
            using (var req = ProxyRequest.Parse(clientStream, false))
            {
                Tunnel t = null;

                // HTTPS
                if (req.Method == "CONNECT")
                {
                    // 호스트 확인하고 처리
                    var host = req.RemoteHost;

                    switch (host)
                    {
                    case "userstream.twitter.com":
                        t = new TunnelSslMitm(req, clientStream, Certificates.Client, this.HostStreaming);
                        break;

                    case "api.twitter.com":
                        t = new TunnelSslMitm(req, clientStream, Certificates.Client, this.HostAPI);
                        break;

                    default:
                        t = new TunnelSslForward(req, clientStream);
                        break;
                    }
                }

                // HTTP
                else
                {
                    t = new TunnelPlain(req, clientStream);
                }

                using (t)
                    t.Handle();
            }
        }