nasldoc 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjFhNmI2Y2VmNjQ0YTdiN2I2NjY4YTg5MTYwZDlkOWUxZTkzZmI5Nw==
5
+ data.tar.gz: !binary |-
6
+ Y2ZkYzUzMGZjZDFlYWE1NDEzODg3NDM5NWEwNWY2ZDU1MDlkMTM0Nw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YTE4YzhlYzA5MGI0Y2IzYWQ5YWU4MTQ0ZWNkMWE1MjAxYzYxNDA2NWFjNWQz
10
+ NzgxMjhjYTRkMTk0MzM4MjkzY2IwNmEwNTcxNWU5OTUzYWM0MTVhYzY3NTM3
11
+ MWNlYTA5YmZlMDM0NDFhYmNjNzdhY2EyODcwMzQ1YzVkNjI5MWU=
12
+ data.tar.gz: !binary |-
13
+ N2Q5NGE5N2NlMzRjN2VjNGRhOGVhNTJlYTlmNWRmZmQxZDRjY2I1MDMzNWQx
14
+ MGJkYmViYTQwZDYyYTRjZjNhOGFjYTQ3NmEyMzk2NGVkY2E1MmM3NGEwMjA4
15
+ ZGM5NWIzMzg5ODJkZDRmMWZiMjc5NmVlMWE2MGViZDE5NWEwNDk=
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "nasl", '0.2.0'
4
+ gem "rainbow", '2.0.0'
5
+ gem "rake", '10.3.2'
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "nasl", '0.2.0'
4
+ gem "rainbow", '2.0.0'
5
+ gem "rake", '10.3.2'
@@ -0,0 +1,17 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ builder (3.2.2)
5
+ nasl (0.2.0)
6
+ builder (~> 3.1)
7
+ rainbow (~> 2.0)
8
+ rainbow (2.0.0)
9
+ rake (10.3.2)
10
+
11
+ PLATFORMS
12
+ ruby
13
+
14
+ DEPENDENCIES
15
+ nasl (= 0.2.0)
16
+ rainbow (= 2.0.0)
17
+ rake (= 10.3.2)
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2012 Tenable Network Security.
1
+ Copyright (c) 2011-2014 Tenable Network Security.
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -1,8 +1,23 @@
1
1
  # News
2
2
 
3
+ #0.2.0 (August 27, 2014)
4
+ - Updated to support NASL v5.2.
5
+ - Minor bug fixes
6
+ - Added travis.ci support
7
+
8
+ #0.1.1 (January 29, 2013)
9
+ - Fixed bug caused by target attribute in anchor tags (Mak)
10
+ - Fixed linkages, these files don't exist, they're minified (Mak)
11
+ - Add syntax highlighting (Mak)
12
+ - Add source code to function hash (Mak)
13
+ - Fixed whitespace and removed trailing whitespace (Mak)
14
+ - Fixed parsing bug caused by bad formatting of tags (Mak)
15
+ - Fixed sorting for directories. (Mak)
16
+ - Fixed minor inconsistencies. (Mak)
17
+ - Support nested directories. (Mak)
18
+
3
19
  #0.1.0 (November 2012)
4
20
  - Integrated the nasl gem's language parsing for acquiring comments (Mak)
5
- - Added
6
21
 
7
22
  #0.0.9 (March 2012)
8
23
  - Fixed a show stopper
data/Rakefile CHANGED
@@ -1,28 +1,28 @@
1
- # Copyright (c) 2011-2013 Tenable Network Security.
1
+ ################################################################################
2
+ # Copyright (c) 2011-2014, Tenable Network Security
2
3
  # All rights reserved.
3
4
  #
4
5
  # Redistribution and use in source and binary forms, with or without
5
6
  # modification, are permitted provided that the following conditions are met:
6
7
  #
