boris 1.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/LICENSE.md +9 -0
  2. data/README.md +94 -0
  3. data/boris.gemspec +28 -0
  4. data/doc/Array.html +437 -0
  5. data/doc/Boris.html +230 -0
  6. data/doc/Boris/ConnectionAlreadyActive.html +123 -0
  7. data/doc/Boris/ConnectionFailed.html +127 -0
  8. data/doc/Boris/Connector.html +794 -0
  9. data/doc/Boris/InvalidCredentials.html +131 -0
  10. data/doc/Boris/InvalidOption.html +123 -0
  11. data/doc/Boris/InvalidTargetName.html +123 -0
  12. data/doc/Boris/Lumberjack.html +466 -0
  13. data/doc/Boris/MissingCredentials.html +123 -0
  14. data/doc/Boris/NoActiveConnection.html +123 -0
  15. data/doc/Boris/NoProfileDetected.html +123 -0
  16. data/doc/Boris/Options.html +783 -0
  17. data/doc/Boris/Profiles.html +117 -0
  18. data/doc/Boris/Profiles/Linux.html +1151 -0
  19. data/doc/Boris/Profiles/RedHat.html +875 -0
  20. data/doc/Boris/Profiles/Solaris.html +1230 -0
  21. data/doc/Boris/Profiles/Structure.html +2050 -0
  22. data/doc/Boris/Profiles/UNIX.html +893 -0
  23. data/doc/Boris/Profiles/Windows.html +1846 -0
  24. data/doc/Boris/Profiles/Windows/Windows2003.html +304 -0
  25. data/doc/Boris/Profiles/Windows/Windows2008.html +379 -0
  26. data/doc/Boris/Profiles/Windows/Windows2012.html +304 -0
  27. data/doc/Boris/SNMPConnector.html +512 -0
  28. data/doc/Boris/SSHConnector.html +633 -0
  29. data/doc/Boris/Target.html +2002 -0
  30. data/doc/Boris/WMIConnector.html +1134 -0
  31. data/doc/BorisLogger.html +217 -0
  32. data/doc/Hash.html +195 -0
  33. data/doc/String.html +1246 -0
  34. data/doc/_index.html +420 -0
  35. data/doc/class_list.html +53 -0
  36. data/doc/css/common.css +1 -0
  37. data/doc/css/full_list.css +57 -0
  38. data/doc/css/style.css +328 -0
  39. data/doc/file.README.html +183 -0
  40. data/doc/file_list.html +55 -0
  41. data/doc/frames.html +28 -0
  42. data/doc/index.html +183 -0
  43. data/doc/js/app.js +214 -0
  44. data/doc/js/full_list.js +173 -0
  45. data/doc/js/jquery.js +4 -0
  46. data/doc/method_list.html +1468 -0
  47. data/doc/top-level-namespace.html +126 -0
  48. data/lib/boris.rb +30 -0
  49. data/lib/boris/connectors.rb +47 -0
  50. data/lib/boris/connectors/snmp.rb +56 -0
  51. data/lib/boris/connectors/ssh.rb +110 -0
  52. data/lib/boris/connectors/wmi.rb +186 -0
  53. data/lib/boris/errors.rb +17 -0
  54. data/lib/boris/helpers/array.rb +63 -0
  55. data/lib/boris/helpers/constants.rb +20 -0
  56. data/lib/boris/helpers/hash.rb +8 -0
  57. data/lib/boris/helpers/scrubber.rb +51 -0
  58. data/lib/boris/helpers/string.rb +130 -0
  59. data/lib/boris/lumberjack.rb +47 -0
  60. data/lib/boris/options.rb +86 -0
  61. data/lib/boris/profiles/linux/redhat.rb +77 -0
  62. data/lib/boris/profiles/linux_core.rb +216 -0
  63. data/lib/boris/profiles/unix/solaris.rb +307 -0
  64. data/lib/boris/profiles/unix_core.rb +85 -0
  65. data/lib/boris/profiles/windows/windows2003.rb +15 -0
  66. data/lib/boris/profiles/windows/windows2008.rb +23 -0
  67. data/lib/boris/profiles/windows/windows2012.rb +15 -0
  68. data/lib/boris/profiles/windows_core.rb +530 -0
  69. data/lib/boris/structure.rb +167 -0
  70. data/lib/boris/target.rb +340 -0
  71. data/test/connector_tests/test_snmp.rb +35 -0
  72. data/test/connector_tests/test_ssh.rb +51 -0
  73. data/test/connector_tests/test_wmi.rb +129 -0
  74. data/test/helper_tests/test_array.rb +25 -0
  75. data/test/helper_tests/test_hash.rb +10 -0
  76. data/test/helper_tests/test_string.rb +136 -0
  77. data/test/profile_tests/test_core_skeleton +107 -0
  78. data/test/profile_tests/test_linux_core.rb +331 -0
  79. data/test/profile_tests/test_redhat.rb +134 -0
  80. data/test/profile_tests/test_solaris.rb +523 -0
  81. data/test/profile_tests/test_unix_core.rb +117 -0
  82. data/test/profile_tests/test_windows.rb +536 -0
  83. data/test/setup_tests.rb +14 -0
  84. data/test/test_all.rb +8 -0
  85. data/test/test_options.rb +44 -0
  86. data/test/test_structure.rb +136 -0
  87. data/test/test_target.rb +146 -0
  88. metadata +241 -0
