public BaseSelectedRequestEditorAction(TVRequestsList requestList, DataGridView dataGrid)
 {
     _requestList            = requestList;
     _dataGrid               = dataGrid;
     _dataSource             = requestList.DataSource;
     _requestEventsQueueSize = requestList.RequestEventsQueueSize;
 }
Exemple #2
0
		/// <summary>
		/// Exports data from the specified source to the specifies strems
		/// </summary>
		/// <param name="source"></param>
		/// <param name="stream"></param>
		/// <param name="overwriteScheme">Wether to overrite existing http scheme</param>
		/// <param name="isSSL">Wether the request is secure or not. This will overrite the http scheme of the request if applicable</param>
		/// <param name="newHost">New host for the request</param>
		/// <param name="newPort">New port for the request</param>
		protected virtual void Export(ITrafficDataAccessor source, Stream stream, bool overwriteScheme, bool isSSL, string newHost, int newPort)
		{
			TVRequestInfo info;
			int i = -1;

			string overridenScheme = isSSL ? "https" : "http";
			//using an xml writer for memory concerns
			XmlWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
			writer.WriteStartDocument();
			writer.WriteComment(String.Format("Automatically created by Traffic Viewer SDK at {0}", DateTime.Now));
			writer.WriteComment(String.Format("Number of requests in file {0}", source.RequestCount));
			writer.WriteStartElement("requests");

			while ((info = source.GetNext(ref i)) != null)
			{
				string scheme = info.IsHttps ? "https" : "http";
				scheme = overwriteScheme ? overridenScheme : scheme;

				//get the request information
				byte[] data = source.LoadRequestData(info.Id);
                if (data != null)
                {
					HttpRequestInfo reqInfo = new HttpRequestInfo(data);
					reqInfo.IsSecure = scheme == "https";
                    WriteRequest(writer, newHost, newPort, scheme, reqInfo);
                }
			}

			writer.WriteEndElement();
			writer.WriteEndDocument();
			writer.Flush();
		}
Exemple #3
0
        public ExternalBrowserListener(ITrafficDataAccessor source, BaseProxy proxy = null, bool hideControls = false)
        {
            InitializeComponent();

            if (hideControls)
            {
                _checkTrapReq.Visible = _checkTrapResp.Visible = _labelTrap.Visible = _textTrapMatch.Visible = _checkTrackReqContext.Visible = false;
                this.MinimumSize      = new Size(this.Width, this.Height / 2);
                this.Size             = this.MaximumSize = this.MinimumSize;
            }


            if (proxy != null)
            {
                _proxy = proxy;
            }
            else
            {
                _proxy = new AdvancedExploreProxy(TrafficViewer.Instance.Options.TrafficServerIp, TrafficViewer.Instance.Options.TrafficServerPort, source);
                if (TrafficViewerOptions.Instance.UseProxy)
                {
                    WebProxy webProxy = new WebProxy(TrafficViewerOptions.Instance.HttpProxyServer, TrafficViewerOptions.Instance.HttpProxyPort);
                    _proxy.NetworkSettings.WebProxy = webProxy;
                }

                _proxy.NetworkSettings.CertificateValidationCallback = new RemoteCertificateValidationCallback(SSLValidationCallback.ValidateRemoteCertificate);
            }
            StartProxy();
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="forwardingHost">The hosts thar requests will be sent to</param>
 /// <param name="forwardingPort">The forwarding port</param>
 /// <param name="host">The host of the proxy</param>
 /// <param name="port">The port of the proxy</param>
 /// <param name="dataStore">Data store where the requests will be saved</param>
 public ReverseProxy(string host, int port, int securePort, ITrafficDataAccessor dataStore) :
     base(host, port, securePort)
 {
     ExtraOptions.Add(ReverseProxy.FORWARDING_HOST_OPT, String.Empty);
     ExtraOptions.Add(ReverseProxy.FORWARDING_PORT_OPT, String.Empty);
     _dataStore = dataStore;
 }
Exemple #5
0
        public void TestLineSearchInRequestNoRegex()
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;
            string firstRequest      = "GET /a1 HTTP/1.1\r\nHeader1: a1";
            string secondRequest     = "GET /a2 HTTP/1.1\r\nHeader1: a2";

            tvf.AddRequestResponse(firstRequest, "HTTP 200 OK");
            tvf.AddRequestResponse(secondRequest, "HTTP 200 OK");

            Assert.AreEqual(2, tvf.RequestCount);

            LineSearcher searcher = new LineSearcher();
            LineMatches  result   = new LineMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.Request, false, "a1"));

            searcher.Search(tvf, criteriaSet, result);

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(0, result[0].RequestId);
            Assert.AreEqual(0, result[1].RequestId);

            Assert.AreEqual(1, result[0].MatchCoordinatesList.Count);
            Assert.AreEqual(1, result[1].MatchCoordinatesList.Count);

            Assert.AreEqual("a1", firstRequest.Substring(result[0].MatchCoordinatesList[0].MatchPosition, result[0].MatchCoordinatesList[0].MatchLength));
            Assert.AreEqual("a1", firstRequest.Substring(result[1].MatchCoordinatesList[0].MatchPosition, result[1].MatchCoordinatesList[0].MatchLength));
        }
Exemple #6
0
        public void TestRequestLineAfterReplace()
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;
            string firstRequest      = "GET http://site.com/a1 HTTP/1.1\r\nHeader1: a1";

            tvf.AddRequestResponse(firstRequest, String.Empty);

            TVRequestInfo reqInfo = tvf.GetRequestInfo(0);

            Assert.AreEqual("GET http://site.com/a1 HTTP/1.1", reqInfo.RequestLine);
            Assert.AreEqual(1, tvf.RequestCount);

            LineSearcher searcher = new LineSearcher();
            LineMatches  result   = new LineMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.RequestLine, true, "a1|a=2|<r>2</r>"));

            searcher.Search(tvf, criteriaSet, result);

            tvf.Replace(result, "replacement");

            firstRequest = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(0));

            Assert.AreEqual("GET http://site.com/replacement HTTP/1.1\r\nHeader1: a1", firstRequest);



            Assert.AreEqual("GET http://site.com/replacement HTTP/1.1", reqInfo.RequestLine);
        }
        /// <summary>
        /// Sends http request asynchroneusly
        /// </summary>
        /// <param name="param"></param>
        private void SendAsync(object param)
        {
            object[] paramArray = param as object[];
            if (paramArray == null || paramArray.Length != 2)
            {
                return;
            }
            ITrafficDataAccessor  source         = paramArray[0] as ITrafficDataAccessor;
            Queue <TVRequestInfo> requestsToSend = paramArray[1] as Queue <TVRequestInfo>;

            if (source == null || requestsToSend == null)
            {
                return;
            }
            while (true)
            {
                TVRequestInfo info = null;
                lock (_lock)
                {
                    if (requestsToSend.Count == 0)
                    {
                        return;
                    }
                    info = requestsToSend.Dequeue();
                }
                if (info != null)
                {
                    SendRequest(source, info);
                }
            }
        }
Exemple #8
0
        /// <summary>
        /// Executes the parsing operation
        /// </summary>
        /// <param name="pathOfFileToImport"></param>
        /// <param name="currentFile"></param>
        /// <param name="options"></param>
        public void Parse(string pathOfFileToImport, ITrafficDataAccessor currentFile, ParsingOptions options)
        {
            _options = options;
            var exclusions = options.GetExclusions();

            _status = TrafficParserStatus.Running;
            Har har = HarConvert.DeserializeFromFile(pathOfFileToImport);

            foreach (Entry entry in har.Log.Entries)
            {
                try
                {
                    if (!IsExcluded(entry.Request.Url, exclusions))
                    {
                        AddRequest(currentFile, entry);
                    }
                }
                catch (Exception ex)
                {
                    SdkSettings.Instance.Logger.Log(TraceLevel.Error, "URI Parser - Failed to add request: {0}", ex.Message);
                }
            }

            _status = TrafficParserStatus.Stopped;
        }
 /// <summary>
 /// Loads the entities view
 /// </summary>
 /// <param name="requestText"></param>
 /// <param name="responseText"></param>
 public void LoadEntitiesView(int requestId, ITrafficDataAccessor accessor, string requestText)
 {
     this.Invoke((MethodInvoker) delegate
     {
         _pageEntitiesView.LoadRequest(requestId, accessor, requestText);
     });
 }
Exemple #10
0
        public void TestLineSearchMultipleMatchesPerLineRegex()
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;

            string firstRequest  = "POST /a1/a1 HTTP/1.1\r\nHeader1: a1\r\n\r\na=1";
            string firstResponse = "HTTP 200 OK\r\n<r>1</r>";

            tvf.AddRequestResponse(firstRequest, firstResponse);


            Assert.AreEqual(1, tvf.RequestCount);

            LineSearcher searcher = new LineSearcher();
            LineMatches  result   = new LineMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.RequestLine, true, @"a\d"));

            searcher.Search(tvf, criteriaSet, result);

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(2, result[0].MatchCoordinatesList.Count);
        }
Exemple #11
0
        public void TestRequestSearchMultipleTexts()
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;
            string firstRequest      = "POST /a1 HTTP/1.1\r\nHeader1: a1\r\n\r\na=1";
            string secondRequest     = "POST /a2 HTTP/1.1\r\nHeader1: a2\r\n\r\na=1&b=2";
            string firstResponse     = "HTTP 200 OK\r\n<r>1</r>";
            string secondResponse    = "HTTP 200 OK\r\n<r>2</r>";

            tvf.AddRequestResponse(firstRequest, firstResponse);
            tvf.AddRequestResponse(secondRequest, secondResponse);

            Assert.AreEqual(2, tvf.RequestCount);

            RequestSearcher searcher = new RequestSearcher();
            RequestMatches  result   = new RequestMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.RequestBody, false, "a=1"));
            criteriaSet.Add(new SearchCriteria(SearchContext.RequestBody, false, "b=2"));
            searcher.Search(tvf, criteriaSet, result);

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(1, result[0]);
        }
        /// <summary>
        /// Gets a  memory stream to search in for the specified context
        /// </summary>
        /// <param name="dataSource"></param>
        /// <param name="header"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        protected MemoryStream GetMemoryStream(ITrafficDataAccessor dataSource, TVRequestInfo header, SearchContext context)
        {
            MemoryStream toBeSearched;

            if (context == SearchContext.Request || context == SearchContext.RequestBody)
            {
                toBeSearched = new MemoryStream(dataSource.LoadRequestData(header.Id));
            }
            else if (context == SearchContext.Response)
            {
                toBeSearched = new MemoryStream(dataSource.LoadResponseData(header.Id));
            }
            else
            {
                toBeSearched = new MemoryStream();
                byte[] data = dataSource.LoadRequestData(header.Id);
                toBeSearched.Write(data, 0, data.Length);
                data = Constants.DefaultEncoding.GetBytes(Environment.NewLine);
                toBeSearched.Write(data, 0, data.Length);
                data = dataSource.LoadResponseData(header.Id);
                toBeSearched.Write(data, 0, data.Length);
                //reset the prosition so readline can start from the beggining
                toBeSearched.Position = 0;
            }
            return(toBeSearched);
        }
