firescan 0.07
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.
- data/LICENSE.txt +202 -0
- data/README.txt +37 -0
- data/USAGE.txt +43 -0
- data/VERSION.txt +4 -0
- data/bin/firescan +4 -0
- data/build +7 -0
- data/doc/Example.html +224 -0
- data/doc/Firebind.html +213 -0
- data/doc/Firebind/Client.html +750 -0
- data/doc/Firebind/Portspec.html +390 -0
- data/doc/Firebind/Scan.html +413 -0
- data/doc/Firebind/ScanError.html +277 -0
- data/doc/Firebind/ScanState.html +1015 -0
- data/doc/Firebind/SimpleProtocol.html +292 -0
- data/doc/Firebind/TcpTransport.html +481 -0
- data/doc/Firebind/Transport.html +275 -0
- data/doc/Firebind/UdpTransport.html +472 -0
- data/doc/LICENSE_txt.html +323 -0
- data/doc/README_txt.html +171 -0
- data/doc/Runner.html +166 -0
- data/doc/TestPortspec.html +289 -0
- data/doc/Tools.html +321 -0
- data/doc/USAGE_txt.html +184 -0
- data/doc/VERSION_txt.html +126 -0
- data/doc/build.html +125 -0
- data/doc/created.rid +22 -0
- data/doc/doc/created_rid.html +121 -0
- data/doc/firescan_gemspec.html +140 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +118 -0
- data/doc/js/darkfish.js +155 -0
- data/doc/js/jquery.js +18 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/search.js +94 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/searcher.js +228 -0
- data/doc/rdoc.css +595 -0
- data/doc/table_of_contents.html +230 -0
- data/firescan.gemspec +18 -0
- data/lib/example.rb +20 -0
- data/lib/firebind/client.rb +308 -0
- data/lib/firebind/portspec.rb +107 -0
- data/lib/firebind/scan.rb +288 -0
- data/lib/firebind/scan_error.rb +32 -0
- data/lib/firebind/scan_state.rb +140 -0
- data/lib/firebind/simple_protocol.rb +59 -0
- data/lib/firebind/tcp_transport.rb +184 -0
- data/lib/firebind/tools.rb +107 -0
- data/lib/firebind/transport.rb +44 -0
- data/lib/firebind/udp_transport.rb +174 -0
- data/test/portspec_test.rb +53 -0
- data/test/runner.rb +7 -0
- metadata +136 -0
data/doc/Firebind.html
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
6
|
+
|
7
|
+
<title>module Firebind - RDoc Documentation</title>
|
8
|
+
|
9
|
+
<link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet">
|
10
|
+
|
11
|
+
<script type="text/javascript">
|
12
|
+
var rdoc_rel_prefix = "./";
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
|
16
|
+
<script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script>
|
17
|
+
<script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script>
|
18
|
+
<script type="text/javascript" charset="utf-8" src="./js/search.js"></script>
|
19
|
+
<script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script>
|
20
|
+
<script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script>
|
21
|
+
|
22
|
+
|
23
|
+
<body id="top" class="module">
|
24
|
+
<nav id="metadata">
|
25
|
+
<nav id="home-section" class="section">
|
26
|
+
<h3 class="section-header">
|
27
|
+
<a href="./index.html">Home</a>
|
28
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
29
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
30
|
+
</h3>
|
31
|
+
</nav>
|
32
|
+
|
33
|
+
|
34
|
+
<nav id="search-section" class="section project-section" class="initially-hidden">
|
35
|
+
<form action="#" method="get" accept-charset="utf-8">
|
36
|
+
<h3 class="section-header">
|
37
|
+
<input type="text" name="search" placeholder="Search" id="search-field"
|
38
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
39
|
+
</h3>
|
40
|
+
</form>
|
41
|
+
|
42
|
+
<ul id="search-results" class="initially-hidden"></ul>
|
43
|
+
</nav>
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
<div id="file-metadata">
|
49
|
+
<nav id="file-list-section" class="section">
|
50
|
+
<h3 class="section-header">Defined In</h3>
|
51
|
+
<ul>
|
52
|
+
<li>bin/firescan
|
53
|
+
<li>lib/example.rb
|
54
|
+
<li>lib/firebind/client.rb
|
55
|
+
<li>lib/firebind/portspec.rb
|
56
|
+
<li>lib/firebind/scan.rb
|
57
|
+
<li>lib/firebind/scan_error.rb
|
58
|
+
<li>lib/firebind/scan_state.rb
|
59
|
+
<li>lib/firebind/simple_protocol.rb
|
60
|
+
<li>lib/firebind/tcp_transport.rb
|
61
|
+
<li>lib/firebind/transport.rb
|
62
|
+
<li>lib/firebind/udp_transport.rb
|
63
|
+
<li>test/portspec_test.rb
|
64
|
+
<li>test/runner.rb
|
65
|
+
</ul>
|
66
|
+
</nav>
|
67
|
+
|
68
|
+
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<div id="class-metadata">
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div id="project-metadata">
|
80
|
+
<nav id="fileindex-section" class="section project-section">
|
81
|
+
<h3 class="section-header">Pages</h3>
|
82
|
+
|
83
|
+
<ul>
|
84
|
+
|
85
|
+
<li class="file"><a href="./LICENSE_txt.html">LICENSE</a>
|
86
|
+
|
87
|
+
<li class="file"><a href="./README_txt.html">README</a>
|
88
|
+
|
89
|
+
<li class="file"><a href="./USAGE_txt.html">USAGE</a>
|
90
|
+
|
91
|
+
<li class="file"><a href="./VERSION_txt.html">VERSION</a>
|
92
|
+
|
93
|
+
<li class="file"><a href="./build.html">build</a>
|
94
|
+
|
95
|
+
<li class="file"><a href="./doc/created_rid.html">created.rid</a>
|
96
|
+
|
97
|
+
<li class="file"><a href="./firescan_gemspec.html">firescan.gemspec</a>
|
98
|
+
|
99
|
+
</ul>
|
100
|
+
</nav>
|
101
|
+
|
102
|
+
<nav id="classindex-section" class="section project-section">
|
103
|
+
<h3 class="section-header">Class and Module Index</h3>
|
104
|
+
|
105
|
+
<ul class="link-list">
|
106
|
+
|
107
|
+
<li><a href="./Example.html">Example</a>
|
108
|
+
|
109
|
+
<li><a href="./Firebind.html">Firebind</a>
|
110
|
+
|
111
|
+
<li><a href="./Firebind/Client.html">Firebind::Client</a>
|
112
|
+
|
113
|
+
<li><a href="./Firebind/Portspec.html">Firebind::Portspec</a>
|
114
|
+
|
115
|
+
<li><a href="./Firebind/Scan.html">Firebind::Scan</a>
|
116
|
+
|
117
|
+
<li><a href="./Firebind/ScanError.html">Firebind::ScanError</a>
|
118
|
+
|
119
|
+
<li><a href="./Firebind/ScanState.html">Firebind::ScanState</a>
|
120
|
+
|
121
|
+
<li><a href="./Firebind/SimpleProtocol.html">Firebind::SimpleProtocol</a>
|
122
|
+
|
123
|
+
<li><a href="./Firebind/TcpTransport.html">Firebind::TcpTransport</a>
|
124
|
+
|
125
|
+
<li><a href="./Firebind/Transport.html">Firebind::Transport</a>
|
126
|
+
|
127
|
+
<li><a href="./Firebind/UdpTransport.html">Firebind::UdpTransport</a>
|
128
|
+
|
129
|
+
<li><a href="./Runner.html">Runner</a>
|
130
|
+
|
131
|
+
<li><a href="./TestPortspec.html">TestPortspec</a>
|
132
|
+
|
133
|
+
<li><a href="./Tools.html">Tools</a>
|
134
|
+
|
135
|
+
</ul>
|
136
|
+
</nav>
|
137
|
+
|
138
|
+
</div>
|
139
|
+
</nav>
|
140
|
+
|
141
|
+
<div id="documentation">
|
142
|
+
<h1 class="module">module Firebind</h1>
|
143
|
+
|
144
|
+
<div id="description" class="description">
|
145
|
+
|
146
|
+
<p><a href="Firebind.html">Firebind</a> -- Path <a
|
147
|
+
href="Firebind/Scan.html">Scan</a> <a
|
148
|
+
href="Firebind/Client.html">Client</a> Software Copyright (C) 2013 <a
|
149
|
+
href="Firebind.html">Firebind</a> Inc. All rights reserved. Authors - Jay
|
150
|
+
Houghton</p>
|
151
|
+
|
152
|
+
<p>Licensed under the Apache License, Version 2.0 (the “License”); you may not
|
153
|
+
use this file except in compliance with the License. You may obtain a copy
|
154
|
+
of the License at</p>
|
155
|
+
|
156
|
+
<p><a
|
157
|
+
href="http://www.apache.org/licenses/LICENSE-2.0">www.apache.org/licenses/LICENSE-2.0</a></p>
|
158
|
+
|
159
|
+
<p>Unless required by applicable law or agreed to in writing, software
|
160
|
+
distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
|
161
|
+
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
162
|
+
License for the specific language governing permissions and limitations
|
163
|
+
under the License.</p>
|
164
|
+
|
165
|
+
<p>This module encapsulates client-side path scanning functionality for use
|
166
|
+
with an associated <a href="Firebind.html">Firebind</a> server.</p>
|
167
|
+
|
168
|
+
<p><a href="Firebind.html">Firebind</a> -- Path <a
|
169
|
+
href="Firebind/Scan.html">Scan</a> <a
|
170
|
+
href="Firebind/Client.html">Client</a> Software Copyright (C) 2013 <a
|
171
|
+
href="Firebind.html">Firebind</a> Inc. All rights reserved. Authors - Jay
|
172
|
+
Houghton</p>
|
173
|
+
|
174
|
+
<p>Licensed under the Apache License, Version 2.0 (the “License”); you may not
|
175
|
+
use this file except in compliance with the License. You may obtain a copy
|
176
|
+
of the License at</p>
|
177
|
+
|
178
|
+
<p><a
|
179
|
+
href="http://www.apache.org/licenses/LICENSE-2.0">www.apache.org/licenses/LICENSE-2.0</a></p>
|
180
|
+
|
181
|
+
<p>Unless required by applicable law or agreed to in writing, software
|
182
|
+
distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
|
183
|
+
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
184
|
+
License for the specific language governing permissions and limitations
|
185
|
+
under the License.</p>
|
186
|
+
|
187
|
+
</div><!-- description -->
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
<!-- Methods -->
|
202
|
+
|
203
|
+
</section><!-- 5Buntitled-5D -->
|
204
|
+
|
205
|
+
</div><!-- documentation -->
|
206
|
+
|
207
|
+
|
208
|
+
<footer id="validator-badges">
|
209
|
+
<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
|
210
|
+
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.1.
|
211
|
+
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
|
212
|
+
</footer>
|
213
|
+
|
@@ -0,0 +1,750 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
6
|
+
|
7
|
+
<title>class Firebind::Client - RDoc Documentation</title>
|
8
|
+
|
9
|
+
<link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet">
|
10
|
+
|
11
|
+
<script type="text/javascript">
|
12
|
+
var rdoc_rel_prefix = "../";
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
16
|
+
<script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
|
17
|
+
<script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
|
18
|
+
<script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
|
19
|
+
<script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
|
20
|
+
<script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>
|
21
|
+
|
22
|
+
|
23
|
+
<body id="top" class="class">
|
24
|
+
<nav id="metadata">
|
25
|
+
<nav id="home-section" class="section">
|
26
|
+
<h3 class="section-header">
|
27
|
+
<a href="../index.html">Home</a>
|
28
|
+
<a href="../table_of_contents.html#classes">Classes</a>
|
29
|
+
<a href="../table_of_contents.html#methods">Methods</a>
|
30
|
+
</h3>
|
31
|
+
</nav>
|
32
|
+
|
33
|
+
|
34
|
+
<nav id="search-section" class="section project-section" class="initially-hidden">
|
35
|
+
<form action="#" method="get" accept-charset="utf-8">
|
36
|
+
<h3 class="section-header">
|
37
|
+
<input type="text" name="search" placeholder="Search" id="search-field"
|
38
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
39
|
+
</h3>
|
40
|
+
</form>
|
41
|
+
|
42
|
+
<ul id="search-results" class="initially-hidden"></ul>
|
43
|
+
</nav>
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
<div id="file-metadata">
|
49
|
+
<nav id="file-list-section" class="section">
|
50
|
+
<h3 class="section-header">Defined In</h3>
|
51
|
+
<ul>
|
52
|
+
<li>lib/firebind/client.rb
|
53
|
+
</ul>
|
54
|
+
</nav>
|
55
|
+
|
56
|
+
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<div id="class-metadata">
|
60
|
+
|
61
|
+
<nav id="parent-class-section" class="section">
|
62
|
+
<h3 class="section-header">Parent</h3>
|
63
|
+
|
64
|
+
<p class="link">Object
|
65
|
+
|
66
|
+
</nav>
|
67
|
+
|
68
|
+
<!-- Included Modules -->
|
69
|
+
<nav id="includes-section" class="section">
|
70
|
+
<h3 class="section-header">Included Modules</h3>
|
71
|
+
|
72
|
+
<ul class="link-list">
|
73
|
+
|
74
|
+
|
75
|
+
<li><a class="include" href="../Tools.html">Tools</a>
|
76
|
+
|
77
|
+
|
78
|
+
</ul>
|
79
|
+
</nav>
|
80
|
+
|
81
|
+
|
82
|
+
<!-- Method Quickref -->
|
83
|
+
<nav id="method-list-section" class="section">
|
84
|
+
<h3 class="section-header">Methods</h3>
|
85
|
+
|
86
|
+
<ul class="link-list">
|
87
|
+
|
88
|
+
<li ><a href="#method-c-new">::new</a>
|
89
|
+
|
90
|
+
<li ><a href="#method-i-arguments_valid-3F">#arguments_valid?</a>
|
91
|
+
|
92
|
+
<li ><a href="#method-i-do_output">#do_output</a>
|
93
|
+
|
94
|
+
<li ><a href="#method-i-do_scan_output">#do_scan_output</a>
|
95
|
+
|
96
|
+
<li ><a href="#method-i-output_options">#output_options</a>
|
97
|
+
|
98
|
+
<li ><a href="#method-i-parsed_options-3F">#parsed_options?</a>
|
99
|
+
|
100
|
+
<li ><a href="#method-i-run">#run</a>
|
101
|
+
|
102
|
+
<li ><a href="#method-i-update">#update</a>
|
103
|
+
|
104
|
+
</ul>
|
105
|
+
</nav>
|
106
|
+
|
107
|
+
</div>
|
108
|
+
|
109
|
+
<div id="project-metadata">
|
110
|
+
<nav id="fileindex-section" class="section project-section">
|
111
|
+
<h3 class="section-header">Pages</h3>
|
112
|
+
|
113
|
+
<ul>
|
114
|
+
|
115
|
+
<li class="file"><a href="../LICENSE_txt.html">LICENSE</a>
|
116
|
+
|
117
|
+
<li class="file"><a href="../README_txt.html">README</a>
|
118
|
+
|
119
|
+
<li class="file"><a href="../USAGE_txt.html">USAGE</a>
|
120
|
+
|
121
|
+
<li class="file"><a href="../VERSION_txt.html">VERSION</a>
|
122
|
+
|
123
|
+
<li class="file"><a href="../build.html">build</a>
|
124
|
+
|
125
|
+
<li class="file"><a href="../doc/created_rid.html">created.rid</a>
|
126
|
+
|
127
|
+
<li class="file"><a href="../firescan_gemspec.html">firescan.gemspec</a>
|
128
|
+
|
129
|
+
</ul>
|
130
|
+
</nav>
|
131
|
+
|
132
|
+
<nav id="classindex-section" class="section project-section">
|
133
|
+
<h3 class="section-header">Class and Module Index</h3>
|
134
|
+
|
135
|
+
<ul class="link-list">
|
136
|
+
|
137
|
+
<li><a href="../Example.html">Example</a>
|
138
|
+
|
139
|
+
<li><a href="../Firebind.html">Firebind</a>
|
140
|
+
|
141
|
+
<li><a href="../Firebind/Client.html">Firebind::Client</a>
|
142
|
+
|
143
|
+
<li><a href="../Firebind/Portspec.html">Firebind::Portspec</a>
|
144
|
+
|
145
|
+
<li><a href="../Firebind/Scan.html">Firebind::Scan</a>
|
146
|
+
|
147
|
+
<li><a href="../Firebind/ScanError.html">Firebind::ScanError</a>
|
148
|
+
|
149
|
+
<li><a href="../Firebind/ScanState.html">Firebind::ScanState</a>
|
150
|
+
|
151
|
+
<li><a href="../Firebind/SimpleProtocol.html">Firebind::SimpleProtocol</a>
|
152
|
+
|
153
|
+
<li><a href="../Firebind/TcpTransport.html">Firebind::TcpTransport</a>
|
154
|
+
|
155
|
+
<li><a href="../Firebind/Transport.html">Firebind::Transport</a>
|
156
|
+
|
157
|
+
<li><a href="../Firebind/UdpTransport.html">Firebind::UdpTransport</a>
|
158
|
+
|
159
|
+
<li><a href="../Runner.html">Runner</a>
|
160
|
+
|
161
|
+
<li><a href="../TestPortspec.html">TestPortspec</a>
|
162
|
+
|
163
|
+
<li><a href="../Tools.html">Tools</a>
|
164
|
+
|
165
|
+
</ul>
|
166
|
+
</nav>
|
167
|
+
|
168
|
+
</div>
|
169
|
+
</nav>
|
170
|
+
|
171
|
+
<div id="documentation">
|
172
|
+
<h1 class="class">class Firebind::Client</h1>
|
173
|
+
|
174
|
+
<div id="description" class="description">
|
175
|
+
|
176
|
+
<p>Firescan command line Ruby client for path scanning to a <a
|
177
|
+
href="../Firebind.html">Firebind</a> server</p>
|
178
|
+
|
179
|
+
</div><!-- description -->
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
<!-- Constants -->
|
191
|
+
<section id="constants-list" class="section">
|
192
|
+
<h3 class="section-header">Constants</h3>
|
193
|
+
<dl>
|
194
|
+
|
195
|
+
<dt id="VERSION">VERSION
|
196
|
+
|
197
|
+
<dd class="description">
|
198
|
+
|
199
|
+
|
200
|
+
</dl>
|
201
|
+
</section>
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
<!-- Attributes -->
|
206
|
+
<section id="attribute-method-details" class="method-section section">
|
207
|
+
<h3 class="section-header">Attributes</h3>
|
208
|
+
|
209
|
+
|
210
|
+
<div id="attribute-i-options" class="method-detail">
|
211
|
+
<div class="method-heading attribute-method-heading">
|
212
|
+
<span class="method-name">options</span><span
|
213
|
+
class="attribute-access-type">[R]</span>
|
214
|
+
</div>
|
215
|
+
|
216
|
+
<div class="method-description">
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
</div>
|
221
|
+
</div>
|
222
|
+
|
223
|
+
</section><!-- attribute-method-details -->
|
224
|
+
|
225
|
+
|
226
|
+
<!-- Methods -->
|
227
|
+
|
228
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section section">
|
229
|
+
<h3 class="section-header">Public Class Methods</h3>
|
230
|
+
|
231
|
+
|
232
|
+
<div id="method-c-new" class="method-detail ">
|
233
|
+
|
234
|
+
<div class="method-heading">
|
235
|
+
<span class="method-name">new</span><span
|
236
|
+
class="method-args">(arguments)</span>
|
237
|
+
|
238
|
+
<span class="method-click-advice">click to toggle source</span>
|
239
|
+
|
240
|
+
</div>
|
241
|
+
|
242
|
+
|
243
|
+
<div class="method-description">
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
<div class="method-source-code" id="new-source">
|
251
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 33</span>
|
252
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">arguments</span>)
|
253
|
+
<span class="ruby-ivar">@arguments</span> = <span class="ruby-identifier">arguments</span>
|
254
|
+
|
255
|
+
<span class="ruby-ivar">@opts</span> = <span class="ruby-constant">NIL</span>
|
256
|
+
<span class="ruby-comment"># Set defaults</span>
|
257
|
+
<span class="ruby-ivar">@options</span> = <span class="ruby-constant">OpenStruct</span>.<span class="ruby-identifier">new</span>
|
258
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">username</span> = <span class="ruby-constant">NIL</span>
|
259
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">password</span> = <span class="ruby-constant">NIL</span>
|
260
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">command_server</span> = <span class="ruby-string">'scanme.firebind.com'</span>
|
261
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">protocol</span> = <span class="ruby-value">:Simple</span>
|
262
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">transport</span> = <span class="ruby-value">:TCP</span>
|
263
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">timeout</span> = <span class="ruby-value">5000</span>
|
264
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tcp_port_list</span> = <span class="ruby-constant">NIL</span>
|
265
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">udp_port_list</span> = <span class="ruby-constant">NIL</span>
|
266
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">local_address</span> = <span class="ruby-constant">NIL</span>
|
267
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tag</span> = <span class="ruby-constant">NIL</span>
|
268
|
+
<span class="ruby-keyword">end</span></pre>
|
269
|
+
</div><!-- new-source -->
|
270
|
+
|
271
|
+
</div>
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
</div><!-- new-method -->
|
277
|
+
|
278
|
+
|
279
|
+
</section><!-- public-class-method-details -->
|
280
|
+
|
281
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
|
282
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
283
|
+
|
284
|
+
|
285
|
+
<div id="method-i-do_output" class="method-detail ">
|
286
|
+
|
287
|
+
<div class="method-heading">
|
288
|
+
<span class="method-name">do_output</span><span
|
289
|
+
class="method-args">()</span>
|
290
|
+
|
291
|
+
<span class="method-click-advice">click to toggle source</span>
|
292
|
+
|
293
|
+
</div>
|
294
|
+
|
295
|
+
|
296
|
+
<div class="method-description">
|
297
|
+
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
<div class="method-source-code" id="do_output-source">
|
304
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 156</span>
|
305
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">do_output</span>
|
306
|
+
|
307
|
+
<span class="ruby-identifier">tcp</span> = <span class="ruby-ivar">@tcp_scan</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@tcp_scan</span>.<span class="ruby-identifier">current_state</span> <span class="ruby-operator">==</span> <span class="ruby-value">:SCAN_COMPLETE</span>
|
308
|
+
<span class="ruby-identifier">udp</span> = <span class="ruby-ivar">@udp_scan</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@udp_scan</span>.<span class="ruby-identifier">current_state</span> <span class="ruby-operator">==</span> <span class="ruby-value">:SCAN_COMPLETE</span>
|
309
|
+
|
310
|
+
<span class="ruby-comment"># we had a complete scan, show summary</span>
|
311
|
+
|
312
|
+
<span class="ruby-identifier">out</span> = <span class="ruby-string">"\n"</span>
|
313
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">tcp</span>
|
314
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Completed #{@tcp_scan.protocol} scan of #{@tcp_scan.transport} #{@tcp_scan.portspec.to_s}\n"</span>
|
315
|
+
<span class="ruby-identifier">tcp_transport_out</span>,<span class="ruby-identifier">tcp_scanned_out</span>,<span class="ruby-identifier">tcp_port_detail_out</span> = <span class="ruby-identifier">do_scan_output</span>(<span class="ruby-ivar">@tcp_scan</span>)
|
316
|
+
<span class="ruby-keyword">end</span>
|
317
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">udp</span>
|
318
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Completed #{@udp_scan.protocol} scan of #{@udp_scan.transport} #{@udp_scan.portspec.to_s}\n"</span>
|
319
|
+
<span class="ruby-identifier">udp_transport_out</span>,<span class="ruby-identifier">udp_scanned_out</span>,<span class="ruby-identifier">udp_port_detail_out</span> = <span class="ruby-identifier">do_scan_output</span>(<span class="ruby-ivar">@udp_scan</span>)
|
320
|
+
<span class="ruby-keyword">end</span>
|
321
|
+
|
322
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">tcp_transport_out</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">tcp_transport_out</span>
|
323
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">udp_transport_out</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">udp_transport_out</span>
|
324
|
+
|
325
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">tcp_scanned_out</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">tcp_scanned_out</span>
|
326
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">udp_scanned_out</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">udp_scanned_out</span>
|
327
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-string">"\n"</span>
|
328
|
+
|
329
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">tcp_port_detail_out</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">tcp_port_detail_out</span>
|
330
|
+
<span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">udp_port_detail_out</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">udp_port_detail_out</span>
|
331
|
+
|
332
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">out</span>
|
333
|
+
|
334
|
+
<span class="ruby-keyword">end</span></pre>
|
335
|
+
</div><!-- do_output-source -->
|
336
|
+
|
337
|
+
</div>
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
|
342
|
+
</div><!-- do_output-method -->
|
343
|
+
|
344
|
+
|
345
|
+
<div id="method-i-do_scan_output" class="method-detail ">
|
346
|
+
|
347
|
+
<div class="method-heading">
|
348
|
+
<span class="method-name">do_scan_output</span><span
|
349
|
+
class="method-args">(state)</span>
|
350
|
+
|
351
|
+
<span class="method-click-advice">click to toggle source</span>
|
352
|
+
|
353
|
+
</div>
|
354
|
+
|
355
|
+
|
356
|
+
<div class="method-description">
|
357
|
+
|
358
|
+
<p>command line output formatting helpers</p>
|
359
|
+
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
<div class="method-source-code" id="do_scan_output-source">
|
364
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 125</span>
|
365
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">do_scan_output</span>(<span class="ruby-identifier">state</span>)
|
366
|
+
<span class="ruby-identifier">open_ports</span> = <span class="ruby-identifier">state</span>.<span class="ruby-identifier">open_ports</span>
|
367
|
+
<span class="ruby-identifier">closed_ports</span> = <span class="ruby-identifier">state</span>.<span class="ruby-identifier">closed_ports</span>
|
368
|
+
|
369
|
+
<span class="ruby-identifier">open_defa</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">open_ports</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">></span><span class="ruby-value">1</span> <span class="ruby-keyword">then</span> <span class="ruby-string">'are'</span> <span class="ruby-keyword">else</span> <span class="ruby-string">'is'</span> <span class="ruby-keyword">end</span>
|
370
|
+
<span class="ruby-identifier">closed_defa</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">closed_ports</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">></span><span class="ruby-value">1</span> <span class="ruby-keyword">then</span> <span class="ruby-string">'are'</span> <span class="ruby-keyword">else</span> <span class="ruby-string">'is'</span> <span class="ruby-keyword">end</span>
|
371
|
+
|
372
|
+
<span class="ruby-identifier">port_or_ports</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">ports_scanned</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-keyword">then</span> <span class="ruby-string">'port'</span> <span class="ruby-keyword">else</span> <span class="ruby-string">'ports'</span> <span class="ruby-keyword">end</span>
|
373
|
+
|
374
|
+
<span class="ruby-identifier">transport_output</span> = <span class="ruby-string">''</span>
|
375
|
+
<span class="ruby-identifier">transport_output</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{state.transport} Port#{'s' unless open_ports.size == 1} #{open_ports.to_s} "</span> <span class="ruby-node">"#{open_defa} open\n"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">open_ports</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
376
|
+
<span class="ruby-identifier">transport_output</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{state.transport} Port#{'s' unless closed_ports.size == 1} #{closed_ports.to_s} "</span> <span class="ruby-node">"#{closed_defa} closed\n"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">closed_ports</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
377
|
+
|
378
|
+
<span class="ruby-identifier">scanned_output</span> = <span class="ruby-string">''</span>
|
379
|
+
<span class="ruby-identifier">scanned_output</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"\nScanned #{state.ports_scanned} #{state.transport} #{port_or_ports}"</span>
|
380
|
+
<span class="ruby-identifier">scanned_output</span> <span class="ruby-operator"><<</span> <span class="ruby-node">", #{open_ports.size} #{open_defa} open"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">open_ports</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
381
|
+
<span class="ruby-identifier">scanned_output</span> <span class="ruby-operator"><<</span> <span class="ruby-node">", #{closed_ports.size} #{closed_defa} closed"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">closed_ports</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
382
|
+
|
383
|
+
<span class="ruby-identifier">port_detail_output</span> = <span class="ruby-string">''</span>
|
384
|
+
<span class="ruby-identifier">state</span>.<span class="ruby-identifier">result_map</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">code</span>,<span class="ruby-identifier">ports</span><span class="ruby-operator">|</span>
|
385
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">$success</span>
|
386
|
+
<span class="ruby-identifier">ps</span> = <span class="ruby-constant">Portspec</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ports</span>)
|
387
|
+
<span class="ruby-identifier">port_detail_output</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{port_or_ports.capitalize} #{ps.to_s} #{if ps.size>1 then 'are' else 'is' end} closed - #{$result_code_messages[code]}\n"</span>
|
388
|
+
<span class="ruby-keyword">end</span>
|
389
|
+
<span class="ruby-keyword">end</span>
|
390
|
+
|
391
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">transport_output</span>,<span class="ruby-identifier">scanned_output</span>,<span class="ruby-identifier">port_detail_output</span>
|
392
|
+
<span class="ruby-keyword">end</span></pre>
|
393
|
+
</div><!-- do_scan_output-source -->
|
394
|
+
|
395
|
+
</div>
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
</div><!-- do_scan_output-method -->
|
401
|
+
|
402
|
+
|
403
|
+
<div id="method-i-run" class="method-detail ">
|
404
|
+
|
405
|
+
<div class="method-heading">
|
406
|
+
<span class="method-name">run</span><span
|
407
|
+
class="method-args">()</span>
|
408
|
+
|
409
|
+
<span class="method-click-advice">click to toggle source</span>
|
410
|
+
|
411
|
+
</div>
|
412
|
+
|
413
|
+
|
414
|
+
<div class="method-description">
|
415
|
+
|
416
|
+
<p>Parse options, check arguments, then process the command</p>
|
417
|
+
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
<div class="method-source-code" id="run-source">
|
422
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 52</span>
|
423
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">run</span>
|
424
|
+
<span class="ruby-identifier">scan</span> = <span class="ruby-constant">NIL</span>
|
425
|
+
<span class="ruby-keyword">begin</span>
|
426
|
+
|
427
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parsed_options?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">arguments_valid?</span>
|
428
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">''</span>
|
429
|
+
<span class="ruby-identifier">verbose</span> <span class="ruby-node">"Start at #{DateTime.now}"</span>
|
430
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">"Firescan Ruby client version #{VERSION} ( http://www.firebind.com )"</span>
|
431
|
+
<span class="ruby-comment">#############</span>
|
432
|
+
<span class="ruby-comment"># TCP scan</span>
|
433
|
+
<span class="ruby-comment">#############</span>
|
434
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tcp_port_list</span>.<span class="ruby-identifier">nil?</span>
|
435
|
+
|
436
|
+
<span class="ruby-identifier">debug</span> <span class="ruby-node">"performing scan on TCP #{@options.tcp_port_list} via #{@options.command_server}"</span>
|
437
|
+
|
438
|
+
<span class="ruby-identifier">scan</span> = <span class="ruby-constant">Scan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">command_server</span>,
|
439
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tcp_port_list</span>,
|
440
|
+
<span class="ruby-value">:TCP</span>,
|
441
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">timeout</span>,
|
442
|
+
<span class="ruby-value">:SimpleProtocol</span>,
|
443
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">username</span>,
|
444
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">password</span>)
|
445
|
+
|
446
|
+
<span class="ruby-identifier">scan</span>.<span class="ruby-identifier">add_observer</span> <span class="ruby-keyword">self</span>
|
447
|
+
<span class="ruby-keyword">begin</span>
|
448
|
+
<span class="ruby-ivar">@tcp_scan</span> = <span class="ruby-identifier">scan</span>.<span class="ruby-identifier">scan</span>
|
449
|
+
|
450
|
+
<span class="ruby-identifier">debug</span> <span class="ruby-node">"scan state: #{@tcp_scan.to_s}"</span>
|
451
|
+
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EHOSTUNREACH</span>
|
452
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'host not reachable'</span>
|
453
|
+
<span class="ruby-keyword">end</span>
|
454
|
+
<span class="ruby-keyword">end</span>
|
455
|
+
|
456
|
+
<span class="ruby-comment">#############</span>
|
457
|
+
<span class="ruby-comment"># UDP scan</span>
|
458
|
+
<span class="ruby-comment">#############</span>
|
459
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">udp_port_list</span>.<span class="ruby-identifier">nil?</span>
|
460
|
+
|
461
|
+
<span class="ruby-identifier">debug</span> <span class="ruby-node">"performing scan on UDP #{@options.udp_port_list} via #{@options.command_server}"</span>
|
462
|
+
|
463
|
+
<span class="ruby-identifier">scan</span> = <span class="ruby-constant">Scan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">command_server</span>,
|
464
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">udp_port_list</span>,
|
465
|
+
<span class="ruby-value">:UDP</span>,
|
466
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">timeout</span>,
|
467
|
+
<span class="ruby-value">:SimpleProtocol</span>,
|
468
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">username</span>,
|
469
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">password</span>)
|
470
|
+
|
471
|
+
<span class="ruby-identifier">scan</span>.<span class="ruby-identifier">add_observer</span> <span class="ruby-keyword">self</span>
|
472
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">''</span>
|
473
|
+
<span class="ruby-keyword">begin</span>
|
474
|
+
<span class="ruby-ivar">@udp_scan</span> = <span class="ruby-identifier">scan</span>.<span class="ruby-identifier">scan</span>
|
475
|
+
|
476
|
+
<span class="ruby-identifier">debug</span> <span class="ruby-node">"scan state: #{@udp_scan.to_s}"</span>
|
477
|
+
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EHOSTUNREACH</span>
|
478
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'host not reachable'</span>
|
479
|
+
<span class="ruby-keyword">end</span>
|
480
|
+
<span class="ruby-keyword">end</span>
|
481
|
+
|
482
|
+
<span class="ruby-identifier">do_output</span>
|
483
|
+
<span class="ruby-identifier">verbose</span> <span class="ruby-node">"Finished at #{DateTime.now}"</span>
|
484
|
+
|
485
|
+
<span class="ruby-keyword">else</span>
|
486
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@opts</span>
|
487
|
+
<span class="ruby-keyword">end</span>
|
488
|
+
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Interrupt</span>
|
489
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'Stopping scan'</span>
|
490
|
+
<span class="ruby-identifier">scan</span>.<span class="ruby-identifier">stop</span>
|
491
|
+
<span class="ruby-keyword">end</span>
|
492
|
+
<span class="ruby-keyword">end</span></pre>
|
493
|
+
</div><!-- run-source -->
|
494
|
+
|
495
|
+
</div>
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
|
500
|
+
</div><!-- run-method -->
|
501
|
+
|
502
|
+
|
503
|
+
<div id="method-i-update" class="method-detail ">
|
504
|
+
|
505
|
+
<div class="method-heading">
|
506
|
+
<span class="method-name">update</span><span
|
507
|
+
class="method-args">(state)</span>
|
508
|
+
|
509
|
+
<span class="method-click-advice">click to toggle source</span>
|
510
|
+
|
511
|
+
</div>
|
512
|
+
|
513
|
+
|
514
|
+
<div class="method-description">
|
515
|
+
|
516
|
+
<p>scan callback interface @param [Object] state</p>
|
517
|
+
|
518
|
+
|
519
|
+
|
520
|
+
|
521
|
+
<div class="method-source-code" id="update-source">
|
522
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 189</span>
|
523
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">update</span>(<span class="ruby-identifier">state</span>)
|
524
|
+
<span class="ruby-identifier">debug</span> <span class="ruby-node">"callback #{state.to_s}"</span>
|
525
|
+
|
526
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">current_state</span>
|
527
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">:PORT_COMPLETE</span>
|
528
|
+
|
529
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">port_result_code</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">$success</span>
|
530
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">" open in #{state.port_duration}ms #{state.percent_complete}%"</span>
|
531
|
+
<span class="ruby-keyword">else</span>
|
532
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">" closed after #{state.port_duration}ms - #{$result_code_messages[state.port_result_code]}"</span>
|
533
|
+
<span class="ruby-keyword">end</span>
|
534
|
+
|
535
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">flush</span>
|
536
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">:PORT_START</span>
|
537
|
+
<span class="ruby-identifier">print</span> <span class="ruby-node">"#{state.transport.to_s} #{state.port.to_s}"</span>
|
538
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">:PORT_TICK</span>
|
539
|
+
<span class="ruby-identifier">print</span> <span class="ruby-string">'.'</span>
|
540
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">:SCAN_START</span>
|
541
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">"Performing #{state.protocol} scan on #{state.transport} ports #{state.portspec.to_s} via #{state.command_server} with #{state.timeout}ms timeout"</span>
|
542
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">:START_FAILURE</span>
|
543
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">status_code</span>
|
544
|
+
<span class="ruby-keyword">when</span> <span class="ruby-identifier">$authentication_failure</span>
|
545
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'Authentication failure'</span>
|
546
|
+
<span class="ruby-keyword">when</span> <span class="ruby-identifier">$request_invalid</span>
|
547
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">'Incompatible command server (request invalid)'</span>
|
548
|
+
<span class="ruby-keyword">when</span> <span class="ruby-identifier">$server_bind_error</span>
|
549
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">"Server unable to bind on ports #{state.portspec.to_s}"</span>
|
550
|
+
<span class="ruby-keyword">when</span> <span class="ruby-identifier">$command_server_unavailable</span>
|
551
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">"Unable to reach command server #{state.message}"</span>
|
552
|
+
<span class="ruby-keyword">else</span>
|
553
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">"Unable to start scan (code #{state.status_code})"</span>
|
554
|
+
<span class="ruby-keyword">end</span>
|
555
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">:SCAN_COMPLETE</span>
|
556
|
+
|
557
|
+
<span class="ruby-keyword">else</span>
|
558
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">"unhandled callback #{state.to_s}"</span>
|
559
|
+
<span class="ruby-keyword">end</span>
|
560
|
+
|
561
|
+
<span class="ruby-keyword">end</span></pre>
|
562
|
+
</div><!-- update-source -->
|
563
|
+
|
564
|
+
</div>
|
565
|
+
|
566
|
+
|
567
|
+
|
568
|
+
|
569
|
+
</div><!-- update-method -->
|
570
|
+
|
571
|
+
|
572
|
+
</section><!-- public-instance-method-details -->
|
573
|
+
|
574
|
+
<section id="protected-instance-5Buntitled-5D-method-details" class="method-section section">
|
575
|
+
<h3 class="section-header">Protected Instance Methods</h3>
|
576
|
+
|
577
|
+
|
578
|
+
<div id="method-i-arguments_valid-3F" class="method-detail ">
|
579
|
+
|
580
|
+
<div class="method-heading">
|
581
|
+
<span class="method-name">arguments_valid?</span><span
|
582
|
+
class="method-args">()</span>
|
583
|
+
|
584
|
+
<span class="method-click-advice">click to toggle source</span>
|
585
|
+
|
586
|
+
</div>
|
587
|
+
|
588
|
+
|
589
|
+
<div class="method-description">
|
590
|
+
|
591
|
+
<p>True if required arguments were provided</p>
|
592
|
+
|
593
|
+
|
594
|
+
|
595
|
+
|
596
|
+
<div class="method-source-code" id="arguments_valid-3F-source">
|
597
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 302</span>
|
598
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">arguments_valid?</span>
|
599
|
+
<span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">udp_port_list</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">NIL</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tcp_port_list</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">NIL</span>
|
600
|
+
<span class="ruby-keyword">end</span></pre>
|
601
|
+
</div><!-- arguments_valid-3F-source -->
|
602
|
+
|
603
|
+
</div>
|
604
|
+
|
605
|
+
|
606
|
+
|
607
|
+
|
608
|
+
</div><!-- arguments_valid-3F-method -->
|
609
|
+
|
610
|
+
|
611
|
+
<div id="method-i-output_options" class="method-detail ">
|
612
|
+
|
613
|
+
<div class="method-heading">
|
614
|
+
<span class="method-name">output_options</span><span
|
615
|
+
class="method-args">()</span>
|
616
|
+
|
617
|
+
<span class="method-click-advice">click to toggle source</span>
|
618
|
+
|
619
|
+
</div>
|
620
|
+
|
621
|
+
|
622
|
+
<div class="method-description">
|
623
|
+
|
624
|
+
|
625
|
+
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
<div class="method-source-code" id="output_options-source">
|
630
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 294</span>
|
631
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">output_options</span>
|
632
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">"Options:\ "</span>
|
633
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">marshal_dump</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
|
634
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">" #{name} = #{val}"</span>
|
635
|
+
<span class="ruby-keyword">end</span>
|
636
|
+
<span class="ruby-keyword">end</span></pre>
|
637
|
+
</div><!-- output_options-source -->
|
638
|
+
|
639
|
+
</div>
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
|
644
|
+
</div><!-- output_options-method -->
|
645
|
+
|
646
|
+
|
647
|
+
<div id="method-i-parsed_options-3F" class="method-detail ">
|
648
|
+
|
649
|
+
<div class="method-heading">
|
650
|
+
<span class="method-name">parsed_options?</span><span
|
651
|
+
class="method-args">()</span>
|
652
|
+
|
653
|
+
<span class="method-click-advice">click to toggle source</span>
|
654
|
+
|
655
|
+
</div>
|
656
|
+
|
657
|
+
|
658
|
+
<div class="method-description">
|
659
|
+
|
660
|
+
<p>figure what arguments we have to work with</p>
|
661
|
+
|
662
|
+
|
663
|
+
|
664
|
+
|
665
|
+
<div class="method-source-code" id="parsed_options-3F-source">
|
666
|
+
<pre><span class="ruby-comment"># File lib/firebind/client.rb, line 232</span>
|
667
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">parsed_options?</span>
|
668
|
+
|
669
|
+
<span class="ruby-ivar">@opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">opt</span><span class="ruby-operator">|</span>
|
670
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">"\nFirescan Ruby client version #{VERSION} ( http://www.firebind.com )\nUsage: firescan [options] "</span>
|
671
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">separator</span> <span class="ruby-string">''</span>
|
672
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">separator</span> <span class="ruby-string">'Options'</span>
|
673
|
+
|
674
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-h'</span>, <span class="ruby-string">'--help'</span>,<span class="ruby-string">'Show help and version'</span>) <span class="ruby-keyword">do</span>
|
675
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@opts</span>
|
676
|
+
<span class="ruby-identifier">exit</span>
|
677
|
+
<span class="ruby-keyword">end</span>
|
678
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-v'</span>, <span class="ruby-string">'--verbose'</span>,<span class="ruby-string">'Show verbose output'</span>) <span class="ruby-keyword">do</span>
|
679
|
+
<span class="ruby-identifier">$verbose</span> = <span class="ruby-keyword">true</span>
|
680
|
+
<span class="ruby-keyword">end</span>
|
681
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-s ADDRESS'</span>, <span class="ruby-string">'--command-server ADDRESS'</span>,<span class="ruby-string">'Address:port or hostname:port of command server, default port is 80'</span>,<span class="ruby-constant">String</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">address</span><span class="ruby-operator">|</span>
|
682
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">command_server</span> = <span class="ruby-identifier">address</span>
|
683
|
+
<span class="ruby-keyword">end</span>
|
684
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-t PORT_LIST'</span>, <span class="ruby-string">'--tcp PORT_LIST'</span>,<span class="ruby-string">'TCP Port specification (list), use commas and dashes to specify a list of ports'</span>,<span class="ruby-constant">String</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tcp_port_list</span><span class="ruby-operator">|</span>
|
685
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tcp_port_list</span> = <span class="ruby-identifier">tcp_port_list</span>
|
686
|
+
<span class="ruby-keyword">end</span>
|
687
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-u PORT_LIST'</span>, <span class="ruby-string">'--udp PORT_LIST'</span>,<span class="ruby-string">'UDP Port specification (list), use commas and dashes to specify a list of ports'</span>,<span class="ruby-constant">String</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">udp_port_list</span><span class="ruby-operator">|</span>
|
688
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">udp_port_list</span> = <span class="ruby-identifier">udp_port_list</span>
|
689
|
+
<span class="ruby-keyword">end</span>
|
690
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-i TIMEOUT'</span>, <span class="ruby-string">'--timeout TIMEOUT'</span>,<span class="ruby-string">'Timeout (in milliseconds) to use for connect, transmit and receive operations'</span>,<span class="ruby-constant">Integer</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">timeout</span><span class="ruby-operator">|</span>
|
691
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">timeout</span> = <span class="ruby-identifier">timeout</span>
|
692
|
+
<span class="ruby-keyword">end</span>
|
693
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-n USERNAME'</span>, <span class="ruby-string">'--username USERNAME'</span>,<span class="ruby-string">'Specify a username (to connect to command server)'</span>,<span class="ruby-constant">String</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">username</span><span class="ruby-operator">|</span>
|
694
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">username</span> = <span class="ruby-identifier">username</span>
|
695
|
+
<span class="ruby-keyword">end</span>
|
696
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-p PASSWORD'</span>, <span class="ruby-string">'--password PASSWORD'</span>,<span class="ruby-string">'Specify a password (to connect to command server)'</span>,<span class="ruby-constant">String</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">password</span><span class="ruby-operator">|</span>
|
697
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">password</span> = <span class="ruby-identifier">password</span>
|
698
|
+
<span class="ruby-keyword">end</span>
|
699
|
+
<span class="ruby-comment">#opt.on('-r PROTOCOL', '--protocol PROTOCOL','Specify a protocol (defaults to Simple protocol)',String) do |protocol|</span>
|
700
|
+
<span class="ruby-comment">#@options.protocol = protocol</span>
|
701
|
+
<span class="ruby-comment"># todo handle this when IMG is available</span>
|
702
|
+
<span class="ruby-comment">#end</span>
|
703
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-g TAG'</span>, <span class="ruby-string">'--tag TAG'</span>,<span class="ruby-string">'tag the scan with value'</span>,<span class="ruby-constant">String</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tag</span><span class="ruby-operator">|</span>
|
704
|
+
<span class="ruby-ivar">@options</span>.<span class="ruby-identifier">tag</span> = <span class="ruby-identifier">tag</span>
|
705
|
+
<span class="ruby-keyword">end</span>
|
706
|
+
<span class="ruby-comment">#opt.on('-l LOCAL_ADDRESS', '--localaddr LOCAL_ADDRESS','Specify local IP address for client binding',String) do |addr|</span>
|
707
|
+
<span class="ruby-comment"># @options.local_address = addr</span>
|
708
|
+
<span class="ruby-comment">#end</span>
|
709
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">on</span>(<span class="ruby-string">'-d'</span>, <span class="ruby-string">'--xdebug'</span>,<span class="ruby-string">'Show debug output'</span>) <span class="ruby-keyword">do</span>
|
710
|
+
<span class="ruby-identifier">$verbose</span> = <span class="ruby-keyword">true</span>
|
711
|
+
<span class="ruby-identifier">$debug</span> = <span class="ruby-keyword">true</span>
|
712
|
+
<span class="ruby-keyword">end</span>
|
713
|
+
<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">separator</span> <span class="ruby-string">''</span>
|
714
|
+
<span class="ruby-keyword">end</span>
|
715
|
+
|
716
|
+
<span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">parse!</span>(<span class="ruby-ivar">@arguments</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
717
|
+
|
718
|
+
<span class="ruby-identifier">verbose</span> <span class="ruby-string">'verbose output is on'</span>
|
719
|
+
<span class="ruby-identifier">debug</span> <span class="ruby-string">'debug output is on'</span>
|
720
|
+
|
721
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">$debug</span>
|
722
|
+
<span class="ruby-identifier">output_options</span>
|
723
|
+
<span class="ruby-keyword">end</span>
|
724
|
+
<span class="ruby-comment">#debug @options.to_s</span>
|
725
|
+
|
726
|
+
<span class="ruby-keyword">true</span>
|
727
|
+
<span class="ruby-keyword">end</span></pre>
|
728
|
+
</div><!-- parsed_options-3F-source -->
|
729
|
+
|
730
|
+
</div>
|
731
|
+
|
732
|
+
|
733
|
+
|
734
|
+
|
735
|
+
</div><!-- parsed_options-3F-method -->
|
736
|
+
|
737
|
+
|
738
|
+
</section><!-- protected-instance-method-details -->
|
739
|
+
|
740
|
+
</section><!-- 5Buntitled-5D -->
|
741
|
+
|
742
|
+
</div><!-- documentation -->
|
743
|
+
|
744
|
+
|
745
|
+
<footer id="validator-badges">
|
746
|
+
<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
|
747
|
+
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.1.
|
748
|
+
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
|
749
|
+
</footer>
|
750
|
+
|