netdot-restclient 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,12 +10,15 @@ module Netdot
10
10
  #
11
11
  # Arguments (hash):
12
12
  #
13
- # server - Netdot server URL
14
- # username - Netdot Username
15
- # password - Netdot password
16
- # retries - Number of attempts
17
- # timeout - Timeout in seconds
18
- # format - Content format <xml>
13
+ # server - Netdot server URL
14
+ # username - Netdot Username
15
+ # password - Netdot password
16
+ # retries - Number of attempts
17
+ # timeout - Timeout in seconds
18
+ # format - Content format <xml>
19
+ # ssl_verify - Verify server cert (default: yes)
20
+ # ssl_ca_file - Path to SSL CA cert file
21
+ # ssl_ca_dir - Path to SSL CA cert directory
19
22
  #
20
23
  # Returns:
21
24
  # Netdot::RestClient object
@@ -30,10 +33,11 @@ module Netdot
30
33
 
31
34
  argv.each { |k,v| instance_variable_set("@#{k}", v) }
32
35
 
33
- @timeout ||= 10
34
- @retries ||= 3
35
- @format ||= 'xml'
36
-
36
+ @timeout ||= 10
37
+ @retries ||= 3
38
+ @format ||= 'xml'
39
+ defined?(@ssl_verify) or @ssl_verify = true
40
+
37
41
  if ( @format == 'xml' )
38
42
  begin
39
43
  require 'xmlsimple'
@@ -49,6 +53,20 @@ module Netdot
49
53
  ua = HTTPClient.new(:agent_name => "Netdot::RestClient/#{self.version}")
50
54
  ua.set_cookie_store("cookie.dat")
51
55
 
56
+ # SSL stuff
57
+ if ( @ssl_verify )
58
+ if ( @ssl_ca_dir )
59
+ # We are told to add a certs path
60
+ # We'll want to clear the default cert store first
61
+ ua.ssl_config.clear_cert_store
62
+ ua.ssl_config.set_trust_ca(@ssl_ca_dir)
63
+ elsif ( @ssl_ca_file )
64
+ ua.ssl_config.set_trust_ca(@ssl_ca_file)
65
+ end
66
+ else
67
+ ua.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
68
+ end
69
+
52
70
  login_url = @server + '/NetdotLogin'
53
71
 
54
72
  resp = nil
@@ -60,17 +78,20 @@ module Netdot
60
78
  'credential_1' => @password,
61
79
  'permanent_session' => 1,
62
80
  }
63
- if resp
81
+
82
+ if ( resp.status == 302 )
64
83
  ua.save_cookie_store
65
84
  @ua = ua
66
85
  @base_url = @server + '/rest'
67
86
  break
68
87
  else
69
- $stderr.puts "Connection attempt to #{@server} failed"
88
+ $stderr.puts "Warning: Connection attempt to #{@server} failed"
70
89
  end
71
90
  end
72
-
73
- raise "Could not log into #{@server}" unless resp
91
+
92
+ unless ( resp.status == 302 )
93
+ raise "Could not log into #{@server}. Status Code: '#{resp.status}'"
94
+ end
74
95
 
75
96
  end
76
97
 
@@ -1,6 +1,6 @@
1
1
  module Netdot
2
2
  class RestClient
3
- VERSION = "1.0"
3
+ VERSION = "1.1"
4
4
 
5
5
  def version
6
6
  VERSION
@@ -10,7 +10,25 @@ describe Netdot::RestClient do
10
10
  Netdot::RestClient.new(args)
11
11
  }.to raise_error(ArgumentError)
12
12
 
13
+ args[:password] = 'this-is-not-the-password'
14
+ expect {
15
+ Netdot::RestClient.new(args)
16
+ }.to raise_error
17
+
13
18
  args[:password] = 'admin'
19
+
20
+ # The following two assume that local server has SSL
21
+ # enabled with a self-signed cert
22
+ args[:server] = 'https://localhost/netdot'
23
+ expect {
24
+ Netdot::RestClient.new(args)
25
+ }.to raise_error
26
+
27
+ args[:ssl_verify] = false
28
+ @netdot = Netdot::RestClient.new(args)
29
+ expect(@netdot).to be_an_instance_of(Netdot::RestClient)
30
+
31
+ args[:server] = 'http://localhost/netdot'
14
32
  @netdot = Netdot::RestClient.new(args)
15
33
  expect(@netdot).to be_an_instance_of(Netdot::RestClient)
16
34
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netdot-restclient
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-09 00:00:00.000000000 Z
12
+ date: 2014-05-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &83415360 !ruby/object:Gem::Requirement
16
+ requirement: &80662530 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.6'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *83415360
24
+ version_requirements: *80662530
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &83414820 !ruby/object:Gem::Requirement
27
+ requirement: &80662030 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *83414820
35
+ version_requirements: *80662030
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &83414210 !ruby/object:Gem::Requirement
38
+ requirement: &80661390 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.6'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *83414210
46
+ version_requirements: *80661390
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: httpclient
49
- requirement: &83413860 !ruby/object:Gem::Requirement
49
+ requirement: &80660500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *83413860
57
+ version_requirements: *80660500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: xml-simple
60
- requirement: &83413340 !ruby/object:Gem::Requirement
60
+ requirement: &80659760 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *83413340
68
+ version_requirements: *80659760
69
69
  description: Talk to Netdot via REST with Ruby
70
70
  email:
71
71
  - cvicente@gmail.com