Class: Redirect

Inherits:
BetterCap::Proxy::HTTP::Module show all
Defined in:
lib/bettercap/proxy/http/modules/redirect.rb

Overview

This proxy module will redirect to a custom URL.

Constant Summary collapse

@@url =

URL to redirect the target(s) to.

nil
@@filter =

Optional regex filter for redirections.

nil

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BetterCap::Proxy::HTTP::Module

available, #enabled?, is_builtin?, load, modules, #on_pre_request, register_modules, register_options

Methods inherited from BetterCap::Pluggable

meta, metadata

Constructor Details

#initializeRedirect

Create an instance of this module and raise a BetterCap::Error if command line arguments weren’t correctly specified.

Raises:



46
47
48
49
# File 'lib/bettercap/proxy/http/modules/redirect.rb', line 46

def initialize
  raise BetterCap::Error, "No --redirect-url option specified for the proxy module." if @@url.nil?
  raise BetterCap::Error, "Invalid URL specified." unless @@url =~ /\A#{URI::regexp}\z/
end

Class Method Details

.on_options(opts) ⇒ Object

Add custom command line arguments to the opts OptionParser instance.



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/bettercap/proxy/http/modules/redirect.rb', line 30

def self.on_options(opts)
  opts.separator ""
  opts.separator "Redirect Proxy Module Options:"
  opts.separator ""

  opts.on( '--redirect-url URL', 'URL to redirect the target(s) to.' ) do |v|
    @@url = v
  end

  opts.on( '--redirect-filter EXPRESSION', 'Optional regex filter for redirections.' ) do |v|
    @@filter = Regexp.new(v)
  end
end

Instance Method Details

#on_request(request, response) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/bettercap/proxy/http/modules/redirect.rb', line 51

def on_request( request, response )
  if response.content_type =~ /^text\/html.*/ and !@@url.include?(request.host)
    if @@filter.nil? or @@filter.match(request.to_url)
      BetterCap::Logger.info "[#{'REDIRECT'.green}] Redirecting #{request.to_url} to #{@@url} ..."
      response.redirect!(@@url)
    end
  end
end