7
- # * Redistributions of source code must retain the above copyright
8
- # notice, this list of conditions and the following disclaimer.
9
- # * Redistributions in binary form must reproduce the above copyright
10
- # notice, this list of conditions and the following disclaimer in the
11
- # documentation and/or other materials provided with the distribution.
12
- # * Neither the name of the Tenable Network Security nor the names of its contributors
13
- # may be used to endorse or promote products derived from this software
14
- # without specific prior written permission.
8
+ # 1. Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
15
10
  #
16
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
- # DISCLAIMED. IN NO EVENT SHALL TENABLE NETWORK SECURITY BE LIABLE FOR ANY DIRECT, INDIRECT,
20
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
- # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
- # OF THE POSSIBILITY OF SUCH DAMAGE.
11
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+ ################################################################################
26
26
 
27
27
  $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
28
28
 
@@ -1,6 +1,8 @@
1
1
  # Todo
2
- - create a github page for the project
3
2
 
3
+ - tags nasldoc tag for assisting in searching, possibly auto generated from the description
4
+ - javascript searching
5
+ - create a github page for the project
4
6
  - hyper links open in new tab in firefox
5
7
  - fix the formatting for the function summaries
6
8
  - [hyperlink] syntax is broken
@@ -8,15 +10,11 @@
8
10
  - fix whitespace around all blocks
9
11
  - add code div
10
12
  - http://code.google.com/p/syntaxhighlighter/source/browse/trunk/Scripts/shBrushPhp.js
11
-
12
13
  - Break up the Application class
13
-
14
- - Compileatron <-- Takes in list of files to compile
14
+ - Compilation <-- Takes in list of files to compile
15
15
  - Creates index
16
16
  - Copies Assets
17
17
  - Compiles each .inc file into a .html file
18
-
19
18
  - TemplateHelper
20
- -
21
-
22
- - Anchor tags css issue not seeing the top
19
+ - Anchor tags css issue not seeing the top
20
+ - nasldoc coverage checker
@@ -1,29 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
- # Copyright (c) 2011-2013 Tenable Network Security.
2
+
3
+ ################################################################################
4
+ # Copyright (c) 2011-2014, Tenable Network Security
3
5
  # All rights reserved.
4
6
  #
5
7
  # Redistribution and use in source and binary forms, with or without
6
8
  # modification, are permitted provided that the following conditions are met:
7
9
  #
8
- # * Redistributions of source code must retain the above copyright
9
- # notice, this list of conditions and the following disclaimer.
10
- # * Redistributions in binary form must reproduce the above copyright
11
- # notice, this list of conditions and the following disclaimer in the
12
- # documentation and/or other materials provided with the distribution.
13
- # * Neither the name of the Tenable Network Security nor the names of its contributors
14
- # may be used to endorse or promote products derived from this software
15
- # without specific prior written permission.
10
+ # 1. Redistributions of source code must retain the above copyright notice, this
11
+ # list of conditions and the following disclaimer.
12
+ #
13
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
14
+ # this list of conditions and the following disclaimer in the documentation
15
+ # and/or other materials provided with the distribution.
16
16
  #
17
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
- # DISCLAIMED. IN NO EVENT SHALL TENABLE NETWORK SECURITY BE LIABLE FOR ANY DIRECT, INDIRECT,
21
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23
- # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
26
- # OF THE POSSIBILITY OF SUCH DAMAGE.
17
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
21
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ ################################################################################
27
28
 
28
29
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '/../lib'))
29
30
 
@@ -1,36 +1,37 @@
1
- # Copyright (c) 2011-2013 Tenable Network Security.
1
+ ################################################################################
2
+ # Copyright (c) 2011-2014, Tenable Network Security
2
3
  # All rights reserved.
3
4
  #
4
5
  # Redistribution and use in source and binary forms, with or without
5
6
  # modification, are permitted provided that the following conditions are met:
6
7
  #
