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 @@
1
+ /* Override this file with custom rules */
@@ -0,0 +1,57 @@
1
+ body {
2
+ margin: 0;
3
+ font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
4
+ font-size: 13px;
5
+ height: 101%;
6
+ overflow-x: hidden;
7
+ }
8
+
9
+ h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
10
+ .clear { clear: both; }
11
+ #search { position: absolute; right: 5px; top: 9px; padding-left: 24px; }
12
+ #content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; }
13
+ #full_list { padding: 0; list-style: none; margin-left: 0; }
14
+ #full_list ul { padding: 0; }
15
+ #full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; }
16
+ #noresults { padding: 7px 12px; }
17
+ #content.insearch #noresults { margin-left: 7px; }
18
+ ul.collapsed ul, ul.collapsed li { display: none; }
19
+ ul.collapsed.search_uncollapsed { display: block; }
20
+ ul.collapsed.search_uncollapsed li { display: list-item; }
21
+ li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; }
22
+ li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; }
23
+ li { color: #888; cursor: pointer; }
24
+ li.deprecated { text-decoration: line-through; font-style: italic; }
25
+ li.r1 { background: #f0f0f0; }
26
+ li.r2 { background: #fafafa; }
27
+ li:hover { background: #ddd; }
28
+ li small:before { content: "("; }
29
+ li small:after { content: ")"; }
30
+ li small.search_info { display: none; }
31
+ a:link, a:visited { text-decoration: none; color: #05a; }
32
+ li.clicked { background: #05a; color: #ccc; }
33
+ li.clicked a:link, li.clicked a:visited { color: #eee; }
34
+ li.clicked a.toggle { opacity: 0.5; background-position: bottom right; }
35
+ li.collapsed.clicked a.toggle { background-position: top right; }
36
+ #search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
37
+ #nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; }
38
+ #nav a:link, #nav a:visited { color: #358; }
39
+ #nav a:hover { background: transparent; color: #5af; }
40
+ .frames #nav span:after { content: ' | '; }
41
+ .frames #nav span:last-child:after { content: ''; }
42
+
43
+ .frames #content h1 { margin-top: 0; }
44
+ .frames li { white-space: nowrap; cursor: normal; }
45
+ .frames li small { display: block; font-size: 0.8em; }
46
+ .frames li small:before { content: ""; }
47
+ .frames li small:after { content: ""; }
48
+ .frames li small.search_info { display: none; }
49
+ .frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; }
50
+ .frames #content.insearch #search { background-position: center right; }
51
+ .frames #search input { width: 110px; }
52
+ .frames #nav { display: block; }
53
+
54
+ #full_list.insearch li { display: none; }
55
+ #full_list.insearch li.found { display: list-item; padding-left: 10px; }
56
+ #full_list.insearch li a.toggle { display: none; }
57
+ #full_list.insearch li small.search_info { display: block; }
data/doc/css/style.css ADDED
@@ -0,0 +1,328 @@
1
+ body {
2
+ padding: 0 20px;
3
+ font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
4
+ font-size: 13px;
5
+ }
6
+ body.frames { padding: 0 5px; }
7
+ h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; }
8
+ h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; }
9
+ h1.title { margin-bottom: 10px; }
10
+ h1.alphaindex { margin-top: 0; font-size: 22px; }
11
+ h2 {
12
+ padding: 0;
13
+ padding-bottom: 3px;
14
+ border-bottom: 1px #aaa solid;
15
+ font-size: 1.4em;
16
+ margin: 1.8em 0 0.5em;
17
+ }
18
+ h2 small { font-weight: normal; font-size: 0.7em; display: block; float: right; }
19
+ .clear { clear: both; }
20
+ .inline { display: inline; }
21
+ .inline p:first-child { display: inline; }
22
+ .docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; }
23
+ .docstring h1 { font-size: 1.2em; }
24
+ .docstring h2 { font-size: 1.1em; }
25
+ .docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; }
26
+ .summary_desc .object_link, .docstring .object_link { font-family: monospace; }
27
+ .rdoc-term { padding-right: 25px; font-weight: bold; }
28
+ .rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; }
29
+
30
+ /* style for <ul> */
31
+ #filecontents li > p, .docstring li > p { margin: 0px; }
32
+ #filecontents ul, .docstring ul { padding-left: 20px; }
33
+ /* style for <dl> */
34
+ #filecontents dl, .docstring dl { border: 1px solid #ccc; }
35
+ #filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; }
36
+ #filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; }
37
+ #filecontents dd > p, .docstring dd > p { margin: 0px; }
38
+
39
+ .note {
40
+ color: #222;
41
+ -moz-border-radius: 3px; -webkit-border-radius: 3px;
42
+ background: #e3e4e3; border: 1px solid #d5d5d5; padding: 7px 10px;
43
+ display: block;
44
+ }
45
+ .note.todo { background: #ffffc5; border-color: #ececaa; }
46
+ .note.returns_void { background: #efefef; }
47
+ .note.deprecated { background: #ffe5e5; border-color: #e9dada; }
48
+ .note.private { background: #ffffc5; border-color: #ececaa; }
49
+ .note.title { padding: 1px 5px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; }
50
+ .summary_signature + .note.title { margin-left: 7px; }
51
+ h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; }
52
+ .note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; }
53
+ .note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; }
54
+ .note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; }
55
+ .note.title.private { background: #d5d5d5; border-color: #c5c5c5; }
56
+ .note.title.not_defined_here { background: transparent; border: none; font-style: italic; }
57
+ .discussion .note { margin-top: 6px; }
58
+ .discussion .note:first-child { margin-top: 0; }
59
+
60
+ h3.inherited {
61
+ font-style: italic;
62
+ font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
63
+ font-weight: normal;
64
+ padding: 0;
65
+ margin: 0;
66
+ margin-top: 12px;
67
+ margin-bottom: 3px;
68
+ font-size: 13px;
69
+ }
70
+ p.inherited {
71
+ padding: 0;
72
+ margin: 0;
73
+ margin-left: 25px;
74
+ }
75
+
76
+ #filecontents dl.box, dl.box {
77
+ border: 0;
78
+ width: 520px;
79
+ font-size: 1em;
80
+ }
81
+ #filecontents dl.box dt, dl.box dt {
82
+ float: left;
83
+ display: block;
84
+ width: 100px;
85
+ margin: 0;
86
+ text-align: right;
87
+ font-weight: bold;
88
+ background: transparent;
89
+ border: 1px solid #aaa;
90
+ border-width: 1px 0px 0px 1px;
91
+ padding: 6px 0;
92
+ padding-right: 10px;
93
+ }
94
+ #filecontents dl.box dd, dl.box dd {
95
+ float: left;
96
+ display: block;
97
+ width: 380px;
98
+ margin: 0;
99
+ padding: 6px 0;
100
+ padding-right: 20px;
101
+ border: 1px solid #aaa;
102
+ border-width: 1px 1px 0 0;
103
+ }
104
+ #filecontents dl.box .last, dl.box .last {
105
+ border-bottom: 1px solid #aaa;
106
+ }
107
+ #filecontents dl.box .r1, dl.box .r1 { background: #eee; }
108
+
109
+ ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; }
110
+ .index_inline_list { padding-left: 0; font-size: 1.1em; }
111
+ .index_inline_list li { list-style: none; display: inline; padding: 7px 12px; line-height: 35px; }
112
+
113
+ dl.constants { margin-left: 40px; }
114
+ dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; }
115
+ dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; }
116
+
117
+ .summary_desc { margin-left: 32px; display: block; font-family: sans-serif; }
118
+ .summary_desc tt { font-size: 0.9em; }
119
+ dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; }
120
+ dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; }
121
+ dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; }
122
+ dl.constants .discussion *:first-child { margin-top: 0; }
123
+ dl.constants .discussion *:last-child { margin-bottom: 0; }
124
+
125
+ .method_details { border-top: 1px dotted #aaa; margin-top: 15px; padding-top: 0; }
126
+ .method_details.first { border: 0; }
127
+ p.signature, h3.signature {
128
+ font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace;
129
+ padding: 6px 10px; margin-top: 18px;
130
+ background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px;
131
+ }
132
+ p.signature tt,
133
+ h3.signature tt { font-family: Monaco, Consolas, Courier, monospace; }
134
+ p.signature .overload,
135
+ h3.signature .overload { display: block; }
136
+ p.signature .extras,
137
+ h3.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; }
138
+ p.signature .not_defined_here,
139
+ h3.signature .not_defined_here,
140
+ p.signature .aliases,
141
+ h3.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; }
142
+ p.signature .aliases .names,
143
+ h3.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; }
144
+
145
+ .tags .tag_title { font-size: 1em; margin-bottom: 0; font-weight: bold; }
146
+ .tags ul { margin-top: 5px; padding-left: 30px; list-style: square; }
147
+ .tags ul li { margin-bottom: 3px; }
148
+ .tags ul .name { font-family: monospace; font-weight: bold; }
149
+ .tags ul .note { padding: 3px 6px; }
150
+ .tags { margin-bottom: 12px; }
151
+
152
+ .tags .examples .tag_title { margin-bottom: 10px; font-weight: bold; }
153
+ .tags .examples .inline p { padding: 0; margin: 0; margin-left: 15px; font-weight: bold; font-size: 0.9em; }
154
+
155
+ .tags .overload .overload_item { list-style: none; margin-bottom: 25px; }
156
+ .tags .overload .overload_item .signature {
157
+ padding: 2px 8px;
158
+ background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px;
159
+ }
160
+ .tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; }
161
+ .tags .overload .docstring { margin-top: 15px; }
162
+
163
+ .defines { display: none; }
164
+
165
+ #method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; }
166
+
167
+ .showSource { font-size: 0.9em; }
168
+ .showSource a:link, .showSource a:visited { text-decoration: none; color: #666; }
169
+
170
+ #content a:link, #content a:visited { text-decoration: none; color: #05a; }
171
+ #content a:hover { background: #ffffa5; }
172
+ div.docstring, p.docstring { margin-right: 6em; }
173
+
174
+ ul.summary {
175
+ list-style: none;
176
+ font-family: monospace;
177
+ font-size: 1em;
178
+ line-height: 1.5em;
179
+ }
180
+ ul.summary a:link, ul.summary a:visited {
181
+ text-decoration: none; font-size: 1.1em;
182
+ }
183
+ ul.summary li { margin-bottom: 5px; }
184
+ .summary .summary_signature {
185
+ padding: 1px 10px;
186
+ background: #eaeaff; border: 1px solid #dfdfe5;
187
+ -moz-border-radius: 3px; -webkit-border-radius: 3px;
188
+ }
189
+ .summary_signature:hover { background: #eeeeff; cursor: pointer; }
190
+ ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;}
191
+ ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; }
192
+ #content .summary_signature:hover a:link,
193
+ #content .summary_signature:hover a:visited {
194
+ background: transparent;
195
+ color: #48f;
196
+ }
197
+
198
+ p.inherited a { font-family: monospace; font-size: 0.9em; }
199
+ p.inherited { word-spacing: 5px; font-size: 1.2em; }
200
+
201
+ p.children { font-size: 1.2em; }
202
+ p.children a { font-size: 0.9em; }
203
+ p.children strong { font-size: 0.8em; }
204
+ p.children strong.modules { padding-left: 5px; }
205
+
206
+ ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; }
207
+ ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; }
208
+ ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,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) no-repeat top center; }
209
+ ul.fullTree li:first-child { padding-top: 0; background: transparent; }
210
+ ul.fullTree li:last-child { padding-bottom: 0; }
211
+ .showAll ul.fullTree { display: block; }
212
+ .showAll .inheritName { display: none; }
213
+
214
+ #search { position: absolute; right: 14px; top: 0px; }
215
+ #search a:link, #search a:visited {
216
+ display: block; float: left; margin-right: 4px;
217
+ padding: 8px 10px; text-decoration: none; color: #05a;
218
+ border: 1px solid #d8d8e5;
219
+ -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px;
220
+ -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px;
221
+ background: #eaf0ff;
222
+ -webkit-box-shadow: -1px 1px 3px #ddd;
223
+ }
224
+ #search a:hover { background: #f5faff; color: #06b; }
225
+ #search a.active {
226
+ background: #568; padding-bottom: 20px; color: #fff; border: 1px solid #457;
227
+ -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;
228
+ -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px;
229
+ }
230
+ #search a.inactive { color: #999; }
231
+ .frames #search { display: none; }
232
+ .inheritanceTree, .toggleDefines { float: right; }
233
+
234
+ #menu { font-size: 1.3em; color: #bbb; top: -5px; position: relative; }
235
+ #menu .title, #menu a { font-size: 0.7em; }
236
+ #menu .title a { font-size: 1em; }
237
+ #menu .title { color: #555; }
238
+ #menu a:link, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; }
239
+ #menu a:hover { color: #05a; }
240
+ #menu .noframes { display: inline; }
241
+ .frames #menu .noframes { display: inline; float: right; }
242
+
243
+ #footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; }
244
+ #footer a:link, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; }
245
+ #footer a:hover { color: #05a; }
246
+
247
+ #listing ul.alpha { font-size: 1.1em; }
248
+ #listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; }
249
+ #listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; }
250
+ #listing ul.alpha ul { margin: 0; padding-left: 15px; }
251
+ #listing ul small { color: #666; font-size: 0.7em; }
252
+
253
+ li.r1 { background: #f0f0f0; }
254
+ li.r2 { background: #fafafa; }
255
+
256
+ #search_frame {
257
+ z-index: 9999;
258
+ background: #fff;
259
+ display: none;
260
+ position: absolute;
261
+ top: 36px;
262
+ right: 18px;
263
+ width: 500px;
264
+ height: 80%;
265
+ overflow-y: scroll;
266
+ border: 1px solid #999;
267
+ border-collapse: collapse;
268
+ -webkit-box-shadow: -7px 5px 25px #aaa;
269
+ -moz-box-shadow: -7px 5px 25px #aaa;
270
+ -moz-border-radius: 2px;
271
+ -webkit-border-radius: 2px;
272
+ }
273
+
274
+ #content ul.summary li.deprecated .summary_signature a:link,
275
+ #content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; }
276
+
277
+ #toc {
278
+ padding: 20px; padding-right: 30px; border: 1px solid #ddd; float: right; background: #fff; margin-left: 20px; margin-bottom: 20px;
279
+ max-width: 300px;
280
+ -webkit-box-shadow: -2px 2px 6px #bbb;
281
+ -moz-box-shadow: -2px 2px 6px #bbb;
282
+ z-index: 5000;
283
+ position: relative;
284
+ }
285
+ #toc.nofloat { float: none; max-width: none; border: none; padding: 0; margin: 20px 0; -webkit-box-shadow: none; -moz-box-shadow: none; }
286
+ #toc.nofloat.hidden { padding: 0; background: 0; margin-bottom: 5px; }
287
+ #toc .title { margin: 0; }
288
+ #toc ol { padding-left: 1.8em; }
289
+ #toc li { font-size: 1.1em; line-height: 1.7em; }
290
+ #toc > ol > li { font-size: 1.1em; font-weight: bold; }
291
+ #toc ol > ol { font-size: 0.9em; }
292
+ #toc ol ol > ol { padding-left: 2.3em; }
293
+ #toc ol + li { margin-top: 0.3em; }
294
+ #toc.hidden { padding: 10px; background: #f6f6f6; -webkit-box-shadow: none; -moz-box-shadow: none; }
295
+ #filecontents h1 + #toc.nofloat { margin-top: 0; }
296
+
297
+ /* syntax highlighting */
298
+ .source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; }
299
+ #filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; }
300
+ #filecontents pre.code, .docstring pre.code { display: block; }
301
+ .source_code .lines { padding-right: 12px; color: #555; text-align: right; }
302
+ #filecontents pre.code, .docstring pre.code,
303
+ .tags pre.example { padding: 5px 12px; margin-top: 4px; border: 1px solid #eef; background: #f5f5ff; }
304
+ pre.code { color: #000; }
305
+ pre.code .info.file { color: #555; }
306
+ pre.code .val { color: #036A07; }
307
+ pre.code .tstring_content,
308
+ pre.code .heredoc_beg, pre.code .heredoc_end,
309
+ pre.code .qwords_beg, pre.code .qwords_end,
310
+ pre.code .tstring, pre.code .dstring { color: #036A07; }
311
+ pre.code .fid, pre.code .rubyid_new, pre.code .rubyid_to_s,
312
+ pre.code .rubyid_to_sym, pre.code .rubyid_to_f,
313
+ pre.code .dot + pre.code .id,
314
+ pre.code .rubyid_to_i pre.code .rubyid_each { color: #0085FF; }
315
+ pre.code .comment { color: #0066FF; }
316
+ pre.code .const, pre.code .constant { color: #585CF6; }
317
+ pre.code .symbol { color: #C5060B; }
318
+ pre.code .kw,
319
+ pre.code .label,
320
+ pre.code .rubyid_require,
321
+ pre.code .rubyid_extend,
322
+ pre.code .rubyid_include { color: #0000FF; }
323
+ pre.code .ivar { color: #318495; }
324
+ pre.code .gvar,
325
+ pre.code .rubyid_backref,
326
+ pre.code .rubyid_nth_ref { color: #6D79DE; }
327
+ pre.code .regexp, .dregexp { color: #036A07; }
328
+ pre.code a { border-bottom: 1px dotted #bbf; }
@@ -0,0 +1,183 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII" />
6
+ <title>
7
+ File: README
8
+
9
+ &mdash; Documentation by YARD 0.8.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+ <span class="title">File: README</span>
36
+
37
+
38
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
+ </div>
40
+
41
+ <div id="search">
42
+
43
+ <a class="full_list_link" id="class_list_link"
44
+ href="class_list.html">
45
+ Class List
46
+ </a>
47
+
48
+ <a class="full_list_link" id="method_list_link"
49
+ href="method_list.html">
50
+ Method List
51
+ </a>
52
+
53
+ <a class="full_list_link" id="file_list_link"
54
+ href="file_list.html">
55
+ File List
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <iframe id="search_frame"></iframe>
63
+
64
+ <div id="content"><div id='filecontents'><h1>Boris</h1>
65
+
66
+ <h2>A networked-device scanning solution</h2>
67
+
68
+ <ul>
69
+ <li>Code: <a href="http://github.com/alkalinecoffee/boris">http://github.com/alkalinecoffee/boris</a></li>
70
+ <li>Issues: <a href="https://github.com/alkalinecoffee/boris/issues">https://github.com/alkalinecoffee/boris/issues</a></li>
71
+ </ul>
72
+
73
+ <h2>Introduction</h2>
74
+
75
+ <p>Boris is a library that facilitates the communication between you and various networked devices over SNMP, SSH and WMI, pulling a large amount of configuration items including installed software, network settings, serial numbers, user accounts, disk utilization, and more.</p>
76
+
77
+ <p>Out of the box, Boris has server support for Windows, Red Hat, and Solaris (with other platforms available with future plugins), with a focus on returning precisely formatted data, no matter which platforms your organization may have deployed. Through the use of profiles, Boris can easily be extended by the developer to include other platforms. Highly suitable for small and large environments alike looking to pull configuration data from various platforms.</p>
78
+
79
+ <h2>Features</h2>
80
+
81
+ <ul>
82
+ <li>Out of the box, pulls information from RedHat Linux, Solaris 10, and Windows servers</li>
83
+ <li>Utilizes SNMP, SSH, and WMI communication technologies</li>
84
+ <li>Expandable to include other networked devices, such as switches, load balancers, and other operating systems</li>
85
+ </ul>
86
+
87
+ <h2>Installation</h2>
88
+
89
+ <pre class="code ruby"><code><span class='id identifier rubyid_gem'>gem</span> <span class='id identifier rubyid_install'>install</span> <span class='id identifier rubyid_boris'>boris</span>
90
+ </code></pre>
91
+
92
+ <h2>Example</h2>
93
+
94
+ <p>Let&#39;s pull some information from a RedHat Enterprise Linux server on our network:</p>
95
+
96
+ <pre class="code ruby"><code><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>boris</span><span class='tstring_end'>'</span></span>
97
+
98
+ <span class='id identifier rubyid_target'>target</span> <span class='op'>=</span> <span class='const'>Boris</span><span class='op'>::</span><span class='const'>Target</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>redhatserver01.mydomain.com</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
99
+
100
+ <span class='comment'># let's use a helper to suggest how we should connect to it (which is useful if we're not sure what
101
+ </span><span class='comment'># kind of device this is)
102
+ </span><span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_suggested_connection_method'>suggested_connection_method</span>
103
+
104
+ <span class='comment'># you can also add the logic to make the decision yourself by checking if certain TCP ports are responsive
105
+ </span><span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_tcp_port_responding?'>tcp_port_responding?</span><span class='lparen'>(</span><span class='int'>22</span><span class='rparen'>)</span>
106
+
107
+ <span class='comment'># add credentials to try against this target
108
+ </span><span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_add_credential'>add_credential</span><span class='lparen'>(</span><span class='symbol'>:user</span><span class='op'>=&gt;</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>joe</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:password</span><span class='op'>=&gt;</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mypassword</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:connection_types</span><span class='op'>=&gt;</span><span class='lbracket'>[</span><span class='symbol'>:ssh</span><span class='rbracket'>]</span><span class='rparen'>)</span>
109
+
110
+ <span class='comment'># attempt to connect to this target using the credentials we supplied above
111
+ </span><span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_connect'>connect</span>
112
+
113
+ <span class='kw'>if</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
114
+ <span class='comment'># detect which profile to load up (is this target running windows? solaris? or what?). if we can't
115
+ </span> <span class='comment'># detect a suitable profile, this will throw an error
116
+ </span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_detect_profile'>detect_profile</span>
117
+
118
+ <span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_target_profile'>target_profile</span>
119
+
120
+ <span class='comment'># we can call individual methods to grab specific information we may be interested in (or call
121
+ </span> <span class='comment'># #retrieve_all to grab everything we can)
122
+ </span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_get_hardware'>get_hardware</span>
123
+
124
+ <span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_hardware'>hardware</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
125
+
126
+ <span class='comment'># finally, we can package up all of the data into json format for portability
127
+ </span> <span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
128
+ <span class='kw'>end</span>
129
+
130
+ <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span>
131
+ </code></pre>
132
+
133
+ <h2>Data</h2>
134
+
135
+ <p>Through a number of queries and algorithms, Boris effeciently polls devices on the network for information including, but not limited to, network configuration, hardware capabilities, installed software and services, applied hotfixes/patches, and more.</p>
136
+
137
+ <p><strong>Available methods for use on most platforms include:</strong></p>
138
+
139
+ <ul>
140
+ <li><strong>file systems</strong> - file system, mount point, capacity and utilization</li>
141
+ <li><strong>hardware</strong> - make/model, cpu information, firmware/bios version, serial number</li>
142
+ <li><strong>hosted shares</strong> - folders shared by the target</li>
143
+ <li><strong>installed applications</strong> - installed applications and the dates of their installation</li>
144
+ <li><strong>installed patches</strong> - installed patches/hotfixes and the dates of their installation</li>
145
+ <li><strong>installed services/daemons</strong> - background services and their startup modes</li>
146
+ <li><strong>local users and groups</strong> - local groups and the member users within each</li>
147
+ <li><strong>network ID</strong> - hostname and domain</li>
148
+ <li><strong>network interfaces</strong> - ethernet and fibre channel interfaces, including IPs, MAC addresses, connection status</li>
149
+ <li><strong>operating system</strong> - name, version, kernel, date installed</li>
150
+ </ul>
151
+
152
+ <p>See <span class='object_link'><a href="Boris/Profiles/Structure.html" title="Boris::Profiles::Structure (module)">Boris::Profiles::Structure</a></span> for more details on the data structure.</p>
153
+
154
+ <p>Because the commands that might work correctly on one type of platform most likely won&#39;t work on another, Boris handles this by the use of...</p>
155
+
156
+ <h2>Profiles</h2>
157
+
158
+ <p>Profiles contain the instructions that allow us to run commands against our target and then parse and make sense of the data. Boris comes with the capability to communicate with targets over SNMP, SSH, or WMI. Each profile is written to use one of these methods of communication (internally called &#39;connectors&#39;), which serve as a vehicle for running commands against a server. Boris comes with a few profiles built-in for some popular platforms, but can be easily extended to include other devices.</p>
159
+
160
+ <h2>Requirements</h2>
161
+
162
+ <ul>
163
+ <li>Ruby 1.9.3 (only tested on MRI)</li>
164
+ <li>Net/SSH gem</li>
165
+ <li>NetAddr gem</li>
166
+ <li>SNMP gem</li>
167
+ <li>Mocha (for tests only)</li>
168
+ <li>Shoulda (for tests only)</li>
169
+ </ul>
170
+
171
+ <h2>LICENSE</h2>
172
+
173
+ <p>This software is provided under the MIT license. See the LICENSE.md file.</p>
174
+ </div></div>
175
+
176
+ <div id="footer">
177
+ Generated on Sun Feb 3 16:32:41 2013 by
178
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
179
+ 0.8.3 (ruby-1.9.3).
180
+ </div>
181
+
182
+ </body>
183
+ </html>