Esempio n. 1
0
            public override IOutputStream Create(
                Stream input_stream,
                Stream output_stream,
                EndPoint remote_endpoint,
                Guid channel_id,
                byte[] header)
            {
                HTTPRequest request = null;
                long        bytes   = 0;

                using (var stream = new MemoryStream(header)) {
                    try {
                        request = HTTPRequestReader.Read(stream);
                        bytes   = stream.Position;
                    }
                    catch (EndOfStreamException) {
                    }
                }
                return(new APIHostOutputStream(
                           owner,
                           PeerCast,
                           input_stream,
                           output_stream,
                           remote_endpoint,
                           request,
                           header.Skip((int)bytes).ToArray()));
            }
Esempio n. 2
0
        protected override NetworkStreamMonitor[] CreateAndLinkStreamMonitors(eExNetworkLibrary.Sockets.NetworkStream nsAlice, eExNetworkLibrary.Sockets.NetworkStream nsBob)
        {
            HTTPRequestReader  reqReader  = new HTTPRequestReader(nsBob);
            HTTPResponseReader respReader = new HTTPResponseReader(nsAlice);

            reqReader.HTTPRequestCaptured   += new EventHandler <HTTPReaderEventArgs>(reqReader_HTTPRequestCaptured);
            respReader.HTTPResponseCaptured += new EventHandler <HTTPReaderEventArgs>(respReader_HTTPResponseCaptured);

            return(new NetworkStreamMonitor[] { reqReader, respReader });
        }
Esempio n. 3
0
            public override IOutputStream Create(
                Stream input_stream,
                Stream output_stream,
                EndPoint remote_endpoint,
                Guid channel_id,
                byte[] header)
            {
                HTTPRequest request = null;

                using (var stream = new MemoryStream(header)) {
                    try {
                        request = HTTPRequestReader.Read(stream);
                    }
                    catch (EndOfStreamException) {
                    }
                }
                return(new HTMLHostOutputStream(owner, PeerCast, input_stream, output_stream, remote_endpoint, request));
            }
Esempio n. 4
0
 public override Guid?ParseChannelID(byte[] header)
 {
     using (var stream = new MemoryStream(header)) {
         var req = HTTPRequestReader.Read(stream);
         if (req == null)
         {
             return(null);
         }
         if (FindApplication(req.Uri) != null)
         {
             return(Guid.Empty);
         }
         else
         {
             return(null);
         }
     }
 }
Esempio n. 5
0
            public override Guid?ParseChannelID(byte[] header)
            {
                HTTPRequest res = null;

                using (var stream = new MemoryStream(header)) {
                    try {
                        res = HTTPRequestReader.Read(stream);
                    }
                    catch (EndOfStreamException) {
                    }
                }
                if (res != null && res.Uri.AbsolutePath.StartsWith(this.owner.VirtualPath))
                {
                    return(Guid.Empty);
                }
                else
                {
                    return(null);
                }
            }
Esempio n. 6
0
            public override IOutputStream Create(
                Stream input_stream,
                Stream output_stream,
                EndPoint remote_endpoint,
                AccessControlInfo access_control,
                Guid channel_id,
                byte[] header)
            {
                HTTPRequest request = null;

                using (var stream = new MemoryStream(header)) {
                    try {
                        request = HTTPRequestReader.Read(stream);
                    }
                    catch (EndOfStreamException) {
                    }
                    catch (InvalidDataException) {
                    }
                }
                return(new AdminHostOutputStream(owner, PeerCast, input_stream, output_stream, remote_endpoint, access_control, request));
            }
Esempio n. 7
0
            public override Guid?ParseChannelID(byte[] header)
            {
                HTTPRequest res = null;

                using (var stream = new MemoryStream(header)) {
                    try {
                        res = HTTPRequestReader.Read(stream);
                    }
                    catch (EndOfStreamException) {
                    }
                    catch (InvalidDataException) {
                    }
                }
                if (res != null && res.Uri.AbsolutePath == "/admin")
                {
                    return(Guid.Empty);
                }
                else
                {
                    return(null);
                }
            }
Esempio n. 8
0
 public override IOutputStream Create(
     Stream input_stream,
     Stream output_stream,
     EndPoint remote_endpoint,
     AccessControlInfo access_control,
     Guid channel_id,
     byte[] header)
 {
     using (var stream = new MemoryStream(header)) {
         var req         = HTTPRequestReader.Read(stream);
         var bytes       = stream.Position;
         var application = FindApplication(req.Uri);
         return(new OWINHostOutputStream(
                    PeerCast,
                    input_stream,
                    output_stream,
                    remote_endpoint,
                    access_control,
                    req,
                    header.Skip((int)bytes).ToArray(),
                    application));
     }
 }
Esempio n. 9
0
            public override Guid?ParseChannelID(byte[] header)
            {
                HTTPRequest res = null;

                using (var stream = new MemoryStream(header)) {
                    try {
                        res = HTTPRequestReader.Read(stream);
                    }
                    catch (EndOfStreamException) {
                    }
                    catch (InvalidDataException) {
                    }
                }
                if (res != null &&
                    (this.owner.VirtualPhysicalPathMap.Any(kv => res.Uri.AbsolutePath.StartsWith(kv.Key)) ||
                     res.Uri.AbsolutePath == "/"))
                {
                    return(Guid.Empty);
                }
                else
                {
                    return(null);
                }
            }