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,2002 @@
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=utf-8" />
6
+ <title>
7
+ Class: Boris::Target
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 (T)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../Boris.html" title="Boris (module)">Boris</a></span></span>
36
+ &raquo;
37
+ <span class="title">Target</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Class: Boris::Target
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName">Object</span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next">Boris::Target</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+
88
+
89
+
90
+
91
+
92
+
93
+ <dt class="r2">Includes:</dt>
94
+ <dd class="r2"><span class='object_link'><a href="Lumberjack.html" title="Boris::Lumberjack (module)">Lumberjack</a></span></dd>
95
+
96
+
97
+
98
+
99
+
100
+ <dt class="r1 last">Defined in:</dt>
101
+ <dd class="r1 last">lib/boris/target.rb</dd>
102
+
103
+ </dl>
104
+ <div class="clear"></div>
105
+
106
+ <h2>Overview</h2><div class="docstring">
107
+ <div class="discussion">
108
+
109
+ <p><span class='object_link'><a href="" title="Boris::Target (class)">Target</a></span> is the basic class from which you can control the
110
+ underlying framework for communicating with the device you wish to scan. A
111
+ Target will allow you to provide options via <span class='object_link'><a href="Options.html" title="Boris::Options (class)">Options</a></span>, detect which
112
+ profile to use, connect to, and eventually scan your target device,
113
+ returning a large amount of data.</p>
114
+
115
+
116
+ </div>
117
+ </div>
118
+ <div class="tags">
119
+
120
+
121
+ </div>
122
+
123
+
124
+
125
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
126
+ <ul class="summary">
127
+
128
+ <li class="public ">
129
+ <span class="summary_signature">
130
+
131
+ <a href="#connector-instance_method" title="#connector (instance method)">- (Object) <strong>connector</strong> </a>
132
+
133
+
134
+
135
+ </span>
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+ <span class="summary_desc"><div class='inline'>
149
+ <p>Returns the value of attribute connector.</p>
150
+ </div></span>
151
+
152
+ </li>
153
+
154
+
155
+ <li class="public ">
156
+ <span class="summary_signature">
157
+
158
+ <a href="#host-instance_method" title="#host (instance method)">- (Object) <strong>host</strong> </a>
159
+
160
+
161
+
162
+ </span>
163
+
164
+
165
+
166
+
167
+ <span class="note title readonly">readonly</span>
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+ <span class="summary_desc"><div class='inline'>
178
+ <p>Returns the value of attribute host.</p>
179
+ </div></span>
180
+
181
+ </li>
182
+
183
+
184
+ <li class="public ">
185
+ <span class="summary_signature">
186
+
187
+ <a href="#logger-instance_method" title="#logger (instance method)">- (Object) <strong>logger</strong> </a>
188
+
189
+
190
+
191
+ </span>
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+ <span class="summary_desc"><div class='inline'>
205
+ <p>Returns the value of attribute logger.</p>
206
+ </div></span>
207
+
208
+ </li>
209
+
210
+
211
+ <li class="public ">
212
+ <span class="summary_signature">
213
+
214
+ <a href="#options-instance_method" title="#options (instance method)">- (Object) <strong>options</strong> </a>
215
+
216
+
217
+
218
+ </span>
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+ <span class="summary_desc"><div class='inline'>
232
+ <p>Returns the value of attribute options.</p>
233
+ </div></span>
234
+
235
+ </li>
236
+
237
+
238
+ <li class="public ">
239
+ <span class="summary_signature">
240
+
241
+ <a href="#target_profile-instance_method" title="#target_profile (instance method)">- (Object) <strong>target_profile</strong> </a>
242
+
243
+
244
+
245
+ </span>
246
+
247
+
248
+
249
+
250
+ <span class="note title readonly">readonly</span>
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ <span class="summary_desc"><div class='inline'>
261
+ <p>Returns the value of attribute target_profile.</p>
262
+ </div></span>
263
+
264
+ </li>
265
+
266
+
267
+ <li class="public ">
268
+ <span class="summary_signature">
269
+
270
+ <a href="#unavailable_connection_types-instance_method" title="#unavailable_connection_types (instance method)">- (Object) <strong>unavailable_connection_types</strong> </a>
271
+
272
+
273
+
274
+ </span>
275
+
276
+
277
+
278
+
279
+ <span class="note title readonly">readonly</span>
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+ <span class="summary_desc"><div class='inline'>
290
+ <p>Returns the value of attribute unavailable_connection_types.</p>
291
+ </div></span>
292
+
293
+ </li>
294
+
295
+
296
+ </ul>
297
+
298
+
299
+
300
+
301
+
302
+ <h2>
303
+ Instance Method Summary
304
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
305
+ </h2>
306
+
307
+ <ul class="summary">
308
+
309
+ <li class="public ">
310
+ <span class="summary_signature">
311
+
312
+ <a href="#connect-instance_method" title="#connect (instance method)">- (Boolean) <strong>connect</strong> </a>
313
+
314
+
315
+
316
+ </span>
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+ <span class="summary_desc"><div class='inline'>
327
+ <p>Connects to the target using the credentials supplied via the connection
328
+ type as specified by the credential.</p>
329
+ </div></span>
330
+
331
+ </li>
332
+
333
+
334
+ <li class="public ">
335
+ <span class="summary_signature">
336
+
337
+ <a href="#connected%3F-instance_method" title="#connected? (instance method)">- (Boolean) <strong>connected?</strong> </a>
338
+
339
+
340
+
341
+ </span>
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+ <span class="summary_desc"><div class='inline'>
352
+ <p>Checks on the status of the connection.</p>
353
+ </div></span>
354
+
355
+ </li>
356
+
357
+
358
+ <li class="public ">
359
+ <span class="summary_signature">
360
+
361
+ <a href="#detect_profile-instance_method" title="#detect_profile (instance method)">- (Module) <strong>detect_profile</strong> </a>
362
+
363
+
364
+
365
+ </span>
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+ <span class="summary_desc"><div class='inline'>
376
+ <p>Cycles through all of the profiles as specified in <span class='object_link'><a href="Options.html" title="Boris::Options (class)">Options</a></span> for
377
+ this target.</p>
378
+ </div></span>
379
+
380
+ </li>
381
+
382
+
383
+ <li class="public ">
384
+ <span class="summary_signature">
385
+
386
+ <a href="#disconnect-instance_method" title="#disconnect (instance method)">- (Boolean) <strong>disconnect</strong> </a>
387
+
388
+
389
+
390
+ </span>
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+ <span class="summary_desc"><div class='inline'>
401
+ <p>Gracefully disconnects from the target (if a connection exists).</p>
402
+ </div></span>
403
+
404
+ </li>
405
+
406
+
407
+ <li class="public ">
408
+ <span class="summary_signature">
409
+
410
+ <a href="#force_profile_to-instance_method" title="#force_profile_to (instance method)">- (Object) <strong>force_profile_to</strong>(profile) </a>
411
+
412
+
413
+
414
+ </span>
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+ <span class="summary_desc"><div class='inline'>
425
+ <p>Allows us to force the use of a profile.</p>
426
+ </div></span>
427
+
428
+ </li>
429
+
430
+
431
+ <li class="public ">
432
+ <span class="summary_signature">
433
+
434
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Target) <strong>initialize</strong>(host, options = {}) </a>
435
+
436
+
437
+
438
+ </span>
439
+
440
+
441
+ <span class="note title constructor">constructor</span>
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+ <span class="summary_desc"><div class='inline'>
451
+ <p>Create the target by passing in a mandatory hostname or IP address, and
452
+ optional <span class='object_link'><a href="Options.html" title="Boris::Options (class)">options hash</a></span>.</p>
453
+ </div></span>
454
+
455
+ </li>
456
+
457
+
458
+ <li class="public ">
459
+ <span class="summary_signature">
460
+
461
+ <a href="#retrieve_all-instance_method" title="#retrieve_all (instance method)">- (Object) <strong>retrieve_all</strong> </a>
462
+
463
+
464
+
465
+ </span>
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+ <span class="summary_desc"><div class='inline'>
476
+ <p>Calls all data-collecting methods.</p>
477
+ </div></span>
478
+
479
+ </li>
480
+
481
+
482
+ <li class="public ">
483
+ <span class="summary_signature">
484
+
485
+ <a href="#suggested_connection_method-instance_method" title="#suggested_connection_method (instance method)">- (Symbol) <strong>suggested_connection_method</strong> </a>
486
+
487
+
488
+
489
+ </span>
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+ <span class="summary_desc"><div class='inline'>
500
+ <p>Attempts to suggest a connection method based on whether certain TCP ports
501
+ on the target are responding (135 for WMI, 22 for SSH by default).</p>
502
+ </div></span>
503
+
504
+ </li>
505
+
506
+
507
+ <li class="public ">
508
+ <span class="summary_signature">
509
+
510
+ <a href="#tcp_port_responding%3F-instance_method" title="#tcp_port_responding? (instance method)">- (Boolean) <strong>tcp_port_responding?</strong>(port) </a>
511
+
512
+
513
+
514
+ </span>
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+ <span class="summary_desc"><div class='inline'>
525
+ <p>Checks if the supplied TCP port is responding on the target.</p>
526
+ </div></span>
527
+
528
+ </li>
529
+
530
+
531
+ <li class="public ">
532
+ <span class="summary_signature">
533
+
534
+ <a href="#to_json-instance_method" title="#to_json (instance method)">- (Object) <strong>to_json</strong>(pretty = false) </a>
535
+
536
+
537
+
538
+ </span>
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+ <span class="summary_desc"><div class='inline'>
549
+ <p>Parses the target's scanned data into JSON format for portability.</p>
550
+ </div></span>
551
+
552
+ </li>
553
+
554
+
555
+ </ul>
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+
567
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="Lumberjack.html" title="Boris::Lumberjack (module)">Lumberjack</a></span></h3>
568
+ <p class="inherited"><span class='object_link'><a href="Lumberjack.html#debug-instance_method" title="Boris::Lumberjack#debug (method)">#debug</a></span>, <span class='object_link'><a href="Lumberjack.html#error-instance_method" title="Boris::Lumberjack#error (method)">#error</a></span>, <span class='object_link'><a href="Lumberjack.html#fatal-instance_method" title="Boris::Lumberjack#fatal (method)">#fatal</a></span>, <span class='object_link'><a href="Lumberjack.html#info-instance_method" title="Boris::Lumberjack#info (method)">#info</a></span>, <span class='object_link'><a href="Lumberjack.html#warn-instance_method" title="Boris::Lumberjack#warn (method)">#warn</a></span></p>
569
+ <div id="constructor_details" class="method_details_list">
570
+ <h2>Constructor Details</h2>
571
+
572
+ <div class="method_details first">
573
+ <h3 class="signature first" id="initialize-instance_method">
574
+
575
+ - (<tt><span class='object_link'><a href="" title="Boris::Target (class)">Target</a></span></tt>) <strong>initialize</strong>(host, options = {})
576
+
577
+
578
+
579
+
580
+
581
+ </h3><div class="docstring">
582
+ <div class="discussion">
583
+
584
+ <p>Create the target by passing in a mandatory hostname or IP address, and
585
+ optional <span class='object_link'><a href="Options.html" title="Boris::Options (class)">options hash</a></span>.</p>
586
+
587
+ <p>When a block is passed, the <span class='object_link'><a href="" title="Boris::Target (class)">Boris::Target</a></span> object itself is returned, and
588
+ the connection will be automatically disconnected at the end of the block
589
+ (if it exists).</p>
590
+
591
+ <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>
592
+
593
+ <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'>192.168.1.1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:log_level</span><span class='op'>=&gt;</span><span class='symbol'>:debug</span><span class='rparen'>)</span></code></pre>
594
+
595
+
596
+ </div>
597
+ </div>
598
+ <div class="tags">
599
+ <p class="tag_title">Parameters:</p>
600
+ <ul class="param">
601
+
602
+ <li>
603
+
604
+ <span class='name'>host</span>
605
+
606
+
607
+ <span class='type'>(<tt><span class='object_link'><a href="../String.html" title="String (class)">String</a></span></tt>)</span>
608
+
609
+
610
+
611
+ &mdash;
612
+ <div class='inline'>
613
+ <p>hostname or IP address</p>
614
+ </div>
615
+
616
+ </li>
617
+
618
+ <li>
619
+
620
+ <span class='name'>options</span>
621
+
622
+
623
+ <span class='type'>(<tt><span class='object_link'><a href="../Hash.html" title="Hash (class)">Hash</a></span></tt>)</span>
624
+
625
+
626
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
627
+
628
+
629
+ &mdash;
630
+ <div class='inline'>
631
+ <p>an optional list of options. See <span class='object_link'><a href="Options.html" title="Boris::Options (class)">Options</a></span> for a list of all
632
+ possible options.</p>
633
+ </div>
634
+
635
+ </li>
636
+
637
+ </ul>
638
+
639
+
640
+ </div><table class="source_code">
641
+ <tr>
642
+ <td>
643
+ <pre class="lines">
644
+
645
+
646
+ 44
647
+ 45
648
+ 46
649
+ 47
650
+ 48
651
+ 49
652
+ 50
653
+ 51
654
+ 52
655
+ 53
656
+ 54
657
+ 55
658
+ 56
659
+ 57
660
+ 58
661
+ 59
662
+ 60
663
+ 61
664
+ 62
665
+ 63
666
+ 64
667
+ 65
668
+ 66
669
+ 67
670
+ 68
671
+ 69
672
+ 70
673
+ 71</pre>
674
+ </td>
675
+ <td>
676
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 44</span>
677
+
678
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
679
+ <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span>
680
+
681
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
682
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='const'>Options</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
683
+
684
+ <span class='ivar'>@logger</span> <span class='op'>=</span> <span class='const'>BorisLogger</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>STDERR</span><span class='rparen'>)</span>
685
+
686
+ <span class='kw'>if</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:log_level</span><span class='rbracket'>]</span>
687
+ <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_level'>level</span> <span class='op'>=</span> <span class='kw'>case</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:log_level</span><span class='rbracket'>]</span>
688
+ <span class='kw'>when</span> <span class='symbol'>:debug</span> <span class='kw'>then</span> <span class='const'>Logger</span><span class='op'>::</span><span class='const'>DEBUG</span>
689
+ <span class='kw'>when</span> <span class='symbol'>:info</span> <span class='kw'>then</span> <span class='const'>Logger</span><span class='op'>::</span><span class='const'>INFO</span>
690
+ <span class='kw'>when</span> <span class='symbol'>:warn</span> <span class='kw'>then</span> <span class='const'>Logger</span><span class='op'>::</span><span class='const'>WARN</span>
691
+ <span class='kw'>when</span> <span class='symbol'>:error</span> <span class='kw'>then</span> <span class='const'>Logger</span><span class='op'>::</span><span class='const'>ERROR</span>
692
+ <span class='kw'>when</span> <span class='symbol'>:fatal</span> <span class='kw'>then</span> <span class='const'>Logger</span><span class='op'>::</span><span class='const'>FATAL</span>
693
+ <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid logger level specified (</span><span class='embexpr_beg'>#{</span><span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:log_level</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='rbrace'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
694
+ <span class='kw'>end</span>
695
+ <span class='kw'>end</span>
696
+
697
+ <span class='ivar'>@unavailable_connection_types</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
698
+
699
+ <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
700
+ <span class='kw'>yield</span> <span class='kw'>self</span>
701
+ <span class='id identifier rubyid_disconnect'>disconnect</span> <span class='kw'>if</span> <span class='ivar'>@connector</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
702
+ <span class='kw'>else</span>
703
+ <span class='kw'>self</span>
704
+ <span class='kw'>end</span>
705
+ <span class='kw'>end</span></pre>
706
+ </td>
707
+ </tr>
708
+ </table>
709
+ </div>
710
+
711
+ </div>
712
+
713
+ <div id="instance_attr_details" class="attr_details">
714
+ <h2>Instance Attribute Details</h2>
715
+
716
+
717
+ <span id="connector=-instance_method"></span>
718
+ <div class="method_details first">
719
+ <h3 class="signature first" id="connector-instance_method">
720
+
721
+ - (<tt>Object</tt>) <strong>connector</strong>
722
+
723
+
724
+
725
+
726
+
727
+ </h3><div class="docstring">
728
+ <div class="discussion">
729
+
730
+ <p>Returns the value of attribute connector</p>
731
+
732
+
733
+ </div>
734
+ </div>
735
+ <div class="tags">
736
+
737
+
738
+ </div><table class="source_code">
739
+ <tr>
740
+ <td>
741
+ <pre class="lines">
742
+
743
+
744
+ 27
745
+ 28
746
+ 29</pre>
747
+ </td>
748
+ <td>
749
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 27</span>
750
+
751
+ <span class='kw'>def</span> <span class='id identifier rubyid_connector'>connector</span>
752
+ <span class='ivar'>@connector</span>
753
+ <span class='kw'>end</span></pre>
754
+ </td>
755
+ </tr>
756
+ </table>
757
+ </div>
758
+
759
+
760
+ <span id=""></span>
761
+ <div class="method_details ">
762
+ <h3 class="signature " id="host-instance_method">
763
+
764
+ - (<tt>Object</tt>) <strong>host</strong> <span class="extras">(readonly)</span>
765
+
766
+
767
+
768
+
769
+
770
+ </h3><div class="docstring">
771
+ <div class="discussion">
772
+
773
+ <p>Returns the value of attribute host</p>
774
+
775
+
776
+ </div>
777
+ </div>
778
+ <div class="tags">
779
+
780
+
781
+ </div><table class="source_code">
782
+ <tr>
783
+ <td>
784
+ <pre class="lines">
785
+
786
+
787
+ 23
788
+ 24
789
+ 25</pre>
790
+ </td>
791
+ <td>
792
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 23</span>
793
+
794
+ <span class='kw'>def</span> <span class='id identifier rubyid_host'>host</span>
795
+ <span class='ivar'>@host</span>
796
+ <span class='kw'>end</span></pre>
797
+ </td>
798
+ </tr>
799
+ </table>
800
+ </div>
801
+
802
+
803
+ <span id="logger=-instance_method"></span>
804
+ <div class="method_details ">
805
+ <h3 class="signature " id="logger-instance_method">
806
+
807
+ - (<tt>Object</tt>) <strong>logger</strong>
808
+
809
+
810
+
811
+
812
+
813
+ </h3><div class="docstring">
814
+ <div class="discussion">
815
+
816
+ <p>Returns the value of attribute logger</p>
817
+
818
+
819
+ </div>
820
+ </div>
821
+ <div class="tags">
822
+
823
+
824
+ </div><table class="source_code">
825
+ <tr>
826
+ <td>
827
+ <pre class="lines">
828
+
829
+
830
+ 29
831
+ 30
832
+ 31</pre>
833
+ </td>
834
+ <td>
835
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 29</span>
836
+
837
+ <span class='kw'>def</span> <span class='id identifier rubyid_logger'>logger</span>
838
+ <span class='ivar'>@logger</span>
839
+ <span class='kw'>end</span></pre>
840
+ </td>
841
+ </tr>
842
+ </table>
843
+ </div>
844
+
845
+
846
+ <span id="options=-instance_method"></span>
847
+ <div class="method_details ">
848
+ <h3 class="signature " id="options-instance_method">
849
+
850
+ - (<tt>Object</tt>) <strong>options</strong>
851
+
852
+
853
+
854
+
855
+
856
+ </h3><div class="docstring">
857
+ <div class="discussion">
858
+
859
+ <p>Returns the value of attribute options</p>
860
+
861
+
862
+ </div>
863
+ </div>
864
+ <div class="tags">
865
+
866
+
867
+ </div><table class="source_code">
868
+ <tr>
869
+ <td>
870
+ <pre class="lines">
871
+
872
+
873
+ 28
874
+ 29
875
+ 30</pre>
876
+ </td>
877
+ <td>
878
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 28</span>
879
+
880
+ <span class='kw'>def</span> <span class='id identifier rubyid_options'>options</span>
881
+ <span class='ivar'>@options</span>
882
+ <span class='kw'>end</span></pre>
883
+ </td>
884
+ </tr>
885
+ </table>
886
+ </div>
887
+
888
+
889
+ <span id=""></span>
890
+ <div class="method_details ">
891
+ <h3 class="signature " id="target_profile-instance_method">
892
+
893
+ - (<tt>Object</tt>) <strong>target_profile</strong> <span class="extras">(readonly)</span>
894
+
895
+
896
+
897
+
898
+
899
+ </h3><div class="docstring">
900
+ <div class="discussion">
901
+
902
+ <p>Returns the value of attribute target_profile</p>
903
+
904
+
905
+ </div>
906
+ </div>
907
+ <div class="tags">
908
+
909
+
910
+ </div><table class="source_code">
911
+ <tr>
912
+ <td>
913
+ <pre class="lines">
914
+
915
+
916
+ 24
917
+ 25
918
+ 26</pre>
919
+ </td>
920
+ <td>
921
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 24</span>
922
+
923
+ <span class='kw'>def</span> <span class='id identifier rubyid_target_profile'>target_profile</span>
924
+ <span class='ivar'>@target_profile</span>
925
+ <span class='kw'>end</span></pre>
926
+ </td>
927
+ </tr>
928
+ </table>
929
+ </div>
930
+
931
+
932
+ <span id=""></span>
933
+ <div class="method_details ">
934
+ <h3 class="signature " id="unavailable_connection_types-instance_method">
935
+
936
+ - (<tt>Object</tt>) <strong>unavailable_connection_types</strong> <span class="extras">(readonly)</span>
937
+
938
+
939
+
940
+
941
+
942
+ </h3><div class="docstring">
943
+ <div class="discussion">
944
+
945
+ <p>Returns the value of attribute unavailable_connection_types</p>
946
+
947
+
948
+ </div>
949
+ </div>
950
+ <div class="tags">
951
+
952
+
953
+ </div><table class="source_code">
954
+ <tr>
955
+ <td>
956
+ <pre class="lines">
957
+
958
+
959
+ 25
960
+ 26
961
+ 27</pre>
962
+ </td>
963
+ <td>
964
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 25</span>
965
+
966
+ <span class='kw'>def</span> <span class='id identifier rubyid_unavailable_connection_types'>unavailable_connection_types</span>
967
+ <span class='ivar'>@unavailable_connection_types</span>
968
+ <span class='kw'>end</span></pre>
969
+ </td>
970
+ </tr>
971
+ </table>
972
+ </div>
973
+
974
+ </div>
975
+
976
+
977
+ <div id="instance_method_details" class="method_details_list">
978
+ <h2>Instance Method Details</h2>
979
+
980
+
981
+ <div class="method_details first">
982
+ <h3 class="signature first" id="connect-instance_method">
983
+
984
+ - (<tt>Boolean</tt>) <strong>connect</strong>
985
+
986
+
987
+
988
+
989
+
990
+ </h3><div class="docstring">
991
+ <div class="discussion">
992
+
993
+ <p>Connects to the target using the credentials supplied via the connection
994
+ type as specified by the credential. This method will smartly bypass any
995
+ further connection attempts if it is determined that the connection will
996
+ likely never work (for example, if you try to connect via WMI to a Linux
997
+ host (which will fail), any further attempts to connect to that host via
998
+ WMI will be ignored).</p>
999
+
1000
+
1001
+ </div>
1002
+ </div>
1003
+ <div class="tags">
1004
+
1005
+ <p class="tag_title">Returns:</p>
1006
+ <ul class="return">
1007
+
1008
+ <li>
1009
+
1010
+
1011
+ <span class='type'>(<tt>Boolean</tt>)</span>
1012
+
1013
+
1014
+
1015
+ &mdash;
1016
+ <div class='inline'>
1017
+ <p>returns true if the connection attempt succeeded</p>
1018
+ </div>
1019
+
1020
+ </li>
1021
+
1022
+ </ul>
1023
+ <p class="tag_title">Raises:</p>
1024
+ <ul class="raise">
1025
+
1026
+ <li>
1027
+
1028
+
1029
+ <span class='type'>(<tt><span class='object_link'><a href="ConnectionAlreadyActive.html" title="Boris::ConnectionAlreadyActive (class)">ConnectionAlreadyActive</a></span></tt>)</span>
1030
+
1031
+
1032
+
1033
+ &mdash;
1034
+ <div class='inline'>
1035
+ <p>when a connection is already active</p>
1036
+ </div>
1037
+
1038
+ </li>
1039
+
1040
+ <li>
1041
+
1042
+
1043
+ <span class='type'>(<tt><span class='object_link'><a href="InvalidOption.html" title="Boris::InvalidOption (class)">InvalidOption</a></span></tt>)</span>
1044
+
1045
+
1046
+
1047
+ &mdash;
1048
+ <div class='inline'>
1049
+ <p>if credentials are not specified in the target's options hash</p>
1050
+ </div>
1051
+
1052
+ </li>
1053
+
1054
+ </ul>
1055
+
1056
+ </div><table class="source_code">
1057
+ <tr>
1058
+ <td>
1059
+ <pre class="lines">
1060
+
1061
+
1062
+ 81
1063
+ 82
1064
+ 83
1065
+ 84
1066
+ 85
1067
+ 86
1068
+ 87
1069
+ 88
1070
+ 89
1071
+ 90
1072
+ 91
1073
+ 92
1074
+ 93
1075
+ 94
1076
+ 95
1077
+ 96
1078
+ 97
1079
+ 98
1080
+ 99
1081
+ 100
1082
+ 101
1083
+ 102
1084
+ 103
1085
+ 104
1086
+ 105
1087
+ 106
1088
+ 107
1089
+ 108
1090
+ 109
1091
+ 110
1092
+ 111
1093
+ 112
1094
+ 113
1095
+ 114
1096
+ 115
1097
+ 116
1098
+ 117
1099
+ 118
1100
+ 119
1101
+ 120
1102
+ 121
1103
+ 122
1104
+ 123
1105
+ 124
1106
+ 125
1107
+ 126
1108
+ 127
1109
+ 128
1110
+ 129
1111
+ 130
1112
+ 131
1113
+ 132
1114
+ 133
1115
+ 134
1116
+ 135
1117
+ 136
1118
+ 137</pre>
1119
+ </td>
1120
+ <td>
1121
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 81</span>
1122
+
1123
+ <span class='kw'>def</span> <span class='id identifier rubyid_connect'>connect</span>
1124
+ <span class='kw'>if</span> <span class='ivar'>@connector</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
1125
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ConnectionAlreadyActive</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>a connect attempt has been made when active connection already exists</span><span class='tstring_end'>'</span></span>
1126
+ <span class='kw'>elsif</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:credentials</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1127
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>InvalidOption</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>no credentials specified</span><span class='tstring_end'>'</span></span>
1128
+ <span class='kw'>end</span>
1129
+
1130
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>preparing to connect</span><span class='tstring_end'>'</span></span>
1131
+
1132
+ <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:credentials</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_cred'>cred</span><span class='op'>|</span>
1133
+ <span class='kw'>if</span> <span class='ivar'>@connector</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
1134
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>active connection established, will not try any more credentials</span><span class='tstring_end'>'</span></span>
1135
+ <span class='kw'>break</span>
1136
+ <span class='kw'>end</span>
1137
+
1138
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>using credential (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cred'>cred</span><span class='lbracket'>[</span><span class='symbol'>:user</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1139
+
1140
+ <span class='id identifier rubyid_cred'>cred</span><span class='lbracket'>[</span><span class='symbol'>:connection_types</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_conn_type'>conn_type</span><span class='op'>|</span>
1141
+ <span class='kw'>if</span> <span class='ivar'>@connector</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
1142
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>active connection established, will not try any more connection types</span><span class='tstring_end'>'</span></span>
1143
+ <span class='kw'>break</span>
1144
+ <span class='kw'>end</span>
1145
+
1146
+ <span class='kw'>case</span> <span class='id identifier rubyid_conn_type'>conn_type</span>
1147
+ <span class='kw'>when</span> <span class='symbol'>:snmp</span>
1148
+ <span class='ivar'>@connector</span> <span class='op'>=</span> <span class='const'>SNMPConnector</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@host</span><span class='comma'>,</span> <span class='id identifier rubyid_cred'>cred</span><span class='comma'>,</span> <span class='ivar'>@options</span><span class='comma'>,</span> <span class='ivar'>@logger</span><span class='rparen'>)</span>
1149
+ <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_establish_connection'>establish_connection</span>
1150
+ <span class='comment'># we won't add snmp to the @unavailable_connection_types array, as it
1151
+ </span> <span class='comment'># could respond later with another community string
1152
+ </span> <span class='kw'>when</span> <span class='symbol'>:ssh</span>
1153
+ <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@unavailable_connection_types</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:ssh</span><span class='rparen'>)</span>
1154
+ <span class='ivar'>@connector</span> <span class='op'>=</span> <span class='const'>SSHConnector</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@host</span><span class='comma'>,</span> <span class='id identifier rubyid_cred'>cred</span><span class='comma'>,</span> <span class='ivar'>@options</span><span class='comma'>,</span> <span class='ivar'>@logger</span><span class='rparen'>)</span>
1155
+ <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_establish_connection'>establish_connection</span>
1156
+
1157
+ <span class='kw'>if</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_reconnectable'>reconnectable</span> <span class='op'>==</span> <span class='kw'>false</span>
1158
+ <span class='ivar'>@unavailable_connection_types</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:ssh</span>
1159
+ <span class='kw'>end</span>
1160
+ <span class='kw'>end</span>
1161
+ <span class='kw'>when</span> <span class='symbol'>:wmi</span>
1162
+ <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@unavailable_connection_types</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:wmi</span><span class='rparen'>)</span>
1163
+ <span class='ivar'>@connector</span> <span class='op'>=</span> <span class='const'>WMIConnector</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@host</span><span class='comma'>,</span> <span class='id identifier rubyid_cred'>cred</span><span class='comma'>,</span> <span class='ivar'>@options</span><span class='comma'>,</span> <span class='ivar'>@logger</span><span class='rparen'>)</span>
1164
+ <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_establish_connection'>establish_connection</span>
1165
+
1166
+ <span class='kw'>if</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_reconnectable'>reconnectable</span> <span class='op'>==</span> <span class='kw'>false</span>
1167
+ <span class='ivar'>@unavailable_connection_types</span> <span class='op'>&lt;&lt;</span> <span class='symbol'>:wmi</span>
1168
+ <span class='kw'>end</span>
1169
+ <span class='kw'>end</span>
1170
+ <span class='kw'>end</span>
1171
+
1172
+ <span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>connection established via </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_conn_type'>conn_type</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
1173
+ <span class='kw'>end</span>
1174
+ <span class='kw'>end</span>
1175
+
1176
+ <span class='ivar'>@connector</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span> <span class='op'>==</span> <span class='kw'>false</span>
1177
+
1178
+ <span class='kw'>return</span> <span class='ivar'>@connector</span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span>
1179
+ <span class='kw'>end</span></pre>
1180
+ </td>
1181
+ </tr>
1182
+ </table>
1183
+ </div>
1184
+
1185
+ <div class="method_details ">
1186
+ <h3 class="signature " id="connected?-instance_method">
1187
+
1188
+ - (<tt>Boolean</tt>) <strong>connected?</strong>
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+ </h3><div class="docstring">
1195
+ <div class="discussion">
1196
+
1197
+ <p>Checks on the status of the connection.</p>
1198
+
1199
+
1200
+ </div>
1201
+ </div>
1202
+ <div class="tags">
1203
+
1204
+ <p class="tag_title">Returns:</p>
1205
+ <ul class="return">
1206
+
1207
+ <li>
1208
+
1209
+
1210
+ <span class='type'>(<tt>Boolean</tt>)</span>
1211
+
1212
+
1213
+
1214
+ &mdash;
1215
+ <div class='inline'>
1216
+ <p>returns true if the connection to the target is active</p>
1217
+ </div>
1218
+
1219
+ </li>
1220
+
1221
+ </ul>
1222
+
1223
+ </div><table class="source_code">
1224
+ <tr>
1225
+ <td>
1226
+ <pre class="lines">
1227
+
1228
+
1229
+ 142
1230
+ 143
1231
+ 144</pre>
1232
+ </td>
1233
+ <td>
1234
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 142</span>
1235
+
1236
+ <span class='kw'>def</span> <span class='id identifier rubyid_connected?'>connected?</span>
1237
+ <span class='lparen'>(</span><span class='ivar'>@connector</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span>
1238
+ <span class='kw'>end</span></pre>
1239
+ </td>
1240
+ </tr>
1241
+ </table>
1242
+ </div>
1243
+
1244
+ <div class="method_details ">
1245
+ <h3 class="signature " id="detect_profile-instance_method">
1246
+
1247
+ - (<tt>Module</tt>) <strong>detect_profile</strong>
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+ </h3><div class="docstring">
1254
+ <div class="discussion">
1255
+
1256
+ <p>Cycles through all of the profiles as specified in <span class='object_link'><a href="Options.html" title="Boris::Options (class)">Options</a></span> for
1257
+ this target. Each profile includes a method for determining whether the
1258
+ output of a certain command will properly fit the target. Once a suitable
1259
+ profile is determined, it is then loaded up, which provides <span class='object_link'><a href="../Boris.html" title="Boris (module)">Boris</a></span> the
1260
+ instructions on how to proceed.</p>
1261
+
1262
+
1263
+ </div>
1264
+ </div>
1265
+ <div class="tags">
1266
+
1267
+ <p class="tag_title">Returns:</p>
1268
+ <ul class="return">
1269
+
1270
+ <li>
1271
+
1272
+
1273
+ <span class='type'>(<tt>Module</tt>)</span>
1274
+
1275
+
1276
+
1277
+ &mdash;
1278
+ <div class='inline'>
1279
+ <p>returns the Module of a suitable profile, else it will throw an error</p>
1280
+ </div>
1281
+
1282
+ </li>
1283
+
1284
+ </ul>
1285
+ <p class="tag_title">Raises:</p>
1286
+ <ul class="raise">
1287
+
1288
+ <li>
1289
+
1290
+
1291
+ <span class='type'>(<tt><span class='object_link'><a href="InvalidOption.html" title="Boris::InvalidOption (class)">InvalidOption</a></span></tt>)</span>
1292
+
1293
+
1294
+
1295
+ &mdash;
1296
+ <div class='inline'>
1297
+ <p>if no profiles are loaded prior to calling #detect_profile</p>
1298
+ </div>
1299
+
1300
+ </li>
1301
+
1302
+ <li>
1303
+
1304
+
1305
+ <span class='type'>(<tt><span class='object_link'><a href="NoActiveConnection.html" title="Boris::NoActiveConnection (class)">NoActiveConnection</a></span></tt>)</span>
1306
+
1307
+
1308
+
1309
+ &mdash;
1310
+ <div class='inline'>
1311
+ <p>if no active connection is available when calling #detect_profile</p>
1312
+ </div>
1313
+
1314
+ </li>
1315
+
1316
+ <li>
1317
+
1318
+
1319
+ <span class='type'>(<tt><span class='object_link'><a href="NoProfileDetected.html" title="Boris::NoProfileDetected (class)">NoProfileDetected</a></span></tt>)</span>
1320
+
1321
+
1322
+
1323
+ &mdash;
1324
+ <div class='inline'>
1325
+ <p>when no suitable profile was found</p>
1326
+ </div>
1327
+
1328
+ </li>
1329
+
1330
+ </ul>
1331
+
1332
+ <p class="tag_title">See Also:</p>
1333
+ <ul class="see">
1334
+
1335
+ <li><span class='object_link'><a href="#force_profile_to-instance_method" title="Boris::Target#force_profile_to (method)">#force_profile_to</a></span></li>
1336
+
1337
+ </ul>
1338
+
1339
+ </div><table class="source_code">
1340
+ <tr>
1341
+ <td>
1342
+ <pre class="lines">
1343
+
1344
+
1345
+ 159
1346
+ 160
1347
+ 161
1348
+ 162
1349
+ 163
1350
+ 164
1351
+ 165
1352
+ 166
1353
+ 167
1354
+ 168
1355
+ 169
1356
+ 170
1357
+ 171
1358
+ 172
1359
+ 173
1360
+ 174
1361
+ 175
1362
+ 176
1363
+ 177
1364
+ 178
1365
+ 179
1366
+ 180
1367
+ 181
1368
+ 182
1369
+ 183
1370
+ 184
1371
+ 185
1372
+ 186</pre>
1373
+ </td>
1374
+ <td>
1375
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 159</span>
1376
+
1377
+ <span class='kw'>def</span> <span class='id identifier rubyid_detect_profile'>detect_profile</span>
1378
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>InvalidOption</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>no profiles loaded</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:profiles</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>||</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:profiles</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1379
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoActiveConnection</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>no active connection</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='op'>!</span><span class='ivar'>@connector</span> <span class='op'>||</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span> <span class='op'>==</span> <span class='kw'>false</span><span class='rparen'>)</span>
1380
+
1381
+ <span class='ivar'>@target_profile</span> <span class='op'>=</span> <span class='kw'>nil</span>
1382
+
1383
+ <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:profiles</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_profile'>profile</span><span class='op'>|</span>
1384
+ <span class='kw'>break</span> <span class='kw'>if</span> <span class='ivar'>@target_profile</span>
1385
+
1386
+ <span class='kw'>if</span> <span class='id identifier rubyid_profile'>profile</span><span class='period'>.</span><span class='id identifier rubyid_connection_type'>connection_type</span> <span class='op'>==</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span>
1387
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>testing profile: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_profile'>profile</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
1388
+
1389
+ <span class='kw'>if</span> <span class='id identifier rubyid_profile'>profile</span><span class='period'>.</span><span class='id identifier rubyid_matches_target?'>matches_target?</span><span class='lparen'>(</span><span class='ivar'>@connector</span><span class='rparen'>)</span>
1390
+ <span class='ivar'>@target_profile</span> <span class='op'>=</span> <span class='id identifier rubyid_profile'>profile</span>
1391
+
1392
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>suitable profile found (</span><span class='embexpr_beg'>#{</span><span class='ivar'>@target_profile</span><span class='rbrace'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1393
+
1394
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_extend'>extend</span> <span class='ivar'>@target_profile</span>
1395
+
1396
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>profile set to </span><span class='embexpr_beg'>#{</span><span class='ivar'>@target_profile</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
1397
+ <span class='kw'>end</span>
1398
+ <span class='kw'>end</span>
1399
+ <span class='kw'>end</span>
1400
+
1401
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoProfileDetected</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>no suitable profile found</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@target_profile</span>
1402
+
1403
+ <span class='ivar'>@target_profile</span>
1404
+ <span class='kw'>end</span></pre>
1405
+ </td>
1406
+ </tr>
1407
+ </table>
1408
+ </div>
1409
+
1410
+ <div class="method_details ">
1411
+ <h3 class="signature " id="disconnect-instance_method">
1412
+
1413
+ - (<tt>Boolean</tt>) <strong>disconnect</strong>
1414
+
1415
+
1416
+
1417
+
1418
+
1419
+ </h3><div class="docstring">
1420
+ <div class="discussion">
1421
+
1422
+ <p>Gracefully disconnects from the target (if a connection exists).</p>
1423
+
1424
+
1425
+ </div>
1426
+ </div>
1427
+ <div class="tags">
1428
+
1429
+ <p class="tag_title">Returns:</p>
1430
+ <ul class="return">
1431
+
1432
+ <li>
1433
+
1434
+
1435
+ <span class='type'>(<tt>Boolean</tt>)</span>
1436
+
1437
+
1438
+
1439
+ &mdash;
1440
+ <div class='inline'>
1441
+ <p>returns true if the connection disconnected successfully</p>
1442
+ </div>
1443
+
1444
+ </li>
1445
+
1446
+ </ul>
1447
+
1448
+ </div><table class="source_code">
1449
+ <tr>
1450
+ <td>
1451
+ <pre class="lines">
1452
+
1453
+
1454
+ 191
1455
+ 192
1456
+ 193</pre>
1457
+ </td>
1458
+ <td>
1459
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 191</span>
1460
+
1461
+ <span class='kw'>def</span> <span class='id identifier rubyid_disconnect'>disconnect</span>
1462
+ <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_disconnect'>disconnect</span> <span class='kw'>if</span> <span class='ivar'>@connector</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@connector</span><span class='period'>.</span><span class='id identifier rubyid_connected?'>connected?</span>
1463
+ <span class='kw'>end</span></pre>
1464
+ </td>
1465
+ </tr>
1466
+ </table>
1467
+ </div>
1468
+
1469
+ <div class="method_details ">
1470
+ <h3 class="signature " id="force_profile_to-instance_method">
1471
+
1472
+ - (<tt>Object</tt>) <strong>force_profile_to</strong>(profile)
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+ </h3><div class="docstring">
1479
+ <div class="discussion">
1480
+
1481
+ <p>Allows us to force the use of a profile. This can be used instead of
1482
+ #detect_profile.</p>
1483
+
1484
+
1485
+ </div>
1486
+ </div>
1487
+ <div class="tags">
1488
+ <p class="tag_title">Parameters:</p>
1489
+ <ul class="param">
1490
+
1491
+ <li>
1492
+
1493
+ <span class='name'>profile</span>
1494
+
1495
+
1496
+ <span class='type'></span>
1497
+
1498
+
1499
+
1500
+ &mdash;
1501
+ <div class='inline'>
1502
+ <p>the module of the profile we wish to set the target to use</p>
1503
+ </div>
1504
+
1505
+ </li>
1506
+
1507
+ </ul>
1508
+
1509
+
1510
+ <p class="tag_title">See Also:</p>
1511
+ <ul class="see">
1512
+
1513
+ <li><span class='object_link'><a href="#detect_profile-instance_method" title="Boris::Target#detect_profile (method)">#detect_profile</a></span></li>
1514
+
1515
+ </ul>
1516
+
1517
+ </div><table class="source_code">
1518
+ <tr>
1519
+ <td>
1520
+ <pre class="lines">
1521
+
1522
+
1523
+ 198
1524
+ 199
1525
+ 200
1526
+ 201
1527
+ 202</pre>
1528
+ </td>
1529
+ <td>
1530
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 198</span>
1531
+
1532
+ <span class='kw'>def</span> <span class='id identifier rubyid_force_profile_to'>force_profile_to</span><span class='lparen'>(</span><span class='id identifier rubyid_profile'>profile</span><span class='rparen'>)</span>
1533
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_extend'>extend</span> <span class='id identifier rubyid_profile'>profile</span>
1534
+ <span class='ivar'>@target_profile</span> <span class='op'>=</span> <span class='id identifier rubyid_profile'>profile</span>
1535
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>profile successfully forced to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_profile'>profile</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
1536
+ <span class='kw'>end</span></pre>
1537
+ </td>
1538
+ </tr>
1539
+ </table>
1540
+ </div>
1541
+
1542
+ <div class="method_details ">
1543
+ <h3 class="signature " id="retrieve_all-instance_method">
1544
+
1545
+ - (<tt>Object</tt>) <strong>retrieve_all</strong>
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+ </h3><div class="docstring">
1552
+ <div class="discussion">
1553
+
1554
+ <div class="note notetag">
1555
+ <strong>Note:</strong>
1556
+ <div class='inline'>
1557
+ <p>Running the full gamut of data collection methods may take some time, and
1558
+ connections over WMI usually take longer than their SSH counterparts.
1559
+ Typically, a Linux server scan can be completed in around a minute, where a
1560
+ Windows host will be completed in 2-3 minutes (in a perfect world, of
1561
+ course).</p>
1562
+ </div>
1563
+ </div>
1564
+
1565
+
1566
+ <p>Calls all data-collecting methods. Probably will be used in most cases
1567
+ after a connection has been established to the host. Methods that will be
1568
+ called include:</p>
1569
+ <ul><li>
1570
+ <p>get_file_systems (Array)</p>
1571
+ </li><li>
1572
+ <p>get_hardware (Hash)</p>
1573
+ </li><li>
1574
+ <p>get_hosted_shares (Array)</p>
1575
+ </li><li>
1576
+ <p>get_installed_applications (Array)</p>
1577
+ </li><li>
1578
+ <p>get_local_user_groups (Array)</p>
1579
+ </li><li>
1580
+ <p>get_installed_patches (Array)</p>
1581
+ </li><li>
1582
+ <p>get_installed_services (Array)</p>
1583
+ </li><li>
1584
+ <p>get_network_id (Hash)</p>
1585
+ </li><li>
1586
+ <p>get_network_interfaces (Array)</p>
1587
+ </li><li>
1588
+ <p>get_operating_system (Hash)</p>
1589
+ </li></ul>
1590
+
1591
+ <pre class="code ruby"><code><span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_retrieve_all'>retrieve_all</span>
1592
+ <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_file_systems'>file_systems</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='comment'>#=&gt; 2
1593
+ </span><span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_installed_applications'>installed_applications</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='comment'>#=&gt; {:application_name=&gt;'Adobe Reader'...}</span></code></pre>
1594
+
1595
+ <p>This method will also scrub the data after retrieving all of the items.</p>
1596
+
1597
+
1598
+ </div>
1599
+ </div>
1600
+ <div class="tags">
1601
+
1602
+
1603
+ <p class="tag_title">See Also:</p>
1604
+ <ul class="see">
1605
+
1606
+ <li><span class='object_link'><a href="Profiles/Structure.html" title="Boris::Profiles::Structure (module)">Profiles::Structure: a complete list of the data scructure</a></span></li>
1607
+
1608
+ </ul>
1609
+
1610
+ </div><table class="source_code">
1611
+ <tr>
1612
+ <td>
1613
+ <pre class="lines">
1614
+
1615
+
1616
+ 228
1617
+ 229
1618
+ 230
1619
+ 231
1620
+ 232
1621
+ 233
1622
+ 234
1623
+ 235
1624
+ 236
1625
+ 237
1626
+ 238
1627
+ 239
1628
+ 240
1629
+ 241
1630
+ 242
1631
+ 243
1632
+ 244
1633
+ 245</pre>
1634
+ </td>
1635
+ <td>
1636
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 228</span>
1637
+
1638
+ <span class='kw'>def</span> <span class='id identifier rubyid_retrieve_all'>retrieve_all</span>
1639
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>retrieving all configuration items</span><span class='tstring_end'>'</span></span>
1640
+
1641
+ <span class='id identifier rubyid_get_file_systems'>get_file_systems</span>
1642
+ <span class='id identifier rubyid_get_hardware'>get_hardware</span>
1643
+ <span class='id identifier rubyid_get_hosted_shares'>get_hosted_shares</span>
1644
+ <span class='id identifier rubyid_get_installed_applications'>get_installed_applications</span>
1645
+ <span class='id identifier rubyid_get_local_user_groups'>get_local_user_groups</span>
1646
+ <span class='id identifier rubyid_get_installed_patches'>get_installed_patches</span>
1647
+ <span class='id identifier rubyid_get_installed_services'>get_installed_services</span>
1648
+ <span class='id identifier rubyid_get_network_id'>get_network_id</span>
1649
+ <span class='id identifier rubyid_get_network_interfaces'>get_network_interfaces</span>
1650
+ <span class='id identifier rubyid_get_operating_system'>get_operating_system</span>
1651
+
1652
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>all items retrieved successfully</span><span class='tstring_end'>'</span></span>
1653
+
1654
+ <span class='id identifier rubyid_scrub_data!'>scrub_data!</span> <span class='kw'>if</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:auto_scrub_data</span><span class='rbracket'>]</span>
1655
+ <span class='kw'>end</span></pre>
1656
+ </td>
1657
+ </tr>
1658
+ </table>
1659
+ </div>
1660
+
1661
+ <div class="method_details ">
1662
+ <h3 class="signature " id="suggested_connection_method-instance_method">
1663
+
1664
+ - (<tt>Symbol</tt>) <strong>suggested_connection_method</strong>
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+ </h3><div class="docstring">
1671
+ <div class="discussion">
1672
+
1673
+ <p>Attempts to suggest a connection method based on whether certain TCP ports
1674
+ on the target are responding (135 for WMI, 22 for SSH by default). Can be
1675
+ used to speed up the process of determining whether we should try to
1676
+ connect to our host using different methods, or bypass certain attempts
1677
+ entirely.</p>
1678
+
1679
+ <pre class="code ruby"><code><span class='id identifier rubyid_target'>target</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</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
1680
+ <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_suggested_connection_method'>suggested_connection_method</span> <span class='comment'>#=&gt; :ssh</span></code></pre>
1681
+
1682
+
1683
+ </div>
1684
+ </div>
1685
+ <div class="tags">
1686
+
1687
+ <p class="tag_title">Returns:</p>
1688
+ <ul class="return">
1689
+
1690
+ <li>
1691
+
1692
+
1693
+ <span class='type'>(<tt>Symbol</tt>)</span>
1694
+
1695
+
1696
+
1697
+ &mdash;
1698
+ <div class='inline'>
1699
+ <p>returns :wmi, :ssh, or nil</p>
1700
+ </div>
1701
+
1702
+ </li>
1703
+
1704
+ </ul>
1705
+
1706
+ <p class="tag_title">See Also:</p>
1707
+ <ul class="see">
1708
+
1709
+ <li>tcp_port_responding?</li>
1710
+
1711
+ </ul>
1712
+
1713
+ </div><table class="source_code">
1714
+ <tr>
1715
+ <td>
1716
+ <pre class="lines">
1717
+
1718
+
1719
+ 258
1720
+ 259
1721
+ 260
1722
+ 261
1723
+ 262
1724
+ 263
1725
+ 264
1726
+ 265
1727
+ 266
1728
+ 267
1729
+ 268
1730
+ 269
1731
+ 270
1732
+ 271
1733
+ 272
1734
+ 273</pre>
1735
+ </td>
1736
+ <td>
1737
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 258</span>
1738
+
1739
+ <span class='kw'>def</span> <span class='id identifier rubyid_suggested_connection_method'>suggested_connection_method</span>
1740
+ <span class='id identifier rubyid_connection_method'>connection_method</span> <span class='op'>=</span> <span class='kw'>nil</span>
1741
+
1742
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>detecting if wmi is available</span><span class='tstring_end'>'</span></span>
1743
+ <span class='id identifier rubyid_connection_method'>connection_method</span> <span class='op'>=</span> <span class='symbol'>:wmi</span> <span class='kw'>if</span> <span class='id identifier rubyid_tcp_port_responding?'>tcp_port_responding?</span><span class='lparen'>(</span><span class='const'>PORT_DEFAULTS</span><span class='lbracket'>[</span><span class='symbol'>:wmi</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1744
+ <span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wmi does not appear to be responding</span><span class='tstring_end'>'</span></span>
1745
+
1746
+ <span class='kw'>if</span> <span class='id identifier rubyid_connection_method'>connection_method</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1747
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>detecting if ssh is available</span><span class='tstring_end'>'</span></span>
1748
+ <span class='id identifier rubyid_connection_method'>connection_method</span> <span class='op'>=</span> <span class='symbol'>:ssh</span> <span class='kw'>if</span> <span class='id identifier rubyid_tcp_port_responding?'>tcp_port_responding?</span><span class='lparen'>(</span><span class='const'>PORT_DEFAULTS</span><span class='lbracket'>[</span><span class='symbol'>:ssh</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1749
+ <span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ssh does not appear to be responding</span><span class='tstring_end'>'</span></span>
1750
+ <span class='kw'>end</span>
1751
+
1752
+ <span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>failed to detect connection method</span><span class='tstring_end'>'</span></span><span class='kw'>if</span> <span class='id identifier rubyid_connection_method'>connection_method</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1753
+ <span class='id identifier rubyid_connection_method'>connection_method</span>
1754
+ <span class='kw'>end</span></pre>
1755
+ </td>
1756
+ </tr>
1757
+ </table>
1758
+ </div>
1759
+
1760
+ <div class="method_details ">
1761
+ <h3 class="signature " id="tcp_port_responding?-instance_method">
1762
+
1763
+ - (<tt>Boolean</tt>) <strong>tcp_port_responding?</strong>(port)
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+ </h3><div class="docstring">
1770
+ <div class="discussion">
1771
+
1772
+ <p>Checks if the supplied TCP port is responding on the target. Useful for
1773
+ determining which connection type we should use instead of taking more time
1774
+ connecting to the target using different methods just to check if they
1775
+ succeed or not.</p>
1776
+
1777
+ <pre class="code ruby"><code><span class='id identifier rubyid_target'>target</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'>windowsserver01</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
1778
+ <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> <span class='comment'>#=&gt; false</span></code></pre>
1779
+
1780
+
1781
+ </div>
1782
+ </div>
1783
+ <div class="tags">
1784
+ <p class="tag_title">Parameters:</p>
1785
+ <ul class="param">
1786
+
1787
+ <li>
1788
+
1789
+ <span class='name'>port</span>
1790
+
1791
+
1792
+ <span class='type'></span>
1793
+
1794
+
1795
+
1796
+ &mdash;
1797
+ <div class='inline'>
1798
+ <p>the TCP port number we wish to test</p>
1799
+ </div>
1800
+
1801
+ </li>
1802
+
1803
+ </ul>
1804
+
1805
+ <p class="tag_title">Returns:</p>
1806
+ <ul class="return">
1807
+
1808
+ <li>
1809
+
1810
+
1811
+ <span class='type'>(<tt>Boolean</tt>)</span>
1812
+
1813
+
1814
+
1815
+ &mdash;
1816
+ <div class='inline'>
1817
+ <p>returns true of the supplied port is responding</p>
1818
+ </div>
1819
+
1820
+ </li>
1821
+
1822
+ </ul>
1823
+
1824
+ </div><table class="source_code">
1825
+ <tr>
1826
+ <td>
1827
+ <pre class="lines">
1828
+
1829
+
1830
+ 285
1831
+ 286
1832
+ 287
1833
+ 288
1834
+ 289
1835
+ 290
1836
+ 291
1837
+ 292
1838
+ 293
1839
+ 294
1840
+ 295
1841
+ 296
1842
+ 297
1843
+ 298
1844
+ 299
1845
+ 300
1846
+ 301
1847
+ 302</pre>
1848
+ </td>
1849
+ <td>
1850
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 285</span>
1851
+
1852
+ <span class='kw'>def</span> <span class='id identifier rubyid_tcp_port_responding?'>tcp_port_responding?</span><span class='lparen'>(</span><span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span>
1853
+ <span class='id identifier rubyid_status'>status</span> <span class='op'>=</span> <span class='kw'>false</span>
1854
+
1855
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>checking if port </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_port'>port</span><span class='rbrace'>}</span><span class='tstring_content'> is responding</span><span class='tstring_end'>&quot;</span></span>
1856
+
1857
+ <span class='kw'>begin</span>
1858
+ <span class='id identifier rubyid_conn'>conn</span> <span class='op'>=</span> <span class='const'>TCPSocket</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@host</span><span class='comma'>,</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span>
1859
+ <span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>port </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_port'>port</span><span class='rbrace'>}</span><span class='tstring_content'> is responding</span><span class='tstring_end'>&quot;</span></span>
1860
+ <span class='id identifier rubyid_conn'>conn</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
1861
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>connection to port closed</span><span class='tstring_end'>&quot;</span></span>
1862
+ <span class='id identifier rubyid_status'>status</span> <span class='op'>=</span> <span class='kw'>true</span>
1863
+ <span class='kw'>rescue</span>
1864
+ <span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>port </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_port'>port</span><span class='rbrace'>}</span><span class='tstring_content'> is not responding</span><span class='tstring_end'>&quot;</span></span>
1865
+ <span class='id identifier rubyid_status'>status</span> <span class='op'>=</span> <span class='kw'>false</span>
1866
+ <span class='kw'>end</span>
1867
+
1868
+ <span class='id identifier rubyid_status'>status</span>
1869
+ <span class='kw'>end</span></pre>
1870
+ </td>
1871
+ </tr>
1872
+ </table>
1873
+ </div>
1874
+
1875
+ <div class="method_details ">
1876
+ <h3 class="signature " id="to_json-instance_method">
1877
+
1878
+ - (<tt>Object</tt>) <strong>to_json</strong>(pretty = false)
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+ </h3><div class="docstring">
1885
+ <div class="discussion">
1886
+
1887
+ <p>Parses the target's scanned data into JSON format for portability.</p>
1888
+
1889
+ <pre class="code ruby"><code><span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_get_network_id'>get_network_id</span>
1890
+ <span class='id identifier rubyid_json_string'>json_string</span> <span class='op'>=</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span> <span class='comment'>#=&gt; &quot;{\&quot;domain\&quot;:\&quot;mydomain.com\&quot;,\&quot;hostname\&quot;:\&quot;SERVER01\&quot;}&quot;...
1891
+ </span>
1892
+ <span class='comment'># The JSON string can later be parsed back into an object
1893
+ </span><span class='id identifier rubyid_target_object'>target_object</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_json_string'>json_string</span><span class='comma'>,</span> <span class='symbol'>:symbolize_names</span><span class='op'>=&gt;</span><span class='kw'>true</span><span class='rparen'>)</span></code></pre>
1894
+
1895
+
1896
+ </div>
1897
+ </div>
1898
+ <div class="tags">
1899
+ <p class="tag_title">Parameters:</p>
1900
+ <ul class="param">
1901
+
1902
+ <li>
1903
+
1904
+ <span class='name'>pretty</span>
1905
+
1906
+
1907
+ <span class='type'></span>
1908
+
1909
+
1910
+ <em class="default">(defaults to: <tt>false</tt>)</em>
1911
+
1912
+
1913
+ &mdash;
1914
+ <div class='inline'>
1915
+ <p>a boolean value to determine whether the data should be returned in json
1916
+ format with proper indentation.</p>
1917
+ </div>
1918
+
1919
+ </li>
1920
+
1921
+ </ul>
1922
+
1923
+
1924
+ </div><table class="source_code">
1925
+ <tr>
1926
+ <td>
1927
+ <pre class="lines">
1928
+
1929
+
1930
+ 313
1931
+ 314
1932
+ 315
1933
+ 316
1934
+ 317
1935
+ 318
1936
+ 319
1937
+ 320
1938
+ 321
1939
+ 322
1940
+ 323
1941
+ 324
1942
+ 325
1943
+ 326
1944
+ 327
1945
+ 328
1946
+ 329
1947
+ 330
1948
+ 331
1949
+ 332
1950
+ 333
1951
+ 334
1952
+ 335
1953
+ 336
1954
+ 337
1955
+ 338</pre>
1956
+ </td>
1957
+ <td>
1958
+ <pre class="code"><span class="info file"># File 'lib/boris/target.rb', line 313</span>
1959
+
1960
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_json'>to_json</span><span class='lparen'>(</span><span class='id identifier rubyid_pretty'>pretty</span><span class='op'>=</span><span class='kw'>false</span><span class='rparen'>)</span>
1961
+ <span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
1962
+
1963
+ <span class='id identifier rubyid_data_vars'>data_vars</span> <span class='op'>=</span> <span class='qwords_beg'>%w{
1964
+ </span><span class='tstring_content'> file_systems</span><span class='words_sep'>
1965
+ </span><span class='tstring_content'> hardware</span><span class='words_sep'>
1966
+ </span><span class='tstring_content'> hosted_shares</span><span class='words_sep'>
1967
+ </span><span class='tstring_content'> installed_applications</span><span class='words_sep'>
1968
+ </span><span class='tstring_content'> installed_patches</span><span class='words_sep'>
1969
+ </span><span class='tstring_content'> installed_services</span><span class='words_sep'>
1970
+ </span><span class='tstring_content'> local_user_groups</span><span class='words_sep'>
1971
+ </span><span class='tstring_content'> network_id</span><span class='words_sep'>
1972
+ </span><span class='tstring_content'> network_interfaces</span><span class='words_sep'>
1973
+ </span><span class='tstring_content'> operating_system</span><span class='words_sep'>
1974
+ </span><span class='tstring_end'> }</span></span>
1975
+
1976
+ <span class='id identifier rubyid_data_vars'>data_vars</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_var'>var</span><span class='op'>|</span>
1977
+ <span class='id identifier rubyid_json'>json</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance_variable_get'>instance_variable_get</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>@</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_var'>var</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span>
1978
+ <span class='kw'>end</span>
1979
+
1980
+ <span class='id identifier rubyid_generated_json'>generated_json</span> <span class='op'>=</span> <span class='id identifier rubyid_pretty'>pretty</span> <span class='op'>?</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_pretty_generate'>pretty_generate</span><span class='lparen'>(</span><span class='id identifier rubyid_json'>json</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_generate'>generate</span><span class='lparen'>(</span><span class='id identifier rubyid_json'>json</span><span class='rparen'>)</span>
1981
+
1982
+ <span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>json generated successfully</span><span class='tstring_end'>&quot;</span></span>
1983
+
1984
+ <span class='id identifier rubyid_generated_json'>generated_json</span>
1985
+ <span class='kw'>end</span></pre>
1986
+ </td>
1987
+ </tr>
1988
+ </table>
1989
+ </div>
1990
+
1991
+ </div>
1992
+
1993
+ </div>
1994
+
1995
+ <div id="footer">
1996
+ Generated on Sun Feb 3 16:32:42 2013 by
1997
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1998
+ 0.8.3 (ruby-1.9.3).
1999
+ </div>
2000
+
2001
+ </body>
2002
+ </html>