@@ -0,0 +1,14 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'test/unit'
4
+ require 'shoulda'
5
+ require 'boris'
6
+
7
+ include Boris
8
+
9
+ class ProfileTestSetup < Test::Unit::TestCase
10
+ def initialize(test)
11
+ super(test)
12
+ @target = Target.new('0.0.0.0')
13
+ end
14
+ end
data/test/test_all.rb ADDED
@@ -0,0 +1,8 @@
1
+ $: << '.'
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) do
4
+ test_files = Dir['test_*.rb'] - [('test_all.rb')]
5
+ test_files.concat(Dir['**/test_*.rb'])
6
+
7
+ test_files.each { |file| require file }
8
+ end
@@ -0,0 +1,44 @@
1
+ require 'setup_tests'
2
+
3
+ class OptionsTest < Test::Unit::TestCase
4
+ context 'the options for a Target' do
5
+ setup do
6
+ @options = Options.new
7
+ end
8
+
9
+ should 'be modifiable via the options hash' do
10
+ @options[:auto_scrub_data] = false
11
+ @options[:credentials] = [{:user=>'someuser'}]
12
+ @options[:log_level] = Logger::INFO
13
+ @options[:profiles] = [:windows_core]
14
+ @options[:snmp_options] = {:MibModules=>['IF-MIB']}
15
+ @options[:ssh_options] = {:keys=>'~/.ssh/my_private_key', :verbose=>:debug}
16
+
17
+ assert_equal(false, @options[:auto_scrub_data])
18
+ assert_equal([{:user=>'someuser'}], @options[:credentials])
19
+ assert_equal(Logger::INFO, @options[:log_level])
20
+ assert_equal([:windows_core], @options[:profiles])
21
+ assert_equal({:MibModules=>['IF-MIB']}, @options[:snmp_options])
22
+ assert_equal({:keys=>'~/.ssh/my_private_key', :verbose=>:debug}, @options[:ssh_options])
23
+ end
24
+
25
+ should 'error if invalid options are provided' do
26
+ assert_raise(ArgumentError) {@options[:invalid_option] = nil}
27
+ end
28
+
29
+ should 'error if invalid options are passed to #add_credential' do
30
+ assert_raise(ArgumentError) {@options.add_credential(:password=>'somepass')}
31
+ assert_raise(ArgumentError) {@options.add_credential(:user=>'someuser', :connection_types=>[:i_dont_exist])}
32
+ assert_raise(ArgumentError) {@options.add_credential([{:user=>'someuser1'},{:user=>'someuser2'}])}
33
+ end
34
+
35
+ should 'allow its credentials be added through #add_credential' do
36
+ @options.add_credential(:user=>'someuser', :password=>'somepass', :connection_types=>[:wmi])
37
+ @options.add_credential(:user=>'someotheruser', :connection_types=>[:ssh])
38
+ assert_equal([
39
+ {:user=>'someuser', :password=>'somepass', :connection_types=>[:wmi]},
40
+ {:user=>'someotheruser', :connection_types=>[:ssh]}
41
+ ], @options[:credentials])
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,136 @@
1
+ require 'setup_tests'
2
+
3
+ class ProfileStructure
4
+ include Profiles::Structure
5
+ attr_accessor :logger, :options
6
+ end
7
+
8
+ class StructureTest < Test::Unit::TestCase
9
+ context 'a data structure' do
10
+ setup do
11
+ @structure = ProfileStructure.new
12
+ @structure.options = Options.new
13
+ end
14
+
15
+ should 'provide us with a file system template via #file_system_template' do
16
+ expected = [
17
+ :capacity_mb,
18
+ :file_system,
19
+ :mount_point,
20
+ :san_storage,
21
+ :used_space_mb
22
+ ].to_nil_hash
23
+
24
+ assert_equal(expected, @structure.file_system_template)
25
+ end
26
+
27
+ should 'provide us with a hardware template via #get_hardware' do
28
+ expected = [
29
+ :cpu_architecture,
30
+ :cpu_core_count,
31
+ :cpu_model,
32
+ :cpu_physical_count,
33
+ :cpu_speed_mhz,
34
+ :cpu_vendor,
35
+ :firmware_version,
36
+ :model,
37
+ :memory_installed_mb,
38
+ :serial,
39
+ :vendor
40
+ ].to_nil_hash
41
+
42
+ assert_equal(expected, @structure.get_hardware)
43
+ end
44
+
45
+ should 'provide us with an installed application template via #installed_application_template' do
46
+ expected = [
47
+ :date_installed,
48
+ :install_location,
49
+ :license_key,
50
+ :name,
51
+ :vendor,
52
+ :version
53
+ ].to_nil_hash
54
+
55
+ assert_equal(expected, @structure.installed_application_template)
56
+ end
57
+
58
+ should 'provide us with a local user groups template via #local_user_groups_template' do
59
+ expected = {
60
+ :group=>nil,
61
+ :members=>[]
62
+ }
63
+
64
+ assert_equal(expected, @structure.local_user_groups_template)
65
+ end
66
+
67
+ should 'provide us with a network identification template via #get_network_id' do
68
+ expected = [
69
+ :domain,
70
+ :hostname
71
+ ].to_nil_hash
72
+
73
+ assert_equal(expected, @structure.get_network_id)
74
+ end
75
+
76
+ should 'provide us with a network interface template via #network_interface_template' do
77
+ expected = [
78
+ :auto_negotiate,
79
+ :current_speed_mbps,
80
+ :duplex,
81
+ :fabric_name,
82
+ :is_uplink,
83
+ :mac_address,
84
+ :model,
85
+ :model_id,
86
+ :mtu,
87
+ :name,
88
+ :node_wwn,
89
+ :port_wwn,
90
+ :remote_mac_address,
91
+ :status,
92
+ :type,
93
+ :vendor,
94
+ :vendor_id,
95
+ :dns_servers=>[],
96
+ :ip_addresses=>[]
97
+ ].to_nil_hash
98
+
99
+ assert_equal(expected, @structure.network_interface_template)
100
+ end
101
+
102
+ should 'provide us with an operating system template via #get_operating_system' do
103
+ expected = [
104
+ :date_installed,
105
+ :kernel,
106
+ :license_key,
107
+ :name,
108
+ :service_pack,
109
+ :version,
110
+ :features=>[],
111
+ :roles=>[]
112
+ ].to_nil_hash
113
+
114
+ assert_equal(expected, @structure.get_operating_system)
115
+ end
116
+
117
+ should 'provide us with a patch template via #installed_patch_template' do
118
+ expected = [
119
+ :date_installed,
120
+ :installed_by,
121
+ :patch_code
122
+ ].to_nil_hash
123
+
124
+ assert_equal(expected, @structure.installed_patch_template)
125
+ end
126
+
127
+ should 'provide us with a share template via #hosted_share_template' do
128
+ expected = [
129
+ :name,
130
+ :path
131
+ ].to_nil_hash
132
+
133
+ assert_equal(expected, @structure.hosted_share_template)
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,146 @@
1
+ require 'setup_tests'
2
+
3
+ class TargetTest < Test::Unit::TestCase
4
+ context 'a Target' do
5
+ setup do
6
+ @target = Target.new('0.0.0.0')
7
+ @target.extend(Profiles::Structure)
8
+ @cred = {:user=>'someuser', :password=>'somepass'}
9
+ end
10
+
11
+ should 'return host info after calling #load_host_info' do
12
+ @target.expects(:load_host_info).returns([@host, nil])
13
+ assert_equal(@target.load_host_info, [@host, nil])
14
+ end
15
+
16
+ should 'allow its target name to be readable' do
17
+ assert_equal('0.0.0.0', @target.host)
18
+ end
19
+
20
+ should 'allow its options to be modifiable by passing a block to Target#new' do
21
+ Target.new(@host) do |t|
22
+ t.options[:ssh_options] = {:timeout=>10}
23
+
24
+ assert_equal({:timeout=>10}, t.options[:ssh_options])
25
+ end
26
+ end
27
+
28
+ should 'allow us to call methods for retrieving all standard configuration items via #retrieve_all' do
29
+ @target.options[:auto_scrub_data] = false
30
+ @target.retrieve_all
31
+
32
+ assert_equal([], @target.file_systems)
33
+ assert_equal([], @target.installed_applications)
34
+ assert_equal([], @target.local_user_groups)
35
+ assert_equal([], @target.network_interfaces)
36
+ assert_equal([], @target.installed_patches)
37
+ assert_equal([], @target.hosted_shares)
38
+ end
39
+
40
+ should 'allow its data (instance variables) to be produced as json' do
41
+ long_json_string = %w{
42
+ {"file_systems":null,
43
+ "hardware":null,
44
+ "hosted_shares":null,
45
+ "installed_applications":null,
46
+ "installed_patches":null,
47
+ "installed_services":null,
48
+ "local_user_groups":null,
49
+ "network_id":null,
50
+ "network_interfaces":null,
51
+ "operating_system":null}}.join
52
+
53
+ assert_equal(long_json_string, @target.to_json)
54
+ end
55
+
56
+
57
+ should 'allow credentials to be added through #add_credential' do
58
+ @target.options.add_credential(@cred.merge!(:connection_types=>[:wmi]))
59
+ assert_equal([@cred], @target.options[:credentials])
60
+ end
61
+
62
+ context 'listening on certain ports' do
63
+ should "allow us to detect a possible SSH connection if it is listening on port #{Boris::PORT_DEFAULTS[:ssh]}" do
64
+ @target.expects(:tcp_port_responding?).with(22).returns(true)
65
+ @target.expects(:tcp_port_responding?).with(135).returns(false)
66
+ assert_equal(:ssh, @target.suggested_connection_method)
67
+ end
68
+
69
+ should "allow us to detect a possible WMI connection if if it is listening on port #{Boris::PORT_DEFAULTS[:wmi]}" do
70
+ @target.expects(:tcp_port_responding?).with(135).returns(true)
71
+ assert_equal(:wmi, @target.suggested_connection_method)
72
+ end
73
+
74
+ should 'return with no detected connection method if all attempts fail' do
75
+ @target.expects(:tcp_port_responding?).with(22).returns(false)
76
+ @target.expects(:tcp_port_responding?).with(135).returns(false)
77
+ assert_nil(nil, @target.suggested_connection_method)
78
+ end
79
+ end
80
+
81
+ context 'that we will try to connect to' do
82
+ should 'error if no credentials are specified' do
83
+ assert_raise(InvalidOption) {@target.connect}
84
+ end
85
+
86
+ should 'error if we try to detect the profile when there is no active connection' do
87
+ assert_raise(NoActiveConnection) {@target.detect_profile}
88
+ end
89
+
90
+ should 'attempt an SSH and WMI connection only once if the target does not respond to an attempt' do
91
+ skip("test relies on WIN32OLE") if PLATFORM != :win32
92
+
93
+ @target.options.add_credential(@cred.merge!(:connection_types=>[:snmp, :ssh, :wmi]))
94
+
95
+ Net::SSH.stubs(:start).raises(Net::SSH::HostKeyMismatch)
96
+ WIN32OLE.any_instance.stubs(:ConnectServer).raises(WIN32OLERuntimeError, 'rpc server is unavailable')
97
+
98
+ SSHConnector.any_instance.expects(:establish_connection).once
99
+ WMIConnector.any_instance.expects(:establish_connection).once
100
+
101
+ @target.connect
102
+ end
103
+
104
+ should 'attempt a connection only once when connection is not available and when multiple credentials are supplied' do
105
+ @target.options[:credentials] = [@cred.merge(:connection_types=>[:ssh])]
106
+ @target.options[:credentials] << @cred.merge(:connection_types=>[:ssh])
107
+
108
+ SSHConnector.any_instance.stubs(:reconnectable).returns(false)
109
+ SSHConnector.any_instance.expects(:establish_connection).once
110
+
111
+ @target.connect
112
+ end
113
+ end
114
+
115
+ context 'that we have successfully connected to' do
116
+ setup do
117
+ ssh_connection = mock('SSHConnector')
118
+ @target.connector = ssh_connection
119
+
120
+ @target.connector.stubs(:connected?).returns(true)
121
+ @target.connector.stubs(:class).returns(Connector::SSHConnector)
122
+ @target.stubs(:connect).returns(@target.connector)
123
+
124
+ @target.options[:profiles].each do |profile|
125
+ profile.stubs(:matches_target?).returns(false)
126
+ end
127
+
128
+ @target.connect
129
+ end
130
+
131
+ should 'raise an error if no profiles are found to be suitable' do
132
+ assert_raise(NoProfileDetected) {@target.detect_profile}
133
+ end
134
+
135
+ should 'detect the best profile for our target' do
136
+ Profiles::RedHat.stubs(:matches_target?).returns(true)
137
+ assert_equal(Profiles::RedHat, @target.detect_profile)
138
+ end
139
+
140
+ should 'allow us to force a profile to be used for our target even if it is not ideal' do
141
+ @target.force_profile_to(Profiles::RedHat)
142
+ assert_equal(Profiles::RedHat, @target.target_profile)
143
+ end
144
+ end
145
+ end
146
+ end
metadata ADDED
@@ -0,0 +1,241 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: boris
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.beta.1
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Joe Martin
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: netaddr
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: net-ssh
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: snmp
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: mocha
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: shoulda
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: ! 'Boris: A networked-device scanning library. Boris allows you to write
95
+ programs for logging into and pulling information off of various server platforms,
96
+ appliances, and other types of networked devices, producing clean and consistent
97
+ data ideal for configuration managment usage.'
98
+ email: jwmartin83@gmail.com
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - ./boris.gemspec
104
+ - ./doc/_index.html
105
+ - ./doc/Array.html
106
+ - ./doc/Boris/ConnectionAlreadyActive.html
107
+ - ./doc/Boris/ConnectionFailed.html
108
+ - ./doc/Boris/Connector.html
109
+ - ./doc/Boris/InvalidCredentials.html
110
+ - ./doc/Boris/InvalidOption.html
111
+ - ./doc/Boris/InvalidTargetName.html
112
+ - ./doc/Boris/Lumberjack.html
113
+ - ./doc/Boris/MissingCredentials.html
114
+ - ./doc/Boris/NoActiveConnection.html
115
+ - ./doc/Boris/NoProfileDetected.html
116
+ - ./doc/Boris/Options.html
117
+ - ./doc/Boris/Profiles/Linux.html
118
+ - ./doc/Boris/Profiles/RedHat.html
119
+ - ./doc/Boris/Profiles/Solaris.html
120
+ - ./doc/Boris/Profiles/Structure.html
121
+ - ./doc/Boris/Profiles/UNIX.html
122
+ - ./doc/Boris/Profiles/Windows/Windows2003.html
123
+ - ./doc/Boris/Profiles/Windows/Windows2008.html
124
+ - ./doc/Boris/Profiles/Windows/Windows2012.html
125
+ - ./doc/Boris/Profiles/Windows.html
126
+ - ./doc/Boris/Profiles.html
127
+ - ./doc/Boris/SNMPConnector.html
128
+ - ./doc/Boris/SSHConnector.html
129
+ - ./doc/Boris/Target.html
130
+ - ./doc/Boris/WMIConnector.html
131
+ - ./doc/Boris.html
132
+ - ./doc/BorisLogger.html
133
+ - ./doc/class_list.html
134
+ - ./doc/css/common.css
135
+ - ./doc/css/full_list.css
136
+ - ./doc/css/style.css
137
+ - ./doc/file.README.html
138
+ - ./doc/file_list.html
139
+ - ./doc/frames.html
140
+ - ./doc/Hash.html
141
+ - ./doc/index.html
142
+ - ./doc/js/app.js
143
+ - ./doc/js/full_list.js
144
+ - ./doc/js/jquery.js
145
+ - ./doc/method_list.html
146
+ - ./doc/String.html
147
+ - ./doc/top-level-namespace.html
148
+ - ./lib/boris/connectors/snmp.rb
149
+ - ./lib/boris/connectors/ssh.rb
150
+ - ./lib/boris/connectors/wmi.rb
151
+ - ./lib/boris/connectors.rb
152
+ - ./lib/boris/errors.rb
153
+ - ./lib/boris/helpers/array.rb
154
+ - ./lib/boris/helpers/constants.rb
155
+ - ./lib/boris/helpers/hash.rb
156
+ - ./lib/boris/helpers/scrubber.rb
157
+ - ./lib/boris/helpers/string.rb
158
+ - ./lib/boris/lumberjack.rb
159
+ - ./lib/boris/options.rb
160
+ - ./lib/boris/profiles/linux/redhat.rb
161
+ - ./lib/boris/profiles/linux_core.rb
162
+ - ./lib/boris/profiles/unix/solaris.rb
163
+ - ./lib/boris/profiles/unix_core.rb
164
+ - ./lib/boris/profiles/windows/windows2003.rb
165
+ - ./lib/boris/profiles/windows/windows2008.rb
166
+ - ./lib/boris/profiles/windows/windows2012.rb
167
+ - ./lib/boris/profiles/windows_core.rb
168
+ - ./lib/boris/structure.rb
169
+ - ./lib/boris/target.rb
170
+ - ./lib/boris.rb
171
+ - ./LICENSE.md
172
+ - ./README.md
173
+ - ./test/connector_tests/test_snmp.rb
174
+ - ./test/connector_tests/test_ssh.rb
175
+ - ./test/connector_tests/test_wmi.rb
176
+ - ./test/helper_tests/test_array.rb
177
+ - ./test/helper_tests/test_hash.rb
178
+ - ./test/helper_tests/test_string.rb
179
+ - ./test/profile_tests/test_core_skeleton
180
+ - ./test/profile_tests/test_linux_core.rb
181
+ - ./test/profile_tests/test_redhat.rb
182
+ - ./test/profile_tests/test_solaris.rb
183
+ - ./test/profile_tests/test_unix_core.rb
184
+ - ./test/profile_tests/test_windows.rb
185
+ - ./test/setup_tests.rb
186
+ - ./test/test_all.rb
187
+ - ./test/test_options.rb
188
+ - ./test/test_structure.rb
189
+ - ./test/test_target.rb
190
+ - lib/boris/connectors/snmp.rb
191
+ - lib/boris/connectors/ssh.rb
192
+ - lib/boris/connectors/wmi.rb
193
+ - lib/boris/connectors.rb
194
+ - lib/boris/errors.rb
195
+ - lib/boris/helpers/array.rb
196
+ - lib/boris/helpers/constants.rb
197
+ - lib/boris/helpers/hash.rb
198
+ - lib/boris/helpers/scrubber.rb
199
+ - lib/boris/helpers/string.rb
200
+ - lib/boris/lumberjack.rb
201
+ - lib/boris/options.rb
202
+ - lib/boris/profiles/linux/redhat.rb
203
+ - lib/boris/profiles/linux_core.rb
204
+ - lib/boris/profiles/unix/solaris.rb
205
+ - lib/boris/profiles/unix_core.rb
206
+ - lib/boris/profiles/windows/windows2003.rb
207
+ - lib/boris/profiles/windows/windows2008.rb
208
+ - lib/boris/profiles/windows/windows2012.rb
209
+ - lib/boris/profiles/windows_core.rb
210
+ - lib/boris/structure.rb
211
+ - lib/boris/target.rb
212
+ - lib/boris.rb
213
+ homepage: https://github.com/alkalinecoffee/boris
214
+ licenses: []
215
+ post_install_message:
216
+ rdoc_options: []
217
+ require_paths:
218
+ - lib
219
+ required_ruby_version: !ruby/object:Gem::Requirement
220
+ none: false
221
+ requirements:
222
+ - - ! '>='
223
+ - !ruby/object:Gem::Version
224
+ version: 1.9.3
225
+ required_rubygems_version: !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>'
229
+ - !ruby/object:Gem::Version
230
+ version: 1.3.1
231
+ requirements:
232
+ - netaddr
233
+ - net/ssh
234
+ - snmp
235
+ rubyforge_project:
236
+ rubygems_version: 1.8.25
237
+ signing_key:
238
+ specification_version: 3
239
+ summary: ! 'Boris: A networked-device scanning library.'
240
+ test_files: []
241
+ has_rdoc: