gophish-ruby 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/gophish/smtp.rb +99 -0
- data/lib/gophish/version.rb +1 -1
- data/lib/gophish-ruby.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aadeeb636e448907a3b5f3e33427c19373d903c52f8961b99b28265fe94872de
|
4
|
+
data.tar.gz: 9ef3e492ec39d8ce16327018358c0d873c70ebc20fb8064d4909d9ec66a9a3f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2678d8b475ef9c5c970a625f9b294ed95afde10781f5251cee81160240a80864654158887fa2df6a7b1ef17c6e7a325a4a3e051b536b72942f4f8123018ee9a
|
7
|
+
data.tar.gz: 94b1ae168de255a5e8d1154285b6b786070a1271b689965e503d5c87a6339ed959ce2df6c41a78fb5e87da245b5bc49961a29debc3a11b67b36e92722cee43ca
|
data/lib/gophish/smtp.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
require 'active_support/core_ext/object/blank'
|
3
|
+
|
4
|
+
module Gophish
|
5
|
+
class Smtp < Base
|
6
|
+
def self.resource_path
|
7
|
+
'/smtp'
|
8
|
+
end
|
9
|
+
attribute :id, :integer
|
10
|
+
attribute :name, :string
|
11
|
+
attribute :username, :string
|
12
|
+
attribute :password, :string
|
13
|
+
attribute :host, :string
|
14
|
+
attribute :interface_type, :string, default: 'SMTP'
|
15
|
+
attribute :from_address, :string
|
16
|
+
attribute :ignore_cert_errors, :boolean, default: false
|
17
|
+
attribute :modified_date, :string
|
18
|
+
attribute :headers, default: -> { [] }
|
19
|
+
|
20
|
+
define_attribute_methods :id, :name, :username, :password, :host, :interface_type, :from_address,
|
21
|
+
:ignore_cert_errors, :modified_date, :headers
|
22
|
+
|
23
|
+
validates :name, presence: true
|
24
|
+
validates :host, presence: true
|
25
|
+
validates :from_address, presence: true
|
26
|
+
validate :validate_from_address_format
|
27
|
+
validate :validate_headers_structure
|
28
|
+
|
29
|
+
def body_for_create
|
30
|
+
{
|
31
|
+
name:, username:, password:, host:,
|
32
|
+
interface_type:,
|
33
|
+
from_address:,
|
34
|
+
ignore_cert_errors:,
|
35
|
+
headers:
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_header(key, value)
|
40
|
+
headers << { key:, value: }
|
41
|
+
headers_will_change!
|
42
|
+
end
|
43
|
+
|
44
|
+
def remove_header(key)
|
45
|
+
original_size = headers.size
|
46
|
+
headers.reject! { |header| header[:key] == key || header['key'] == key }
|
47
|
+
headers_will_change! if headers.size != original_size
|
48
|
+
end
|
49
|
+
|
50
|
+
def has_headers?
|
51
|
+
!headers.empty?
|
52
|
+
end
|
53
|
+
|
54
|
+
def header_count
|
55
|
+
headers.length
|
56
|
+
end
|
57
|
+
|
58
|
+
def has_authentication?
|
59
|
+
!username.blank? && !password.blank?
|
60
|
+
end
|
61
|
+
|
62
|
+
def ignores_cert_errors?
|
63
|
+
ignore_cert_errors == true
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def validate_from_address_format
|
69
|
+
return if from_address.blank?
|
70
|
+
|
71
|
+
email_regex = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
|
72
|
+
|
73
|
+
unless from_address.match? email_regex
|
74
|
+
errors.add :from_address, 'must be a valid email format (email@domain.com)'
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def validate_headers_structure
|
79
|
+
return if headers.blank?
|
80
|
+
return errors.add :headers, 'must be an array' unless headers.is_a? Array
|
81
|
+
|
82
|
+
headers.each_with_index { |header, index| validate_header header, index }
|
83
|
+
end
|
84
|
+
|
85
|
+
def validate_header(header, index)
|
86
|
+
return errors.add :headers, "item at index #{index} must be a hash" unless header.is_a? Hash
|
87
|
+
|
88
|
+
validate_header_field header, index, :key
|
89
|
+
validate_header_field header, index, :value
|
90
|
+
end
|
91
|
+
|
92
|
+
def validate_header_field(header, index, field)
|
93
|
+
value = header[field] || header[field.to_s]
|
94
|
+
return unless value.blank?
|
95
|
+
|
96
|
+
errors.add :headers, "item at index #{index} must have a #{field}"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/gophish/version.rb
CHANGED
data/lib/gophish-ruby.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gophish-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli Sebastian Herrera Aguilar
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- lib/gophish/configuration.rb
|
107
107
|
- lib/gophish/group.rb
|
108
108
|
- lib/gophish/page.rb
|
109
|
+
- lib/gophish/smtp.rb
|
109
110
|
- lib/gophish/template.rb
|
110
111
|
- lib/gophish/version.rb
|
111
112
|
- sig/gophish/ruby.rbs
|