7
- # * Redistributions of source code must retain the above copyright
8
- # notice, this list of conditions and the following disclaimer.
9
- # * Redistributions in binary form must reproduce the above copyright
10
- # notice, this list of conditions and the following disclaimer in the
11
- # documentation and/or other materials provided with the distribution.
12
- # * Neither the name of the Tenable Network Security nor the names of its contributors
13
- # may be used to endorse or promote products derived from this software
14
- # without specific prior written permission.
8
+ # 1. Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
15
10
  #
16
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
- # DISCLAIMED. IN NO EVENT SHALL TENABLE NETWORK SECURITY BE LIABLE FOR ANY DIRECT, INDIRECT,
20
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
- # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
- # OF THE POSSIBILITY OF SUCH DAMAGE.
11
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+ ################################################################################
26
26
 
27
27
  module NaslDoc
28
28
  APP_NAME = "nasldoc"
29
- VERSION = "0.1.1"
29
+ VERSION = "0.2.1"
30
30
  end
31
31
 
32
32
  require 'erb'
33
33
  require 'pathname'
34
34
  require 'optparse'
35
+ require 'rainbow/ext/string'
35
36
 
36
37
  require 'nasldoc/cli'
@@ -1,28 +1,28 @@
1
- # Copyright (c) 2011-2013 Tenable Network Security.
1
+ ################################################################################
2
+ # Copyright (c) 2011-2014, Tenable Network Security
2
3
  # All rights reserved.
3
4
  #
4
5
  # Redistribution and use in source and binary forms, with or without
5
6
  # modification, are permitted provided that the following conditions are met:
6
7
  #
7
- # * Redistributions of source code must retain the above copyright
8
- # notice, this list of conditions and the following disclaimer.
9
- # * Redistributions in binary form must reproduce the above copyright
10
- # notice, this list of conditions and the following disclaimer in the
11
- # documentation and/or other materials provided with the distribution.
12
- # * Neither the name of the Tenable Network Security nor the names of its contributors
13
- # may be used to endorse or promote products derived from this software
14
- # without specific prior written permission.
8
+ # 1. Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
15
10
  #
16
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
- # DISCLAIMED. IN NO EVENT SHALL TENABLE NETWORK SECURITY BE LIABLE FOR ANY DIRECT, INDIRECT,
20
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
- # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
- # OF THE POSSIBILITY OF SUCH DAMAGE.
11
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+ ################################################################################
26
26
 
27
27
  module NaslDoc
28
28
  module CLI
@@ -1,28 +1,28 @@
1
- # Copyright (c) 2011-2013 Tenable Network Security.
1
+ ################################################################################
2
+ # Copyright (c) 2011-2014, Tenable Network Security
2
3
  # All rights reserved.
3
4
  #
4
5
  # Redistribution and use in source and binary forms, with or without
5
6
  # modification, are permitted provided that the following conditions are met:
6
7
  #
7
- # * Redistributions of source code must retain the above copyright
8
- # notice, this list of conditions and the following disclaimer.
9
- # * Redistributions in binary form must reproduce the above copyright
10
- # notice, this list of conditions and the following disclaimer in the
11
- # documentation and/or other materials provided with the distribution.
12
- # * Neither the name of the Tenable Network Security nor the names of its contributors
13
- # may be used to endorse or promote products derived from this software
14
- # without specific prior written permission.
8
+ # 1. Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
15
10
  #
16
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
- # DISCLAIMED. IN NO EVENT SHALL TENABLE NETWORK SECURITY BE LIABLE FOR ANY DIRECT, INDIRECT,
20
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
- # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
- # OF THE POSSIBILITY OF SUCH DAMAGE.
11
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+ ################################################################################
26
26
 
27
27
  require 'nasldoc/cli/comment'
28
28
 
@@ -98,7 +98,12 @@ module NaslDoc
98
98
  contents = File.open(path, "rb") { |f| f.read }
99
99
 
100
100
  # Parse the input file.
101
- tree = Nasl::Parser.new.parse(contents, path)
101
+ begin
102
+ tree = Nasl::Parser.new.parse(contents, path)
103
+ rescue Nasl::ParseException, Nasl::TokenException
104
+ puts "[!!!] File '#{path}' couldn't be parsed. It should be added to the blacklist."
105
+ return nil
106
+ end
102
107
 