Exemple #13
0
 /// <summary>
 /// Creates a connection that will forward the request to the specified host and port
 /// </summary>
 /// <param name="fwHost"></param>
 /// <param name="fwPort"></param>
 /// <param name="client"></param>
 /// <param name="isSecure"></param>
 /// <param name="dataStore"></param>
 /// <param name="networkSettings"></param>
 /// <param name="parentProxy"></param>
 public TrackingReverseProxyConnection(TcpClient client, bool isSecure, ITrafficDataAccessor dataStore, INetworkSettings networkSettings, IHttpProxy parentProxy)
     : base(client, isSecure, dataStore, Resources.TrackingReverseProxyDescription, networkSettings, false)
 {
     _dataStore       = dataStore;
     _parentProxy     = parentProxy;
     _networkSettings = networkSettings;
 }
        /// <summary>
        /// Performs a search
        /// </summary>
        /// <param name="dataSource">Traffic data accesssor</param>
        /// <param name="criteriaSet">Set of criteria for the search</param>
        /// <param name="result">The search result</param>
        public void Search(ITrafficDataAccessor dataSource, SearchCriteriaSet criteriaSet, ISearchResult result)
        {
            _stopSearch = false;
            //check the search results cache
            int        hash  = GetSearchHash(dataSource, criteriaSet);
            ICacheable entry = SearchResultCache.Instance.GetEntry(hash);

            ISearchResult cachedResult = null;

            if (entry != null)
            {
                cachedResult = entry.Reserve() as ISearchResult;
                entry.Release();
            }

            if (cachedResult == null)
            {
                //check for a subset
                SearchSubset subset = GetSearchSubset(criteriaSet);
                if (subset == null)
                {
                    FullSearch(dataSource, criteriaSet, result);
                }
                else
                {
                    SubsetSearch(dataSource, criteriaSet, result, subset);
                }
                //cache the search
                SearchResultCache.Instance.Add(hash, new CacheEntry(result));
            }
            else
            {
                result.AddRange(cachedResult);
            }
        }
Exemple #15
0
        private static void ReplaceTest(string replacement)
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;
            string firstRequest      = "GET /a1 HTTP/1.1\r\nHeader1: a1";
            string secondRequest     = "GET /a2 HTTP/1.1\r\nHeader1: a2";
            string firstResponse     = "HTTP 200 OK\r\n<r>1</r>";
            string secondResponse    = "HTTP 200 OK\r\n<r>2</r><tag><r>3</r>";

            tvf.AddRequestResponse(firstRequest, firstResponse);
            tvf.AddRequestResponse(secondRequest, secondResponse);

            Assert.AreEqual(2, tvf.RequestCount);

            LineSearcher searcher = new LineSearcher();
            LineMatches  result   = new LineMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.Full, true, @"a1|a=2|<r>\d</r>"));

            searcher.Search(tvf, criteriaSet, result);

            tvf.Replace(result, replacement);

            firstRequest   = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(0));
            secondRequest  = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(1));
            firstResponse  = Constants.DefaultEncoding.GetString(tvf.LoadResponseData(0));
            secondResponse = Constants.DefaultEncoding.GetString(tvf.LoadResponseData(1));

            Assert.AreEqual("GET /" + replacement + " HTTP/1.1\r\nHeader1: " + replacement, firstRequest);
            Assert.AreEqual("HTTP 200 OK\r\n" + replacement + "<tag>" + replacement, secondResponse);
        }
Exemple #16
0
        public void TestLineSearchInResponseRegex()
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;
            string firstRequest      = "POST /a1 HTTP/1.1\r\nHeader1: a1\r\n\r\na=1";
            string secondRequest     = "POST /a2 HTTP/1.1\r\nHeader1: a2\r\n\r\na=2";
            string firstResponse     = "HTTP 200 OK\r\n<r>1</r>";
            string secondResponse    = "HTTP 200 OK\r\n<r>2</r>";

            tvf.AddRequestResponse(firstRequest, firstResponse);
            tvf.AddRequestResponse(secondRequest, secondResponse);

            Assert.AreEqual(2, tvf.RequestCount);

            LineSearcher searcher = new LineSearcher();
            LineMatches  result   = new LineMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.Response, true, @"<r>\d+</r>|a1"));

            searcher.Search(tvf, criteriaSet, result);

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(0, result[0].RequestId);
            Assert.AreEqual(SearchContext.Response, result[0].Context);
            Assert.AreEqual(1, result[0].MatchCoordinatesList.Count);
            Assert.AreEqual("<r>2</r>", secondResponse.Substring(result[1].MatchCoordinatesList[0].MatchPosition, result[1].MatchCoordinatesList[0].MatchLength));
        }
Exemple #17
0
        public void TestReplaceInvalidCoords()
        {
            TrafficViewer.Instance.NewTvf();
            ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile;
            string firstRequest      = "GET /a1 HTTP/1.1\r\nHeader1: a1";
            string firstResponse     = "HTTP 200 OK\r\n<r>2</r><tag><r>3</r>";


            tvf.AddRequestResponse(firstRequest, firstResponse);

            LineSearcher searcher = new LineSearcher();
            LineMatches  result   = new LineMatches();

            SearchCriteriaSet criteriaSet = new SearchCriteriaSet();

            criteriaSet.Add(new SearchCriteria(SearchContext.Full, true, @"a1|a=2|<r>\d</r>"));
            searcher.Search(tvf, criteriaSet, result);

            (tvf as TrafficViewerFile).Clear(false);

            Assert.AreEqual(0, tvf.RequestCount);

            string secondRequest  = "GET /a2 HTTP/1.1\r\nHeader1: a2";
            string secondResponse = "HTTP 200 OK\r\n<r>1</r>";

            tvf.AddRequestResponse(secondRequest, secondResponse);

            Assert.AreEqual(1, tvf.RequestCount);

            //this should not cause an exception
            tvf.Replace(result, "");
        }
Exemple #18
0
        public void Execute(ITrafficDataAccessor curDataAccessor,
                            List <TVRequestInfo> selectedRequests,
                            IHttpClientFactory curHttpClientFactory)
        {
            var setupForm = new ScriptCrawlerForm(curDataAccessor);

            setupForm.Show();
        }
 public SimpleDiffForm(ITrafficDataAccessor source, int indexOfFirst, int indexOfSecond)
 {
     InitializeComponent();
     _source          = source;
     _currFirstIndex  = Math.Min(indexOfFirst, indexOfSecond);
     _currSecondIndex = Math.Max(indexOfFirst, indexOfSecond);
     DoDiff(_currFirstIndex, _currSecondIndex);
 }
        /// <summary>
        /// Contructor
        /// </summary>
        /// <param name="module"></param>
        /// <param name="source"></param>
        public AnalysisProcessingPage(IAnalysisModule module, ITrafficDataAccessor source)
        {
            InitializeComponent();
            _module = module;
            _source = source;

            _module.LogEvent += new AnalysisModuleLogEvent(ModuleLogEvent);
        }
        /// <summary>
        /// Searches the entire data accessor for the specified criteria
        /// </summary>
        /// <param name="dataSource"></param>
        /// <param name="criteriaSet"></param>
        /// <param name="result"></param>
        private void FullSearch(ITrafficDataAccessor dataSource, SearchCriteriaSet criteriaSet, ISearchResult result)
        {
            TVRequestInfo header;
            int           currReqId = -1;

            while ((header = dataSource.GetNext(ref currReqId)) != null && !_stopSearch)
            {
                RequestMatches(dataSource, header, criteriaSet, result);
            }
        }
Exemple #22
0
 /// <summary>
 /// Constructor for the manual proxy connection
 /// </summary>
 /// <param name="tcpClient">TCP client being used</param>
 /// <param name="isSecure">Whether the connection is secure or not</param>
 /// <param name="dataStore">The data store being used</param>
 /// <param name="description">Description to add to the data store for each request</param>
 /// <param name="networkSettings">Network settings to be used for the connection</param>
 public ManualExploreProxyConnection(TcpClient tcpClient,
                                     bool isSecure,
                                     ITrafficDataAccessor dataStore,
                                     string description,
                                     INetworkSettings networkSettings)
     : base(tcpClient, isSecure, dataStore, description)
 {
     _httpClient = new WebRequestClient();
     _httpClient.SetNetworkSettings(networkSettings);
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="sourceStore"></param>
 /// <param name="saveStore"></param>
 public TrafficStoreProxy(ITrafficDataAccessor sourceStore, ITrafficDataAccessor saveStore)
     :
     this(
         sourceStore,
         saveStore,
         TrafficViewerOptions.Instance.TrafficServerIp,
         TrafficViewerOptions.Instance.TrafficServerPort,
         TrafficViewerOptions.Instance.TrafficServerPortSecure
         )
 {
 }
Exemple #24
0
        /// <summary>
        /// Starts the parsing operation
        /// </summary>
        /// <param name="scantPath"></param>
        /// <param name="currentFile"></param>
        /// <param name="profile"></param>
        public void Parse(string scantPath, ITrafficDataAccessor currentFile, ParsingOptions profile)
        {
            _profile                = profile;
            _configFile             = new XmlDocument();
            _configFile.XmlResolver = null;
            _configFile.Load(scantPath);
            _tvFile = currentFile;

            HandleAppScanSettings();

            HandleASESettings();
        }
        /// <summary>
        /// Sends all the requests in the attached file
        /// </summary>
        /// <param name="source"></param>
        public void Send(ITrafficDataAccessor source)
        {
            int           id   = -1;
            TVRequestInfo info = null;

            PatternTracker.Instance.PatternsToTrack = source.Profile.GetTrackingPatterns();

            while ((info = source.GetNext(ref id)) != null)
            {
                SendRequest(source, info);
            }
        }
Exemple #26
0
 /// <summary>
 /// Creates a proxy connection that retrieves data from a traffic data store
 /// </summary>
 /// <param name="sourceStore">The store to obtain the data from</param>
 /// <param name="matchMode">The way requests will be matched</param>
 /// <param name="ignoreAuth">Whether to ignore authentication</param>
 /// <param name="client">TCP client for the connection</param>
 /// <param name="isSecure">Whether to secure the stream</param>
 /// <param name="saveStore">Data store to seve information to</param>
 /// <param name="requestDescription">Description to be used for the request in the save store</param>
 public TrafficStoreProxyConnection(
     ITrafficDataAccessor sourceStore,
     TrafficServerMode matchMode,
     bool ignoreAuth,
     TcpClient client,
     bool isSecure,
     ITrafficDataAccessor saveStore,
     string requestDescription
     )
     : base(client, isSecure, saveStore, requestDescription)
 {
     _httpClient = new TrafficStoreHttpClient(sourceStore, matchMode, ignoreAuth);
 }
Exemple #27
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));
        }
 /// <summary>
 /// Creates a connection
 /// </summary>
 /// <param name="client">TCP client to use</param>
 /// <param name="isSecure">Whether to use SSL or not</param>
 /// <param name="dataStore">Data store to save requests/responses to or to read from</param>
 /// <param name="requestDescription">Description added to the data store</param>
 public BaseProxyConnection(TcpClient client, bool isSecure, ITrafficDataAccessor dataStore, string requestDescription)
 {
     _client = client;
     _clientStreamWrapper = new HttpProxyClientStreamWrapper(_client);
     _isSecure            = isSecure;
     _trafficDataStore    = dataStore;
     _requestDescription  = requestDescription;
     _requestBuilder      = new ByteArrayBuilder();
     if (dataStore != null)
     {
         _exclusions = dataStore.Profile.GetExclusions();
     }
     HttpServerConsole.Instance.WriteLine(LogMessageType.Information,
                                          "Inbound connection from {0}", ((IPEndPoint)client.Client.RemoteEndPoint).Address);
 }
 /// <summary>
 /// Searches only in the specified subset
 /// </summary>
 /// <param name="dataSource"></param>
 /// <param name="criteriaSet"></param>
 /// <param name="result"></param>
 /// <param name="subset"></param>
 private void SubsetSearch(ITrafficDataAccessor dataSource, SearchCriteriaSet criteriaSet, ISearchResult result, SearchSubset subset)
 {
     foreach (int reqId in subset)
     {
         TVRequestInfo header = dataSource.GetRequestInfo(reqId);
         if (_stopSearch)
         {
             break;
         }
         if (header != null)
         {
             RequestMatches(dataSource, header, criteriaSet, result);
         }
     }
 }
Exemple #30
0
        public void Execute(ITrafficDataAccessor curDataAccessor,
                            List <TVRequestInfo> selectedRequests,
                            IHttpClientFactory curHttpClientFactory)
        {
            if (selectedRequests.Count < 1)
            {
                ErrorBox.ShowDialog(Resources.SelectOneRequest);
                return;
            }

            Fuzzer fuzzer = new Fuzzer();

            fuzzer.Requests     = selectedRequests;
            fuzzer.DataAccessor = curDataAccessor;
            fuzzer.Show();
        }