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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abf879c22c4f9f1521c61af8ebc635956ba6f70b3d6292019707b34168c32c73
4
- data.tar.gz: 41e2452769f172e282a83f0e6a4d186e82f4544683f405745790f736532a03d2
3
+ metadata.gz: aadeeb636e448907a3b5f3e33427c19373d903c52f8961b99b28265fe94872de
4
+ data.tar.gz: 9ef3e492ec39d8ce16327018358c0d873c70ebc20fb8064d4909d9ec66a9a3f4
5
5
  SHA512:
6
- metadata.gz: 3b1d75bff457c5f276fa014daffeff9834b9d44771a2dd2d41b12353d3060ff5b04fd5665aaf92a93417ababfaef3a26acc48edee5c4d165cde3c69b0749b47b
7
- data.tar.gz: 702c43a976ae0ab06dbaa49ad01e7631b0b2a5405a6d41a13384f8c3e2b58c339d04b143fc78f65940119d52c5851bb17ae7c464c2e8c783ba82f468dfae5a42
6
+ metadata.gz: a2678d8b475ef9c5c970a625f9b294ed95afde10781f5251cee81160240a80864654158887fa2df6a7b1ef17c6e7a325a4a3e051b536b72942f4f8123018ee9a
7
+ data.tar.gz: 94b1ae168de255a5e8d1154285b6b786070a1271b689965e503d5c87a6339ed959ce2df6c41a78fb5e87da245b5bc49961a29debc3a11b67b36e92722cee43ca
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gophish
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
data/lib/gophish-ruby.rb CHANGED
@@ -3,6 +3,7 @@ require_relative 'gophish/configuration'
3
3
  require_relative 'gophish/group'
4
4
  require_relative 'gophish/template'
5
5
  require_relative 'gophish/page'
6
+ require_relative 'gophish/smtp'
6
7
 
7
8
  module Gophish
8
9
  class << self
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.3.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