boris 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/boris/target.rb CHANGED
@@ -3,7 +3,6 @@ require 'boris/options'
3
3
  require 'boris/connectors/snmp'
4
4
  require 'boris/connectors/ssh'
5
5
  require 'boris/connectors/wmi'
6
- require 'boris/helpers/network'
7
6
 
8
7
  module Boris
9
8
  # {Boris::Target} is the basic class from which you can control the underlying framework
@@ -63,7 +62,7 @@ module Boris
63
62
  # @param [Hash] category name
64
63
  # @return [Array, Hash] scanned data elements for provided category
65
64
  def [](category)
66
- eval "@profiler.#{category.to_s}"
65
+ @profiler.instance_variable_get("@#{category}".to_sym)
67
66
  end
68
67
 
69
68
  # Connects to the target using the credentials supplied via the connection type as specified
@@ -105,7 +104,9 @@ module Boris
105
104
  # we won't add snmp to the @unavailable_connection_types array, as it
106
105
  # could respond later with another community string
107
106
  when :ssh
108
- if !@unavailable_connection_types.include?(:ssh)
107
+ if @unavailable_connection_types.include?(:ssh)
108
+ debug 'connection attempt bypassed (ssh connection unavailable)'
109
+ else
109
110
  @connector = SSHConnector.new(@host, cred, @options)
110
111
  @connector.establish_connection
111
112
 
@@ -114,7 +115,9 @@ module Boris
114
115
  end
115
116
  end
116
117
  when :wmi
117
- if !@unavailable_connection_types.include?(:wmi)
118
+ if @unavailable_connection_types.include?(:wmi)
119
+ debug 'connection attempt bypassed (wmi connection unavailable)'
120
+ else
118
121
  @connector = WMIConnector.new(@host, cred)
119
122
  @connector.establish_connection
120
123
 
@@ -130,7 +133,7 @@ module Boris
130
133
 
131
134
  info 'all connection attempts failed' if !@connector.connected?
132
135
 
133
- return @connector ? true : false
136
+ return @connector.connected? ? true : false
134
137
  end
135
138
 
136
139
  # Checks on the status of the connection.
@@ -158,7 +161,7 @@ module Boris
158
161
  raise NoActiveConnection, 'no active connection' if @connector.connected? == false
159
162
 
160
163
  @options[:profilers].each do |profiler|
161
- break if @profiler
164
+ break if @profiler || @connector.failure_message
162
165
 
163
166
  if profiler.connection_type == @connector.class
164
167
  debug "testing profiler: #{profiler}"
@@ -175,6 +178,8 @@ module Boris
175
178
  end
176
179
  end
177
180
 
181
+ raise PasswordExpired, @connector.failure_message if @connector.failure_message
182
+
178
183
  raise NoProfilerDetected, 'no suitable profiler found' if !@profiler
179
184
 
180
185
  @profiler
@@ -207,7 +212,7 @@ module Boris
207
212
  # @param [Hash] category name
208
213
  # @return [Array, Hash] scanned data elements for provided category
209
214
  def get(category)
210
- eval "@profiler.get_#{category.to_s}"
215
+ @profiler.send("get_#{category.to_s}")
211
216
  self[category]
212
217
  end
213
218
 
@@ -243,7 +248,7 @@ module Boris
243
248
 
244
249
  Structure::CATEGORIES.each do |category|
245
250
  debug "calling #get_#{category.to_s}"
246
- eval "@profiler.get_#{category.to_s}"
251
+ @profiler.send("get_#{category.to_s}")
247
252
  end
248
253
 
249
254
  debug 'all items retrieved successfully'
@@ -254,12 +259,7 @@ module Boris
254
259
  # Parses the target's scanned data into JSON format for portability.
255
260
  #
256
261
  # target.get(:network_id)
257
- # json_string = target.to_json #=> "{...\"domain\":\"mydomain.com\",\"hostname\":\"SERVER01\"}"...
258
- #
259
- # # The JSON string can later be parsed back into an object
260
- # target_object = JSON.parse(json_string, :symbolize_names=>true)
261
- # # and easily accessed...
262
- # target_object[:network_id] #=> {:domain=>"mydomain.com", :hostname=>"SERVER01"}
262
+ # json_string = target.to_json #=> "...{\"domain\":\"mydomain.com\",\"hostname\":\"SERVER01\"}"...
263
263
  #
264
264
  # @param [Hash] print_type a symbol value for json output options. Only option supported now
265
265
  # is :pretty_print to determine whether the data should be returned in json format with
data/lib/boris/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Boris
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
metadata CHANGED
@@ -1,97 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boris
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
- prerelease:
4
+ version: 1.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Joe Martin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
11
+ date: 2013-04-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: netaddr
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.5.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.5.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: net-ssh
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: 2.5.2
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: 2.5.2
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: snmp
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 1.1.0
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 1.1.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: mocha
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: 0.12.3
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: 0.12.3
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: shoulda
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: 3.1.1
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: 3.1.1
94
- description: ! 'Boris: A networked-device scanning library. Boris allows you to write
83
+ description: 'Boris: A networked-device scanning library. Boris allows you to write
95
84
  programs for logging into and pulling information off of various server platforms,
96
85
  appliances, and other types of networked devices, producing clean and consistent
97
86
  data ideal for configuration managment usage.'
@@ -111,6 +100,8 @@ files:
111
100
  - lib/boris/helpers/network.rb
112
101
  - lib/boris/helpers/scrubber.rb
113
102
  - lib/boris/helpers/string.rb
103
+ - lib/boris/helpers/time.rb
104
+ - lib/boris/helpers.rb
114
105
  - lib/boris/lumberjack.rb
115
106
  - lib/boris/options.rb
116
107
  - lib/boris/profiler.rb
@@ -132,27 +123,25 @@ files:
132
123
  - README.md
133
124
  homepage: https://github.com/alkalinecoffee/boris
134
125
  licenses: []
126
+ metadata: {}
135
127
  post_install_message:
136
128
  rdoc_options: []
137
129
  require_paths:
138
130
  - lib
139
131
  required_ruby_version: !ruby/object:Gem::Requirement
140
- none: false
141
132
  requirements:
142
- - - ! '>='
133
+ - - '>='
143
134
  - !ruby/object:Gem::Version
144
135
  version: 1.9.3
145
136
  required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
137
  requirements:
148
- - - ! '>='
138
+ - - '>='
149
139
  - !ruby/object:Gem::Version
150
140
  version: '0'
151
141
  requirements: []
152
142
  rubyforge_project:
153
- rubygems_version: 1.8.24
143
+ rubygems_version: 2.0.0
154
144
  signing_key:
155
- specification_version: 3
156
- summary: ! 'Boris: A networked-device scanning library.'
145
+ specification_version: 4
146
+ summary: 'Boris: A networked-device scanning library.'
157
147
  test_files: []
158
- has_rdoc: