smart_proxy_ipam 0.0.20 → 0.0.21

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