boris 1.0.0.beta.1

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.
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: