Beispiel #1
0
        private async Task ProxyServer_BeforeResponse(object sender, SessionEventArgs e)
        {
            SessionListItem item = null;
            await Dispatcher.InvokeAsync(() =>
            {
                if (sessionDictionary.TryGetValue(e.WebSession, out item))
                {
                    item.Update();
                }
            });

            if (item != null)
            {
                if (e.WebSession.Response.HasBody)
                {
                    e.WebSession.Response.KeepBody = true;
                    await e.GetResponseBody();

                    await Dispatcher.InvokeAsync(() => { item.Update(); });
                }
            }
        }
        private SessionListItem CreateSessionListItem(SessionEventArgs e)
        {
            lastSessionNumber++;
            var item = new SessionListItem
            {
                Number      = lastSessionNumber,
                SessionArgs = e,
                // save the headers because TWP will set it to null in Dispose
                RequestHeaders  = e.WebSession.Request.RequestHeaders,
                ResponseHeaders = e.WebSession.Response.ResponseHeaders,
                Request         = e.WebSession.Request,
                Response        = e.WebSession.Response,
            };

            if (e is TunnelConnectSessionEventArgs || e.WebSession.Request.UpgradeToWebSocket)
            {
                e.DataReceived += (sender, args) =>
                {
                    var             session = (SessionEventArgs)sender;
                    SessionListItem li;
                    if (sessionDictionary.TryGetValue(session, out li))
                    {
                        li.ReceivedDataCount += args.Count;
                    }
                };

                e.DataSent += (sender, args) =>
                {
                    var             session = (SessionEventArgs)sender;
                    SessionListItem li;
                    if (sessionDictionary.TryGetValue(session, out li))
                    {
                        li.SentDataCount += args.Count;
                    }
                };
            }

            item.Update();
            return(item);
        }
Beispiel #3
0
        private SessionListItem CreateSessionListItem(SessionEventArgsBase e)
        {
            lastSessionNumber++;
            bool isTunnelConnect = e is TunnelConnectSessionEventArgs;
            var  item            = new SessionListItem
            {
                Number          = lastSessionNumber,
                WebSession      = e.WebSession,
                IsTunnelConnect = isTunnelConnect
            };

            if (!isTunnelConnect || e.WebSession.Request.UpgradeToWebSocket)
            {
                e.DataReceived -= ReceivedData;
                e.DataReceived += ReceivedData;

                e.DataSent -= SentData;
                e.DataSent += SentData;
            }

            item.Update();
            return(item);
        }
Beispiel #4
0
        private SessionListItem CreateSessionListItem(SessionEventArgs e)
        {
            lastSessionNumber++;
            bool isTunnelConnect = e is TunnelConnectSessionEventArgs;
            var  item            = new SessionListItem
            {
                Number          = lastSessionNumber,
                WebSession      = e.WebSession,
                IsTunnelConnect = isTunnelConnect,
            };

            if (isTunnelConnect || e.WebSession.Request.UpgradeToWebSocket)
            {
                e.DataReceived += (sender, args) =>
                {
                    var             session = (SessionEventArgs)sender;
                    SessionListItem li;
                    if (sessionDictionary.TryGetValue(session.WebSession, out li))
                    {
                        li.ReceivedDataCount += args.Count;
                    }
                };

                e.DataSent += (sender, args) =>
                {
                    var             session = (SessionEventArgs)sender;
                    SessionListItem li;
                    if (sessionDictionary.TryGetValue(session.WebSession, out li))
                    {
                        li.SentDataCount += args.Count;
                    }
                };
            }

            item.Update();
            return(item);
        }