smart_proxy_ipam 0.0.20 → 0.0.21

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: e7cb97764734cee081d9609f4831b927e82ca0847a551b76823ec4ef3ee0e2cd
4
- data.tar.gz: b999ef4b34cd6e971374120dcc0e972fd9e237bcf8424e017cb2ad09242a690f
3
+ metadata.gz: 7332a15117cab62b21214132d6e95eb6b97c025ed8ffd4b38b6ad053c1673a3c
4
+ data.tar.gz: 29f5d76007278fc6e0124ee2438e434d96cbbd02caf6375a4f8afdaf12a650a2
5
5
  SHA512:
6
- metadata.gz: 0de79823f4095b58d45d888d1b402929365d76299a9b2c7624d006d6b01e8cd4e7b4f42de87c1ab687b0602b62e19f10b806ebb5c39a8d3ebfcc22b5b788ba88
7
- data.tar.gz: 33c07cf01c766f08ebef1545b97512368a983035cdaf81067db71d45b2d7f385f6db5d779d9cc24814dfe44c7861f00e22da3460dd2b1b12254ac18a213cb7a0
6
+ metadata.gz: 69d737e1a77f8a9487793f8efed346539ce461433e222e94debcb4d43f9365b92a4d43dfd35966122377d4e90d5c34852a684ea91d1f8aeca866abc8f894947b
7
+ data.tar.gz: 2d0a3ff8288589413c3b896a849d747263ff78a4bba0736088282d0bdc09059578c20b34dc65bbacf7cd85fa21623a28e5b40a07af1e65476b77488bff0ba4fb
@@ -34,6 +34,8 @@ module Proxy::Phpipam
34
34
  section_name = params[:group]
35
35
 
36
36
  phpipam_client = PhpipamClient.new
37
+ return auth_error unless phpipam_client.authenticated?
38
+
37
39
  subnet = JSON.parse(phpipam_client.get_subnet(cidr, section_name))
38
40
 
39
41
  return {:code => subnet['code'], :error => subnet['error']}.to_json if no_subnets_found?(subnet)
@@ -82,6 +84,8 @@ module Proxy::Phpipam
82
84
  cidr = params[:address] + '/' + params[:prefix]
83
85
 
84
86
  phpipam_client = PhpipamClient.new
87
+ return auth_error unless phpipam_client.authenticated?
88
+
85
89
  phpipam_client.get_subnet(cidr)
86
90
  rescue Errno::ECONNREFUSED, Errno::ECONNRESET
87
91
  logger.debug(errors[:no_connection])
@@ -106,8 +110,11 @@ module Proxy::Phpipam
106
110
 
107
111
  begin
108
112
  phpipam_client = PhpipamClient.new
113
+ return auth_error unless phpipam_client.authenticated?
114
+
109
115
  sections = phpipam_client.get_sections
110
116
  return {:code => 200, :data => []}.to_json if no_sections_found?(JSON.parse(sections))
117
+
111
118
  sections
112
119
  rescue Errno::ECONNREFUSED, Errno::ECONNRESET
113
120
  logger.debug(errors[:no_connection])
@@ -136,9 +143,11 @@ module Proxy::Phpipam
136
143
  return err if err.length > 0
137
144
 
138
145
  phpipam_client = PhpipamClient.new
146
+ return auth_error unless phpipam_client.authenticated?
147
+
139
148
  section = JSON.parse(phpipam_client.get_section(params[:group]))
140
-
141
149
  return {:code => section['code'], :message => section['message']}.to_json if no_section_found?(section)
150
+
142
151
  section.to_json
143
152
  rescue Errno::ECONNREFUSED, Errno::ECONNRESET
144
153
  logger.debug(errors[:no_connection])
@@ -209,8 +218,9 @@ module Proxy::Phpipam
209
218
  return err if err.length > 0
210
219
 
211
220
  phpipam_client = PhpipamClient.new
212
- section = JSON.parse(phpipam_client.get_section(params[:group]))
221
+ return auth_error unless phpipam_client.authenticated?
213
222
 
223
+ section = JSON.parse(phpipam_client.get_section(params[:group]))
214
224
  return {:code => 404, :error => errors[:no_section]}.to_json if no_section_found?(section)
215
225
 
216
226
  phpipam_client.get_subnets(section['data']['id'].to_s, false)
@@ -243,9 +253,11 @@ module Proxy::Phpipam
243
253
  ip = params[:ip]
244
254
  cidr = params[:address] + '/' + params[:prefix]
245
255
  section_name = params[:group]
256
+
246
257
  phpipam_client = PhpipamClient.new
258
+ return auth_error unless phpipam_client.authenticated?
259
+
247
260
  subnet = JSON.parse(phpipam_client.get_subnet(cidr, section_name))
248
-
249
261
  return {:code => 404, :error => subnet['error']}.to_json if no_subnets_found?(subnet)
250
262
 
251
263
  ip_exists = JSON.parse(phpipam_client.ip_exists(ip, subnet['data']['id']))
@@ -287,8 +299,9 @@ module Proxy::Phpipam
287
299
  section_name = URI.escape(params[:group])
288
300
 
289
301
  phpipam_client = PhpipamClient.new
302
+ return auth_error unless phpipam_client.authenticated?
303
+
290
304
  subnet = JSON.parse(phpipam_client.get_subnet(cidr, section_name))
291
-
292
305
  return {:code => 404, :error => subnet['error']}.to_json if no_subnets_found?(subnet)
293
306
 
294
307
  add_ip = JSON.parse(phpipam_client.add_ip_to_subnet(ip, subnet['data']['id'], 'Address auto added by Foreman'))
@@ -327,8 +340,9 @@ module Proxy::Phpipam
327
340
  cidr = params[:address] + '/' + params[:prefix]
328
341
  section_name = URI.escape(params[:group])
329
342
  phpipam_client = PhpipamClient.new
330
- subnet = JSON.parse(phpipam_client.get_subnet(cidr, section_name))
343
+ return auth_error unless phpipam_client.authenticated?
331
344
 
345
+ subnet = JSON.parse(phpipam_client.get_subnet(cidr, section_name))
332
346
  return {:code => 404, :error => subnet['error']}.to_json if no_subnets_found?(subnet)
333
347
 
334
348
  delete_ip = JSON.parse(phpipam_client.delete_ip_from_subnet(ip, subnet['data']['id']))
@@ -367,6 +381,8 @@ module Proxy::Phpipam
367
381
  cidr = params[:address] + '/' + params[:prefix]
368
382
 
369
383
  phpipam_client = PhpipamClient.new
384
+ return auth_error unless phpipam_client.authenticated?
385
+
370
386
  phpipam_client.get_subnet_by_section(cidr, params[:group])
371
387
  rescue Errno::ECONNREFUSED, Errno::ECONNRESET
372
388
  logger.debug(errors[:no_connection])
@@ -26,6 +26,7 @@ module Proxy::Phpipam
26
26
  @@m = Monitor.new
27
27
  init_cache if @@ip_cache.nil?
28
28
  start_cleanup_task if @@timer_task.nil?
29
+ authenticate
29
30
  end
30
31
 
31
32
  def get_subnet(cidr, section_name = nil)
@@ -170,6 +171,10 @@ module Proxy::Phpipam
170
171
  @@timer_task.execute
171
172
  end
172
173
 
174
+ def authenticated?
175
+ !@token.nil?
176
+ end
177
+
173
178
  private
174
179
 
175
180
  # @@ip_cache structure
@@ -291,7 +296,6 @@ module Proxy::Phpipam
291
296
  end
292
297
 
293
298
  def get(path)
294
- authenticate
295
299
  uri = URI(@api_base + path)
296
300
  request = Net::HTTP::Get.new(uri)
297
301
  request['token'] = @token
@@ -302,7 +306,6 @@ module Proxy::Phpipam
302
306
  end
303
307
 
304
308
  def delete(path, body=nil)
305
- authenticate
306
309
  uri = URI(@api_base + path)
307
310
  uri.query = URI.encode_www_form(body) if body
308
311
  request = Net::HTTP::Delete.new(uri)
@@ -314,7 +317,6 @@ module Proxy::Phpipam
314
317
  end
315
318
 
316
319
  def post(path, body=nil)
317
- authenticate
318
320
  uri = URI(@api_base + path)
319
321
  uri.query = URI.encode_www_form(body) if body
320
322
  request = Net::HTTP::Post.new(uri)
@@ -335,7 +337,8 @@ module Proxy::Phpipam
335
337
  }
336
338
 
337
339
  response = JSON.parse(response.body)
338
- @token = response['data']['token']
340
+ logger.warn(response['message']) if response['message']
341
+ @token = response.dig('data', 'token')
339
342
  end
340
343
  end
341
344
  end
@@ -28,6 +28,10 @@ module PhpipamHelper
28
28
  def ip_not_found_in_ipam?(ip)
29
29
  ip && ip['message'] && ip['message'].downcase == 'no addresses found'
30
30
  end
31
+
32
+ def auth_error
33
+ {:code => 401, :error => "Invalid username and password for External IPAM"}.to_json
34
+ end
31
35
 
32
36
  # Returns an array of hashes with only the fields given in the fields param
33
37
  def filter_fields(json_body, fields)
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Proxy
3
3
  module Ipam
4
- VERSION = '0.0.20'
4
+ VERSION = '0.0.21'
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_ipam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-05 00:00:00.000000000 Z
11
+ date: 2020-03-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Smart proxy plugin for IPAM integration with various IPAM providers
14
14
  email: chrisjsmith001@gmail.com