diff options
| author | Shulhan <ms@kilabit.info> | 2024-02-16 01:37:11 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2024-02-16 01:43:53 +0700 |
| commit | 8d27c8b6fa922fbb90bde8ba3675abf535d12422 (patch) | |
| tree | 1ab67ee5bda8107321407a707881872acce290f2 /gorankusu.go | |
| parent | 3209221c94634a3e49bad6c90896919745be8e85 (diff) | |
| download | gorankusu-8d27c8b6fa922fbb90bde8ba3675abf535d12422.tar.xz | |
all: add default HTTPRunHandler
Previously, the default HTTPRunHandler is hidden, called dynamically
based on Run is nil or not.
This changes make it exported as function that return HTTPRunHandler
to show how define and create a custom HTTPRunHandler.
Diffstat (limited to 'gorankusu.go')
| -rw-r--r-- | gorankusu.go | 76 |
1 files changed, 2 insertions, 74 deletions
diff --git a/gorankusu.go b/gorankusu.go index 2d49e1d..3d5975a 100644 --- a/gorankusu.go +++ b/gorankusu.go @@ -4,9 +4,7 @@ package gorankusu import ( - "bytes" "fmt" - "io" "net/http" "os" "strings" @@ -185,17 +183,9 @@ func (gorankusu *Gorankusu) RunHTTP(req *RunRequest) (res *RunResponse, err erro return nil, errInvalidHTTPTarget(req.HTTPTarget.ID) } - if origHTTPTarget.Run == nil { - req.Target.BaseURL = origTarget.BaseURL - req.Target.Name = origTarget.Name - - req.HTTPTarget.refCopy(origHTTPTarget) + req = generateRunRequest(gorankusu.Env, req, origTarget, origHTTPTarget) - res, err = gorankusu.runHTTPTarget(req) - } else { - req = generateRunRequest(gorankusu.Env, req, origTarget, origHTTPTarget) - res, err = req.HTTPTarget.Run(req) - } + res, err = req.HTTPTarget.Run(req) if err != nil { return nil, err } @@ -325,68 +315,6 @@ func (gorankusu *Gorankusu) getTargetByResultFilename(name string) (t *Target, h return t, ht } -// runHTTPTarget default [HTTPTarget.Run] handler that generate HTTP request -// and send it to the target. -func (gorankusu *Gorankusu) runHTTPTarget(rr *RunRequest) (res *RunResponse, err error) { - var ( - logp = `runHTTPTarget` - headers = rr.HTTPTarget.Headers.ToHTTPHeader() - ) - - httpcOpts := &libhttp.ClientOptions{ - ServerUrl: rr.Target.BaseURL, - AllowInsecure: true, - } - - httpc := libhttp.NewClient(httpcOpts) - - var params any - - if !rr.HTTPTarget.WithRawBody { - rr.HTTPTarget.paramsToPath() - - params, err = rr.HTTPTarget.ParamsConverter(&rr.HTTPTarget) - if err != nil { - return nil, fmt.Errorf(`%s: %w`, logp, err) - } - } - - res = &RunResponse{} - - httpRequest, err := httpc.GenerateHttpRequest( - rr.HTTPTarget.Method, - rr.HTTPTarget.Path, - rr.HTTPTarget.RequestType, - headers, - params, - ) - if err != nil { - return nil, fmt.Errorf("%s: %w", logp, err) - } - - if rr.HTTPTarget.WithRawBody { - httpRequest.Body = io.NopCloser(bytes.NewReader(rr.HTTPTarget.RawBody)) - httpRequest.ContentLength = int64(len(rr.HTTPTarget.RawBody)) - } - - err = res.SetHTTPRequest(rr.HTTPTarget.RequestDumper, httpRequest) - if err != nil { - return nil, fmt.Errorf("%s: %w", logp, err) - } - - httpResponse, _, err := httpc.Do(httpRequest) - if err != nil { - return nil, fmt.Errorf("%s: %w", logp, err) - } - - err = res.SetHTTPResponse(rr.HTTPTarget.ResponseDumper, httpResponse) - if err != nil { - return nil, fmt.Errorf("%s: %w", logp, err) - } - - return res, nil -} - // scanResultsDir scan the environment's ResultsDir for the past attack // results and add it to each target based on ID on file name. // |