103
108
  # Collect the functions.
104
109
  @functions = Hash.new()
@@ -114,7 +119,13 @@ module NaslDoc
114
119
  @funcs_pub = @functions.reject { |n, p| @funcs_prv.key? n }
115
120
 
116
121
  # Collect the globals.
117
- @globals = tree.all(:Global).map(&:idents).flatten.map(&:name).sort
122
+ @globals = tree.all(:Global).map(&:idents).flatten.map do |id|
123
+ if id.is_a? Nasl::Assignment
124
+ id.lval.name
125
+ else
126
+ id.name
127
+ end
128
+ end.sort
118
129
 
119
130
  @globs_prv = @globals.select { |n| n =~ /^_/ }
120
131
  @globs_pub = @globals.reject { |n| @globs_prv.include? n }
@@ -173,6 +184,7 @@ module NaslDoc
173
184
  # Removes blacklisted files from the file list
174
185
  def remove_blacklist file_list
175
186
  blacklist = [
187
+ "apple_device_model_list.inc",
176
188
  "blacklist_dss.inc",
177
189
  "blacklist_rsa.inc",
178
190
  "blacklist_ssl_rsa1024.inc",
@@ -183,8 +195,18 @@ module NaslDoc
183
195
  "daily_badurl.inc",
184
196
  "known_CA.inc",
185
197
  "oui.inc",
198
+ "oval-definitions-schematron.inc",
199
+ "ovaldi32-rhel5.inc",
200
+ "ovaldi32-win-dyn-v100.inc",
201
+ "ovaldi32-win-dyn-v90.inc",
202
+ "ovaldi32-win-static.inc",
203
+ "ovaldi64-rhel5.inc",
204
+ "ovaldi64-win-dyn-v100.inc",
205
+ "ovaldi64-win-dyn-v90.inc",
206
+ "ovaldi64-win-static.inc",
186
207
  "plugin_feed_info.inc",
187
208
  "sc_families.inc",
209
+ "scap_schema.inc",
188
210
  "ssl_known_cert.inc"
189
211
  ]
190
212
 
