Example #1
0
        protected override void OnIncomingRequest(IncomingRequestEventArgs e)
        {
            base.OnIncomingRequest(e);

            if(e.Action == "/patch" && e.Headers["Host"] == "us.patch.battle.net:1119")
            {
                e.ResponseCode = 204;
                e.ResponseCodeDescription = "No Content";
                e.ResponseHeaders.Add("Connection", "close");
            }
        }
Example #2
0
        private static void HandleUpdateLauncher(IncomingRequestEventArgs e)
        {
            e.ResponseHeaders.Add("Server", "Apache/2.2.3 (Red Hat)");
            e.ResponseHeaders.Add("Last-Modified", "Tue, 21 Sep 2010 19:00:25 GMT");
            e.ResponseHeaders.Add("ETag", "\"130001b-11-490c9a43b0440\"");
            e.ResponseHeaders.Add("Accept-Ranges", "bytes");
            e.ResponseHeaders.Add("Content-Type", "text/plain");

            e.ResponseStream = new MemoryStream();
            var writer = new StreamWriter(e.ResponseStream);
            {
                writer.Write("Scan\n");
                writer.Write("2.2.61.24\n");
            }
        }
Example #3
0
        protected override void OnIncomingRequest(IncomingRequestEventArgs e)
        {
            base.OnIncomingRequest(e);

            var host = e.Headers["Host"];
            switch(host)
            {
                case "us.scan.worldofwarcraft.com":
                    if (e.Uri == "/update/Launcher.txt")
                        HandleUpdateLauncher(e);
                    break;
                case "enUS.nydus.battle.net":
                case "us.version.blizzard.com":
                case "us.launcher.battle.net":
                    break;
            }
        }
Example #4
0
        private static bool SendHttpResponse(NetworkStream writer, IncomingRequestEventArgs ir, int bufferSize)
        {
            if (!writer.CanWrite)
                    return false;

                // Respond
                var head = new StringBuilder();
                head.AppendFormat("HTTP/1.1 {0} {1}\r\n", ir.ResponseCode, ir.ResponseCodeDescription);

                foreach (var header in ir.ResponseHeaders)
                    head.AppendFormat("{0}: {1}\n", header.Key, header.Value);

                try
                {
                    head.AppendFormat("Content-Length: {0}\r\n",
                                      (ir.ResponseStream != null ? ir.ResponseStream.Length : 0));
                }
                catch (NotSupportedException)
                {
                    // Length is not supported... no big deal just don't send it
                }

                head.Append("\r\n");

                byte[] headBuffer = Encoding.ASCII.GetBytes(head.ToString());
                writer.Write(headBuffer, 0, headBuffer.Length);
                writer.Flush();

                if (ir.ResponseStream != null)
                {
                    using (ir.ResponseStream)
                    {
                        var buffer = new byte[bufferSize];
                        while (true)
                        {
                            int read = ir.ResponseStream.Read(buffer, 0, bufferSize);
                            if (read <= 0)
                                break;

                            writer.Write(buffer, 0, read);
                            writer.Flush();
                        }
                    }
                }

                return true;
        }
Example #5
0
 protected virtual void OnRequestComplete(IncomingRequestEventArgs e, bool success)
 {
     var handler = this.RequestComplete;
     if (handler != null)
         handler(e, success);
 }
Example #6
0
 protected virtual void OnIncomingRequest(IncomingRequestEventArgs args)
 {
     var callback = this.IncomingRequest;
     if (callback != null)
         callback(this, args);
 }