Class: SSRFProxy::Server

Inherits:
Object
  • Object
show all
Includes:
Celluloid::IO
Defined in:
lib/ssrf_proxy/server.rb

Overview

Note:

SSRFProxy::Server

Defined Under Namespace

Modules: Error

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(interface = '127.0.0.1', port = 8081, ssrf) ⇒ Server

Note:

Start the local server and listen for connections

  • interface - String - Listen interface (Default: 127.0.0.1)

  • port - Integer - Listen port (Default: 8081)

  • ssrf - SSRFProxy::HTTP - SSRF



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/ssrf_proxy/server.rb', line 61

def initialize(interface='127.0.0.1', port=8081, ssrf)
  @logger = ::Logger.new(STDOUT).tap do |log|
    log.progname = 'ssrf-proxy-server'
    log.level = ::Logger::WARN
    log.datetime_format = '%Y-%m-%d %H:%M:%S '
  end
  # set ssrf
  unless ssrf.class == SSRFProxy::HTTP
    raise SSRFProxy::Server::Error::InvalidSsrf.new,
      "Invalid SSRF provided"
  end
  @ssrf = ssrf
  # start server
  logger.info "Starting HTTP proxy on #{interface}:#{port}"
  print_status "Listening on #{interface}:#{port}"
  @server = TCPServer.new(interface, port.to_i)
end

Instance Attribute Details

#loggerObject

Note:

logger



35
36
37
# File 'lib/ssrf_proxy/server.rb', line 35

def logger
  @logger
end

Instance Method Details

Note:

output progress messages



21
22
23
# File 'lib/ssrf_proxy/server.rb', line 21

def print_good(msg='')
  puts '[+] '.green + msg
end
Note:

output status messages



17
18
19
# File 'lib/ssrf_proxy/server.rb', line 17

def print_status(msg='')
  puts '[*] '.blue + msg
end

#serveObject

Note:

Run proxy server



82
83
84
# File 'lib/ssrf_proxy/server.rb', line 82

def serve
  loop { async.handle_connection(@server.accept) }
end