@@ -0,0 +1,290 @@
1
+ ################################################################################
2
+ # Copyright (c) 2011-2014, Tenable Network Security
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # 1. Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+ ################################################################################
26
+
27
+ require 'nasldoc/cli/comment'
28
+
29
+ module NaslDoc
30
+ module CLI
31
+ class Application
32
+ attr_accessor :error_count
33
+
34
+ # Initializes the Application class
35
+ #
36
+ # - Sets the default output directory to nasldoc_output/
37
+ # - Sets the template directory to lib/templates
38
+ # - Sets the assets directory to lib/assets
39
+ #
40
+ def initialize
41
+ @file_list = Array.new
42
+ @function_count = 0
43
+ @error_count = 0
44
+ @options = Hash.new
45
+
46
+ @options[:output_directory] = "nasldoc_ouput/"
47
+
48
+ @functions = Array.new
49
+ @globals = Array.new
50
+ @includes = Array.new
51
+
52
+ @overview = nil
53
+
54
+ @template_dir = Pathname.new(__FILE__).realpath.to_s.gsub('cli/application.rb', 'templates')
55
+ @asset_dir = Pathname.new(__FILE__).realpath.to_s.gsub('cli/application.rb', 'assets')
56
+ @current_file = "(unknown)"
57
+ end
58
+
59
+ # For ERB Support
60
+ #
61
+ # @return ERB Binding for access to instance variables in templates
62
+ def get_binding
63
+ binding
64
+ end
65
+
66
+ # Generates the base name for a path
67
+ #
68
+ # @return htmlized file name for .inc file
69
+ def base path
70
+ File.basename(path, '.inc')
71
+ end
72
+
73
+ # Generates the HTML base name for a path
74
+ #
75
+ # @return htmlized file name for .inc file
76
+ def url path
77
+ base(path).gsub('.', '_') + '.html'
78
+ end
79
+
80
+ # Compiles a template for each file
81
+ def build_template name, path=nil
82
+ path ||= name
83
+
84
+ dest = url(path)
85
+ puts "[**] Creating #{dest}"
86
+ @erb = ERB.new File.new("#{@template_dir}/#{name}.erb").read, nil, "%"
87
+ html = @erb.result(get_binding)
88
+
89
+ File.open("#{@options[:output_directory]}/#{dest}", 'w+') do |f|
90
+ f.puts html
91
+ end
92
+ end
93
+
94
+ # Processes each .inc file and sets instance variables for each template
95
+ def build_file_page path
96
+ puts "[*] Processing file: #{path}"
97
+ @current_file = File.basename(path)
98
+ contents = File.open(path, "rb") { |f| f.read }
99
+
100
+ # Parse the input file.
101
+ tree = Nasl::Parser.new.parse(contents, path)
102
+
103
+ # Collect the functions.
104
+ @functions = Hash.new()
105
+ tree.all(:Function).map do |fn|
106
+ @functions[fn.name.name] = {
107
+ :code => fn.context(nil, false, false),
108
+ :params => fn.params.map(&:name)
109
+ }
110
+ @function_count += 1
111
+ end
112
+
113
+ @funcs_prv = @functions.select { |n, p| n =~ /^_/ }
114
+ @funcs_pub = @functions.reject { |n, p| @funcs_prv.key? n }
115
+
116
+ # Collect the globals.
117
+ @globals = tree.all(:Global).map(&:idents).flatten.map do |id|
118
+ if id.is_a? Nasl::Assignment
119
+ id.lval.name
120
+ else
121
+ id.name
122
+ end
123
+ end.sort
124
+
125
+ @globs_prv = @globals.select { |n| n =~ /^_/ }
126
+ @globs_pub = @globals.reject { |n| @globs_prv.include? n }
127
+
128
+ # Collect the includes.
129
+ @includes = tree.all(:Include).map(&:filename).map(&:text).sort
130
+
131
+ # Parse the comments.
132
+ @comments = tree.all(:Comment)
133
+ puts "[**] #{@comments.size} comment(s) were found"
134
+ @comments.map! do |comm|
135
+ begin
136
+ NaslDoc::CLI::Comment.new(comm, path)
137
+ rescue CommentException => e
138
+ # A short message is okay for format errors.
139
+ puts "[!!!] #{e.class.name} #{e.message}"
140
+ @error_count += 1
141
+ nil
142
+ rescue Exception => e
143
+ # A detailed message is given for programming errors.
144
+ puts "[!!!] #{e.class.name} #{e.message}"
145
+ puts e.backtrace.map{ |l| l.prepend "[!!!!] " }.join("\n")
146
+ nil
147
+ end
148
+ end
149
+ @comments.compact!
150
+ @comments.keep_if &:valid
151
+ puts "[**] #{@comments.size} nasldoc comment(s) were parsed"
152
+
153
+ # Find the overview comment.
154
+ @overview = @comments.select{ |c| c.type == :file }.shift
155
+
156
+ build_template "file", path
157
+ end
158
+
159
+ # Builds each page from the file_list
160
+ def build_file_pages
161
+ @file_list.each do |f|
162
+ build_file_page(f)
163
+ end
164
+ end
165
+
166
+ # Copies required assets to the final build directory
167
+ def copy_assets
168
+ puts `cp -vr #{@asset_dir}/* #{@options[:output_directory]}/`
169
+ end
170
+
171
+ # Prints documentation stats to stdout
172
+ def print_documentation_stats
173
+ puts "\n\nDocumentation Statistics"
174
+ puts "Files: #{@file_list.size}"
175
+ puts "Functions: #{@function_count}"
176
+ puts "Errors: #{@error_count}"
177
+ end
178
+
179
+ # Removes blacklisted files from the file list
180
+ def remove_blacklist file_list
181
+ blacklist = [
182
+ "apple_device_model_list.inc",
183
+ "blacklist_dss.inc",
184
+ "blacklist_rsa.inc",
185
+ "blacklist_ssl_rsa1024.inc",
186
+ "blacklist_ssl_rsa2048.inc",
187
+ "custom_CA.inc",
188
+ "daily_badip.inc",
189
+ "daily_badip2.inc",
190
+ "daily_badurl.inc",
191
+ "known_CA.inc",
192
+ "oui.inc",
193
+ "oval-definitions-schematron.inc",
194
+ "ovaldi32-rhel5.inc",
195
+ "ovaldi32-win-dyn-v100.inc",
196
+ "ovaldi32-win-dyn-v90.inc",
197
+ "ovaldi32-win-static.inc",
198
+ "ovaldi64-rhel5.inc",
199
+ "ovaldi64-win-dyn-v100.inc",
200
+ "ovaldi64-win-dyn-v90.inc",
201
+ "ovaldi64-win-static.inc",
202
+ "plugin_feed_info.inc",
203
+ "sc_families.inc",
204
+ "scap_schema.inc",
205
+ "ssl_known_cert.inc"
206
+ ]
207
+
208
+ new_file_list = file_list.dup
209
+
210
+ file_list.each_with_index do |file, index|
211
+ blacklist.each do |bf|
212
+ if file =~ /#{bf}/
213
+ new_file_list.delete(file)
214
+ end
215
+ end
216
+ end
217
+
218
+ return new_file_list
219
+ end
220
+
221
+ # Parses the command line arguments
222
+ def parse_args
223
+ opts = OptionParser.new do |opt|
224
+ opt.banner = "#{APP_NAME} v#{VERSION}\nTenable Network Security.\njhammack@tenable.com\n\n"
225
+ opt.banner << "Usage: #{APP_NAME} [options] [file|directory]"
226
+
227
+ opt.separator ''
228
+ opt.separator 'Options'
229
+
230
+ opt.on('-o', '--output DIRECTORY', "Directory to output results to, created if it doesn't exit") do |option|
231
+ @options[:output_directory] = option
232
+ end
233
+
234
+ opt.separator ''
235
+ opt.separator 'Other Options'
236
+
237
+ opt.on_tail('-v', '--version', "Shows application version information") do
238
+ puts "#{APP_NAME} - #{VERSION}"
239
+ exit
240
+ end
241
+
242
+ opt.on_tail('-?', '--help', 'Show this message') do
243
+ puts opt.to_s + "\n"
244
+ exit
245
+ end
246
+ end
247
+
248
+ if ARGV.length != 0
249
+ opts.parse!
250
+ else
251
+ puts opts.to_s + "\n"
252
+ exit
253
+ end
254
+ end
255
+
256
+ # Main function for running nasldoc
257
+ def run
258
+ parse_args
259
+
260
+ if File.directory?(ARGV.first) == true
261
+ pattern = File.join(ARGV.first, '**', '*.inc')
262
+ @file_list = Dir.glob pattern
263
+ else
264
+ @file_list << ARGV.first
265
+ end
266
+
267
+ # Ensure the output directory exists.
268
+ if File.directory?(@options[:output_directory]) == false
269
+ Dir.mkdir @options[:output_directory]
270
+ end
271
+
272
+ # Get rid of non-NASL files.
273
+ @file_list = remove_blacklist(@file_list)
274
+
275
+ # Ensure we process files in a consistent order.
276
+ @file_list.sort! do |a, b|
277
+ base(a) <=> base(b)
278
+ end
279
+
280
+ puts "[*] Building documentation..."
281
+
282
+ build_template "index"
283
+ build_file_pages
284
+ copy_assets
285
+
286
+ print_documentation_stats
287
+ end
288
+ end
289
+ end
290
+ end