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 +7 -0
- data/lib/gophish/api.rb +195 -0
- data/lib/gophish/client.rb +115 -0
- data/lib/gophish.rb +8 -0
- metadata +45 -0
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
|
data/lib/gophish/api.rb
ADDED
@@ -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
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: []
|