gophish 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 82b0a7a45f283e969db82b3f814189db2f698c3abeda77023c6d3487c8a257a4
4
+ data.tar.gz: c335b166e58475b803350521bb45eef2ef5f51559c8b2e5bd48806dbc42b990c
5
+ SHA512:
6
+ metadata.gz: 3ee6aa46ee20166b2de78632b4f58b37b5aa867c9f6059e471a1caddcad12ddf6262799e4785b292781826e7649692072efea821fa2cdc15ccb4c9f0f7de0a3b
7
+ data.tar.gz: 5d0efb6d3cc2500679c1401be551866951ba145de84bc2eaf5a1a5aedd49562062dee22f422c6465eabeea335690c03012607c163c673b1ecf2a4ebb4cf59476
@@ -0,0 +1,195 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GoPhish
4
+ class Api
5
+ def initialize(url, key)
6
+ @url = url
7
+ @key = key
8
+ end
9
+
10
+ def get_campaigns
11
+ uri = @url + '/api/campaigns?api_key=' + @key
12
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
13
+ JSON res
14
+ end
15
+
16
+ def get_campaign(id)
17
+ uri = @url + "/api/campaigns/#{id}?api_key=" + @key
18
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
19
+ JSON res
20
+ end
21
+
22
+ def create_campaign(conf = {})
23
+ conf = JSON conf
24
+ uri = URI.parse(@url + '/api/campaigns/?api_key=' + @key)
25
+ headers = {
26
+ 'Content-Type': 'text/json'
27
+ }
28
+ http = Net::HTTP.new(uri.host, uri.port)
29
+ http.use_ssl = true
30
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
31
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
32
+ request.body = conf
33
+ res = http.request(request)
34
+ JSON res
35
+ end
36
+
37
+ def delete_campaign(id)
38
+ uri = URI.parse(@url + "/api/campaigns/#{id}?api_key=" + @key)
39
+ http = Net::HTTP.new(uri.host, uri.port)
40
+ http.use_ssl = true
41
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
42
+ req = Net::HTTP::Delete.new(uri.request_uri)
43
+ res = http.request(req)
44
+ JSON res
45
+ end
46
+
47
+ def get_templates
48
+ uri = @url + '/api/templates?api_key=' + @key
49
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
50
+ JSON res
51
+ end
52
+
53
+ def get_template(id)
54
+ uri = @url + "/api/templates/#{id}?api_key=" + @key
55
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
56
+ JSON res
57
+ end
58
+
59
+ def create_template(conf = {})
60
+ conf = JSON conf
61
+ uri = URI.parse(@url + '/api/templates/?api_key=' + @key)
62
+ headers = {
63
+ 'Content-Type': 'text/json'
64
+ }
65
+ http = Net::HTTP.new(uri.host, uri.port)
66
+ http.use_ssl = true
67
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
68
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
69
+ request.body = conf
70
+ res = http.request(request)
71
+ JSON res
72
+ end
73
+
74
+ def delete_template(id)
75
+ uri = URI.parse(@url + "/api/templates/#{id}?api_key=" + @key)
76
+ http = Net::HTTP.new(uri.host, uri.port)
77
+ http.use_ssl = true
78
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
79
+ req = Net::HTTP::Delete.new(uri.request_uri)
80
+ res = http.request(req)
81
+ JSON res
82
+ end
83
+
84
+ def get_groups
85
+ uri = @url + '/api/groups?api_key=' + @key
86
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
87
+ JSON res
88
+ end
89
+
90
+ def get_group(id)
91
+ uri = @url + "/api/groups/#{id}?api_key=" + @key
92
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
93
+ JSON res
94
+ end
95
+
96
+ def create_group(conf = {})
97
+ conf = JSON conf
98
+ uri = URI.parse(@url + '/api/groups/?api_key=' + @key)
99
+ headers = {
100
+ 'Content-Type': 'text/json'
101
+ }
102
+ http = Net::HTTP.new(uri.host, uri.port)
103
+ http.use_ssl = true
104
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
105
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
106
+ request.body = conf
107
+ res = http.request(request)
108
+ JSON res
109
+ end
110
+
111
+ def delete_group(id)
112
+ uri = URI.parse(@url + "/api/groups/#{id}?api_key=" + @key)
113
+ http = Net::HTTP.new(uri.host, uri.port)
114
+ http.use_ssl = true
115
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
116
+ req = Net::HTTP::Delete.new(uri.request_uri)
117
+ res = http.request(req)
118
+ JSON res
119
+ end
120
+
121
+ def get_smtps
122
+ uri = @url + '/api/smtp?api_key=' + @key
123
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
124
+ JSON res
125
+ end
126
+
127
+ def get_smtp(id)
128
+ uri = @url + "/api/smtps/#{id}?api_key=" + @key
129
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
130
+ JSON res
131
+ end
132
+
133
+ def create_smtp(conf = {})
134
+ conf = JSON conf
135
+ uri = URI.parse(@url + '/api/smtps/?api_key=' + @key)
136
+ headers = {
137
+ 'Content-Type': 'text/json'
138
+ }
139
+ http = Net::HTTP.new(uri.host, uri.port)
140
+ http.use_ssl = true
141
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
142
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
143
+ request.body = conf
144
+ res = http.request(request)
145
+ JSON res
146
+ end
147
+
148
+ def delete_smtp(id)
149
+ uri = URI.parse(@url + "/api/smtps/#{id}?api_key=" + @key)
150
+ http = Net::HTTP.new(uri.host, uri.port)
151
+ http.use_ssl = true
152
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
153
+ req = Net::HTTP::Delete.new(uri.request_uri)
154
+ res = http.request(req)
155
+ JSON res
156
+ end
157
+
158
+ def get_pages
159
+ uri = @url + '/api/pages?api_key=' + @key
160
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
161
+ JSON res
162
+ end
163
+
164
+ def get_page(id)
165
+ uri = @url + "/api/pages/#{id}?api_key=" + @key
166
+ res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE).read
167
+ JSON res
168
+ end
169
+
170
+ def create_page(conf = {})
171
+ conf = JSON conf
172
+ uri = URI.parse(@url + '/api/pages/?api_key=' + @key)
173
+ headers = {
174
+ 'Content-Type': 'text/json'
175
+ }
176
+ http = Net::HTTP.new(uri.host, uri.port)
177
+ http.use_ssl = true
178
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
179
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
180
+ request.body = conf
181
+ res = http.request(request)
182
+ JSON res
183
+ end
184
+
185
+ def delete_page(id)
186
+ uri = URI.parse(@url + "/api/pages/#{id}?api_key=" + @key)
187
+ http = Net::HTTP.new(uri.host, uri.port)
188
+ http.use_ssl = true
189
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
190
+ req = Net::HTTP::Delete.new(uri.request_uri)
191
+ res = http.request(req)
192
+ JSON res
193
+ end
194
+ end
195
+ end
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GoPhish
4
+ class Client
5
+ attr_accessor :url, :api_key
6
+
7
+ def initialize(options = {})
8
+ options.each do |key, value|
9
+ instance_variable_set("@#{key}", value)
10
+ end
11
+ yield(self) if block_given?
12
+ @api = GoPhish::Api.new(@url, @api_key)
13
+ end
14
+
15
+ def get_campaigns
16
+ res = @api.get_campaigns
17
+ res
18
+ end
19
+
20
+ def get_campaign(id = 1)
21
+ res = @api.get_campaign(id)
22
+ res
23
+ end
24
+
25
+ def create_campaign(conf = {})
26
+ res = @api.create_campaign(conf)
27
+ res
28
+ end
29
+
30
+ def delete_campaign(id = 1)
31
+ res = @api.delete_campaign(id)
32
+ res
33
+ end
34
+
35
+ def get_templates
36
+ res = @api.get_templates
37
+ res
38
+ end
39
+
40
+ def get_template(id = 1)
41
+ res = @api.get_template(id)
42
+ res
43
+ end
44
+
45
+ def create_template(conf = {})
46
+ res = @api.create_template(conf)
47
+ res
48
+ end
49
+
50
+ def delete_template(id = 1)
51
+ res = @api.delete_template(id)
52
+ res
53
+ end
54
+
55
+ def get_groups
56
+ res = @api.get_groups
57
+ res
58
+ end
59
+
60
+ def get_group(id = 1)
61
+ res = @api.get_group(id)
62
+ res
63
+ end
64
+
65
+ def create_group(conf = {})
66
+ res = @api.create_group(conf)
67
+ res
68
+ end
69
+
70
+ def delete_group(id = 1)
71
+ res = @api.delete_group(id)
72
+ res
73
+ end
74
+
75
+ def get_smtps
76
+ res = @api.get_smtps
77
+ res
78
+ end
79
+
80
+ def get_smtp(id = 1)
81
+ res = @api.get_smtp(id)
82
+ res
83
+ end
84
+
85
+ def create_smtp(conf = {})
86
+ res = @api.create_smtp(conf)
87
+ res
88
+ end
89
+
90
+ def delete_smtp(id = 1)
91
+ res = @api.delete_smtp(id)
92
+ res
93
+ end
94
+
95
+ def get_pages
96
+ res = @api.get_pages
97
+ res
98
+ end
99
+
100
+ def get_page(id = 1)
101
+ res = @api.get_page(id)
102
+ res
103
+ end
104
+
105
+ def create_page(conf = {})
106
+ res = @api.create_page(conf)
107
+ res
108
+ end
109
+
110
+ def delete_page(id = 1)
111
+ res = @api.delete_page(id)
112
+ res
113
+ end
114
+ end
115
+ end
data/lib/gophish.rb ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'openssl'
5
+ require 'open-uri'
6
+ require 'net/http'
7
+ require 'gophish/api'
8
+ require 'gophish/client'
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gophish
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Long
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-07 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple wrapper for the GoPhish API.
14
+ email: drewlong@protonmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/gophish.rb
20
+ - lib/gophish/api.rb
21
+ - lib/gophish/client.rb
22
+ homepage: https://rubygems.org/gems/gophish
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubygems_version: 3.0.4
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: GoPhish API wrapper for Ruby.
45
+ test_files: []