gophish 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []