Exemple #1
0
        /// <summary>
        /// Adds a request to the current Traffic Viewer File
        /// </summary>
        /// <param name="request"></param>
        /// <param name="description"></param>
        private void AddAppScanRequest(XmlNode request, string description)
        {
            TVRequestInfo reqInfo = new TVRequestInfo();

            reqInfo.Description = description;
            reqInfo.IsHttps     = request.Attributes["scheme"] != null && request.Attributes["scheme"].Equals("https");
            reqInfo.ThreadId    = Properties.Resources.Settings;

            XmlNode rawRequestNode = request.SelectSingleNode("raw");

            byte[] rawRequestBytes = new byte[0];
            if (rawRequestNode.Attributes["encoding"] != null && rawRequestNode.Attributes["encoding"].Value.Equals("none"))
            {
                string rawRequest = String.Empty;
                rawRequest      = rawRequestNode.InnerText;
                rawRequestBytes = Constants.DefaultEncoding.GetBytes(rawRequest);
            }
            reqInfo.RequestLine = HttpRequestInfo.GetRequestLine(rawRequestBytes);
            reqInfo.Id          = _tvFile.AddRequestInfo(reqInfo);
            _tvFile.SaveRequest(reqInfo.Id, rawRequestBytes);

            XmlNode response = request.SelectSingleNode("response");

            //put together the response

            if (response != null)
            {
                ByteArrayBuilder builder     = new ByteArrayBuilder();
                XmlNode          headersNode = response.SelectSingleNode("headers");
                if (headersNode != null && headersNode.Attributes["value"] != null)
                {
                    builder.AddChunkReference(Constants.DefaultEncoding.GetBytes(headersNode.Attributes["value"].Value));
                }

                XmlNode bodyNode = response.SelectSingleNode("body");
                if (bodyNode != null)
                {
                    bool isCompressed = bodyNode.Attributes["compressedBinaryValue"] != null && bodyNode.Attributes["compressedBinaryValue"].Value == "true";


                    string body      = bodyNode.Attributes["value"].Value;
                    byte[] bodyBytes = new byte[0];
                    if (isCompressed)
                    {
                        bodyBytes = Utils.DecompressBytesFromBase64String(body);
                    }
                    else
                    {
                        body      = Utils.Base64Decode(body);
                        bodyBytes = Constants.DefaultEncoding.GetBytes(body);
                    }
                    builder.AddChunkReference(bodyBytes);
                }
                _tvFile.SaveResponse(reqInfo.Id, builder.ToArray());
            }
        }
        private void TrafficViewSaveRequested(RequestTrafficViewSaveArgs e)
        {
            if (_currentId > -1)
            {
                //update the request info
                //parse the data
                HttpRequestInfo reqInfo = new HttpRequestInfo(e.Request);
                _responseBytes = Constants.DefaultEncoding.GetBytes(e.Response);
                HttpResponseInfo respInfo = new HttpResponseInfo();
                respInfo.ProcessResponse(_responseBytes);

                TVRequestInfo currentTVInfo = _dataSource.GetRequestInfo(_currentId);

                //do not set the dom uniqueness id, needs to be explicitly calculated
                currentTVInfo.DomUniquenessId = String.Empty;
                currentTVInfo.RequestLine     = reqInfo.RequestLine;
                currentTVInfo.RequestTime     = DateTime.Now;
                currentTVInfo.ResponseStatus  = respInfo.Status.ToString();
                currentTVInfo.ResponseTime    = DateTime.Now;
                currentTVInfo.Description     = "Traffic Viewer Request";
                currentTVInfo.ThreadId        = "[0000]";

                //convert the strings to bytes
                RequestResponseBytes reqData = new RequestResponseBytes();
                reqData.AddToRequest(Constants.DefaultEncoding.GetBytes(e.Request));
                reqData.AddToResponse(_responseBytes);

                //save the requests to the current data source
                _dataSource.SaveRequest(_currentId, reqData);
                _dataSource.SaveResponse(_currentId, reqData);

                _requestText  = e.Request;
                _responseText = e.Response;
            }
        }
        private void SaveThreadRequests(ThreadInfo threadInfo)
        {
            foreach (KeyValuePair <int, RequestResponseBytes> request in threadInfo.CurrentRequests)
            {
                TVRequestInfo header = _trafficViewerFile.GetRequestInfo(request.Key);
                if (header != null)
                {
                    if (request.Value.RequestSize > header.RequestLength)
                    {
                        _trafficViewerFile.SaveRequest(request.Key, request.Value);
                    }

                    if (request.Value.ResponseSize > header.ResponseLength)
                    {
                        _trafficViewerFile.SaveResponse(request.Key, request.Value);
                    }

                    _thisSessionRequestCount++;
                }
            }
        }
Exemple #4
0
        private void UpdateRequest(object sender, EventArgs e)
        {
            try
            {
                _curReqInfo.PathVariables.Clear();
                _curReqInfo.QueryVariables.Clear();
                _curReqInfo.BodyVariables.Clear();
                _curReqInfo.Cookies.Clear();
                _curReqInfo.Headers = new HTTPHeaders();

                var entities = _gridParameters.GetValues();
                foreach (var entity in entities)
                {
                    string[] values = entity.Split(Constants.VALUES_SEPARATOR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    if (values.Length == 3)
                    {
                        if (values[0].Equals(RequestLocation.Path.ToString(), StringComparison.OrdinalIgnoreCase))
                        {
                            _curReqInfo.PathVariables[values[1]] = Utils.UrlEncode(values[2]);
                        }
                        else if (values[0].Equals(RequestLocation.Query.ToString(), StringComparison.OrdinalIgnoreCase))
                        {
                            _curReqInfo.QueryVariables[values[1]] = Utils.UrlEncode(values[2]);
                        }
                        else if (values[0].Equals(RequestLocation.Body.ToString(), StringComparison.OrdinalIgnoreCase))
                        {
                            if (_curIsBodyEncoded)
                            {
                                values[2] = Utils.UrlEncode(values[2]);
                            }
                            _curReqInfo.BodyVariables[values[1]] = values[2];
                        }
                        else if (values[0].Equals(RequestLocation.Cookies.ToString(), StringComparison.OrdinalIgnoreCase))
                        {
                            _curReqInfo.SetCookie(values[1], Utils.UrlEncode(values[2]));
                        }
                        else if (values[0].Equals(RequestLocation.Headers.ToString(), StringComparison.OrdinalIgnoreCase))
                        {
                            _curReqInfo.Headers[values[1]] = values[2];
                        }
                    }
                }

                _curAccessor.SaveRequest(_curReqId, _curReqInfo.ToArray());
            }
            catch (Exception ex)
            {
                ErrorBox.ShowDialog(ex.Message);
            }
        }
Exemple #5
0
        private void AddRequest(ITrafficDataAccessor currentFile, Uri uri, string fullQuery, string format)
        {
            string          request     = String.Format(format, uri.AbsolutePath, fullQuery, uri.Host, uri.Port);
            HttpRequestInfo requestInfo = new HttpRequestInfo(request);
            TVRequestInfo   tvReqInfo   = new TVRequestInfo();

            tvReqInfo.Description = Resources.UriParserDescription;
            tvReqInfo.RequestLine = HttpRequestInfo.GetRequestLine(request);
            tvReqInfo.ThreadId    = "N/A";
            tvReqInfo.RequestTime = DateTime.Now;
            tvReqInfo.IsHttps     = String.Compare(uri.Scheme, "https", true) == 0;
            currentFile.AddRequestInfo(tvReqInfo);
            currentFile.SaveRequest(tvReqInfo.Id, requestInfo.ToArray(false));
        }
Exemple #6
0
        /// <summary>
        /// Adds a request to the data accessor
        /// </summary>
        /// <param name="request"></param>
        private void AddHttpRequest(HttpRequestInfo request)
        {
            var reqInfo = new TVRequestInfo();

            reqInfo.Host    = request.Host;
            reqInfo.IsHttps = request.IsSecure;

            byte [] rawRequest = request.ToArray();

            reqInfo.RequestLine = HttpRequestInfo.GetRequestLine(rawRequest);
            reqInfo.Description = "Script Explore";

            var id = _curDataAccessor.AddRequestInfo(reqInfo);

            _curDataAccessor.SaveRequest(id, rawRequest);
        }
        /// <summary>
        /// Sends the specified request info
        /// </summary>
        /// <param name="source"></param>
        /// <param name="info"></param>
        private void SendRequest(ITrafficDataAccessor source, TVRequestInfo info)
        {
            byte[] reqBytes       = source.LoadRequestData(info.Id);
            string updatedRequest = PatternTracker.Instance.UpdateRequest(Constants.DefaultEncoding.GetString(reqBytes));

            HttpRequestInfo reqInfo = new HttpRequestInfo(updatedRequest);

            reqInfo.IsSecure = info.IsHttps;

            _sessionIdHelper.UpdateSessionIds(reqInfo, _prevRequest, _prevResponse);


            info.RequestTime = DateTime.Now;
            //save the request that will be sent
            source.SaveRequest(info.Id, Constants.DefaultEncoding.GetBytes(updatedRequest));
            try
            {
                _prevResponse = _httpClient.SendRequest(reqInfo);

                _prevRequest = reqInfo;

                //save the request and response
                if (_prevResponse != null)
                {
                    info.ResponseTime = DateTime.Now;
                    PatternTracker.Instance.UpdatePatternValues(_prevResponse);
                    source.SaveResponse(info.Id, _prevResponse.ToArray());
                }
                else
                {
                    source.SaveResponse(info.Id, Constants.DefaultEncoding.GetBytes(_communicationError));
                }
            }
            catch (Exception ex)
            {
                SdkSettings.Instance.Logger.Log(TraceLevel.Error, "Error playing back request {0}", ex.Message);
                source.SaveResponse(info.Id, Constants.DefaultEncoding.GetBytes(Resources.CommunicationError));
            }
        }