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,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>