Class: Miteru::Website

Inherits:
Object
  • Object
show all
Defined in:
lib/miteru/website.rb

Constant Summary collapse

VALID_EXTENSIONS =
Miteru.configuration.valid_extensions

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, source) ⇒ Website

Returns a new instance of Website.



15
16
17
18
# File 'lib/miteru/website.rb', line 15

def initialize(url, source)
  @url = url
  @source = source
end

Instance Attribute Details

#sourceString (readonly)

Returns:

  • (String)


13
14
15
# File 'lib/miteru/website.rb', line 13

def source
  @source
end

#urlString (readonly)

Returns:

  • (String)


10
11
12
# File 'lib/miteru/website.rb', line 10

def url
  @url
end

Instance Method Details

#has_kits?Boolean

Returns:

  • (Boolean)


43
44
45
46
47
# File 'lib/miteru/website.rb', line 43

def has_kits?
  kits?
rescue Addressable::URI::InvalidURIError, ArgumentError, Encoding::CompatibilityError, HTTP::Error, LL::ParserError, OpenSSL::SSL::SSLError => _e
  false
end

#index?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/miteru/website.rb', line 35

def index?
  title.to_s.start_with? "Index of"
end

#kitsObject



24
25
26
27
28
29
# File 'lib/miteru/website.rb', line 24

def kits
  @kits ||= links.filter_map do |link|
    kit = Kit.new(link, source)
    kit.valid? ? kit : nil
  end
end

#kits?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/miteru/website.rb', line 39

def kits?
  !kits.empty?
end


57
58
59
# File 'lib/miteru/website.rb', line 57

def links
  (href_links + possible_file_links).compact.uniq
end

#messageObject



49
50
51
52
53
54
55
# File 'lib/miteru/website.rb', line 49

def message
  return "it doesn't contain a phishing kit." unless kits?

  filename_with_sizes = kits.map(&:filename_with_size).join(", ")
  noun = kits.length == 1 ? "a phishing kit" : "phishing kits"
  "it might contain #{noun}: #{filename_with_sizes}."
end

#ok?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/miteru/website.rb', line 31

def ok?
  response.code == 200
end

#titleObject



20
21
22
# File 'lib/miteru/website.rb', line 20

def title
  doc&.at_css("title")&.text
end