示例#1
0
        private void GenerateRequests(object sender, DoWorkEventArgs e)
        {
            _curDataAccessor.SetState(AccessorState.Loading);
            GetRecursiveListOfFiles(_rootDir);

            foreach (string fileName in _fileList)
            {
                try
                {
                    string requestPath = fileName.Replace(_rootDir, "");
                    requestPath = requestPath.Replace('\\', '/').TrimStart('/');
                    requestPath = Regex.Replace(requestPath, _replacementPattern, _replacementString);
                    var requestUri = new Uri(_rootUri, requestPath);
                    requestPath = requestUri.AbsolutePath;
                    string host = requestUri.Host;
                    int    port = requestUri.Port;

                    var getRequest  = new HttpRequestInfo(String.Format("GET {0} HTTP/1.1\r\n{1}\r\n\r\n", requestPath, _headers), true);
                    var postRequest = new HttpRequestInfo(String.Format("POST {0} HTTP/1.1\r\n{1}\r\n", requestPath, _headers), true);
                    postRequest.Headers["Content-Type"] = "application/x-www-form-urlencoded";

                    getRequest.Host = postRequest.Host = host;
                    getRequest.Port = postRequest.Port = port;

                    getRequest.IsSecure = postRequest.IsSecure = _rootUri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase);

                    string fileContents = GetFileContents(fileName, 0);

                    var parameters = GetParametersAndValues(_paramPattern, fileContents);

                    //add requests for all parameter values combinations
                    GenerateRequestsBasedOnParameters(getRequest, postRequest, parameters);


                    //parse all links and forms from the content
                    ExtractLinks(fileContents);

                    //parse forms
                    ExtractForms(fileContents);
                }
                catch (Exception ex)
                {
                    SdkSettings.Instance.Logger.Log(System.Diagnostics.TraceLevel.Error, ex.Message);
                }
            }

            foreach (var url in _foundUrls)
            {
                if (Uri.IsWellFormedUriString(url, UriKind.Absolute))
                {
                    Uri uri = new Uri(url);
                    //generate get requests
                    var getRequest = new HttpRequestInfo(String.Format("GET {0} HTTP/1.1\r\n{1}\r\n\r\n", uri.PathAndQuery, _headers), true);
                    getRequest.Host = uri.Host;
                    getRequest.Port = uri.Port;
                    AddHttpRequest(getRequest);
                }
            }
            _curDataAccessor.SetState(AccessorState.Idle);
        }