Module: Aikido::Zen::Sinks::Net::HTTP::Helpers

Defined in:
lib/aikido/zen/sinks/net_http.rb

Class Method Summary collapse

Class Method Details

.build_outbound(http) ⇒ Aikido::Zen::OutboundConnection

Maps a Net::HTTP connection to an Aikido OutboundConnection, which our tooling expects.

Parameters:

Returns:



19
20
21
22
23
24
# File 'lib/aikido/zen/sinks/net_http.rb', line 19

def self.build_outbound(http)
  OutboundConnection.new(
    host: http.address,
    port: http.port
  )
end

.scan(request, connection, operation) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/aikido/zen/sinks/net_http.rb', line 59

def self.scan(request, connection, operation)
  SINK.scan(
    request: request,
    connection: connection,
    operation: operation
  )
end

.wrap_request(req, session) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/aikido/zen/sinks/net_http.rb', line 26

def self.wrap_request(req, session)
  uri = req.uri if req.uri.is_a?(URI)

  if uri.nil?
    request_uri = URI.parse(req.path)

    uri = URI.parse(
      URI::Generic.build(
        scheme: session.use_ssl? ? "https" : "http",
        host: session.address,
        port: session.port,
        path: request_uri.path,
        query: request_uri.query
      ).to_s
    )
  end

  Scanners::SSRFScanner::Request.new(
    verb: req.method,
    uri: uri,
    headers: req.to_hash,
    header_normalizer: ->(val) { Array(val).join(", ") }
  )
end

.wrap_response(response) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/aikido/zen/sinks/net_http.rb', line 51

def self.wrap_response(response)
  Scanners::SSRFScanner::Response.new(
    status: response.code.to_i,
    headers: response.to_hash,
    header_normalizer: ->(val) { Array(val).join(", ") }
  )
end