nasldoc 0.4.1 → 0.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da082365072da3d138569adf318fe2926041c0bd
4
- data.tar.gz: 3258b4e720e12de9950ae01287ead0ea33715bc6
3
+ metadata.gz: 1d6100856f636cd28f60d6936bb5d056fe021393
4
+ data.tar.gz: 1398be4dbab1473a82289a47f4cb2b172cb42486
5
5
  SHA512:
6
- metadata.gz: 8d5e5f3cc2db2153a5f4426e7c57318530c4ec39037b6542dedbc784db983035726476c1c16eb36af922d3f3bf61746bcaa81cf18090430a88bb2a492dfc0a76
7
- data.tar.gz: 9db2ceb0cf1b97cbff10f1abfec18318d96d71727f4c58aa15ce1ec7519ed1947b4b69e0cc54e59bf38008351eaa54083dd082130b1bed61eff8e17833445703
6
+ metadata.gz: 2ad2cd3ec765ce4b26f1afa5f4a0c8891e7e12398e8c01186cc3fe544e9966b4ad65039b5a3ddd6ce8b71801b197f1fef1efef1df140ddb45f5fb993ea2160a2
7
+ data.tar.gz: 4f2eaf16e55f9b1ba6442e8611a642723d15d882d679500d0b4cac74f3920e238047f89fb63c759803549f90577af92c2a86a1af4e1d9c8c5a41c059bb7d5f2a
@@ -1,20 +1,20 @@
1
- #nasldoc
1
+ # nasldoc
2
2
 
3
- #Installation
3
+ ### Installation
4
4
 
5
5
  Installation is really easy, all you need to do is gem install!
6
6
 
7
- % gem install nasldoc
7
+ % gem install nasldoc
8
8
 
9
- #Usage
9
+ #### Usage
10
10
 
11
11
  Using `nasldoc` is fairly simple; just pass it a directory or a single file that you want to generate the documentation for. `nasldoc` is designed to only parse .inc files which special comment markup.
12
12
 
13
- % nasldoc /opt/nessus/lib/nessus/plugins/
13
+ % nasldoc /opt/nessus/lib/nessus/plugins/
14
14
 
15
15
  This will cause a directory called `nasldoc/` to be created in your current directory. This directory will contain all of the generated HTML documents. After running `nasldoc`, open `index.html` inside of `nasldoc/` and view the documentation.
16
16
 
17
- #Comment Markup
17
+ #### Comment Markup
18
18
 
19
19
  `nasldoc` comments are inclosed in ## blocks and use special tags to mark items. Currently, there are only 3 tags. Tags can be added in a matter of minutes to the parser.
20
20
 
@@ -28,48 +28,67 @@ nasldoc supports several markup tags:
28
28
  - @category - type of category for the function
29
29
  - @remark - special notes or remarks
30
30
 
31
- #Function Description Block
31
+ ### Function Description Block
32
32
 
33
33
  The function description block is free form text from the first ## block to the first @tag in the `nasldoc` body. The lines are split on the # and rejoined with spaces.
34
34
 
35
- #Example
36
-
37
- ##
38
- # An example addition function in NASL
39
- #
40
- # @param arg1 first number to add
41
- # @param arg2 second number to add
42
- #
43
- # @return the sum of arg1 and arg2
44
- ##
45
- function add(arg1, arg2)
46
- {
47
- return (arg1 + arg2);
48
- }
49
-
50
- #Templates
35
+ Example:
36
+
37
+ ##
38
+ # An example addition function in NASL
39
+ #
40
+ # @param arg1 first number to add
41
+ # @param arg2 second number to add
42
+ #
43
+ # @return the sum of arg1 and arg2
44
+ ##
45
+ function add(arg1, arg2)
46
+ {
47
+ return (arg1 + arg2);
48
+ }
49
+
50
+ ### Variable types
51
+
52
+ If you'd like, you can provide variable type descriptions. The syntax is as follows:
53
+
54
+ ##
55
+ # An example addition function in NASL
56
+ #
57
+ # @param <arg1:int> first number to add
58
+ # @param [arg2:int] second number to add
59
+ #
60
+ # @return the sum of arg1 and arg2
61
+ ##
62
+ function add(arg1, arg2)
63
+ {
64
+ return (arg1 + arg2);
65
+ }
66
+
67
+ You can wrap the name:type tuple using either '[]' or '<>'.
68
+
69
+ ### Templates
51
70
 
52
71
  `nasldoc` uses the ERB templating engine to make generating the output HTML trivial. Attached is an example of the sidebar; ruby code can be injected to help generate the layout.
53
72
 
54
- ##Example
55
-
56
- <html>
57
- <head>
58
- <title>nasldoc</title>
59
- <link rel = 'stylesheet' type= 'text/css' href='stylesheet.css'>
60
- </head>
61
- <body>
62
- <img src='nessus.jpg' />
63
- <br><br><br>
64
- <ul>
65
- <% @file_list.each_with_index do |file, i| %>
66
- <% row_class = i % 2 == 0 ? "even" : "odd" %>
67
- <% output_file = file.gsub(".", "_") %>
68
- <% output_file = File.basename(file).gsub(".", "_") %>
69
- <li class="<%= row_class %>"><a href='<%= output_file %>.html' target='content'><%= File.basename(file) %></a></li>
70
- <% end %>
71
- </ul>
72
- <br><br><br>
73
- <ul><a href='overview.html' target='content'>Home</a></ul>
74
- </body>
75
- </html>
73
+ Example:
74
+
75
+ <html>
76
+ <head>
77
+ <title>nasldoc</title>
78
+ <link rel = 'stylesheet' type= 'text/css' href='stylesheet.css'>
79
+ </head>
80
+ <body>
81
+ <img src='nessus.jpg' />
82
+ <br><br><br>
83
+ <ul>
84
+ <% @file_list.each_with_index do |file, i| %>
85
+ <% row_class = i % 2 == 0 ? "even" : "odd" %>
86
+ <% output_file = file.gsub(".", "_") %>
87
+ <% output_file = File.basename(file).gsub(".", "_") %>
88
+ <li class="<%= row_class %>"><a href='<%= output_file %>.html' target='content'><%= File.basename(file) %></a></li>
89
+ <% end %>
90
+ </ul>
91
+ <br><br><br>
92
+ <ul><a href='overview.html' target='content'>Home</a></ul>
93
+ </body>
94
+ </html>
@@ -26,7 +26,7 @@
26
26
 
27
27
  module NaslDoc
28
28
  APP_NAME = "nasldoc"
29
- VERSION = "0.4.1"
29
+ VERSION = "0.4.2"
30
30
  end
31
31
 
32
32
  require 'erb'
@@ -7,7 +7,8 @@
7
7
  var constants = 'FALSE NULL TRUE';
8
8
 
9
9
  var keywords = 'break continue else export for foreach function global_var if ' +
10
- 'import include local_var repeat return until while';
10
+ 'import include local_var repeat return until while namespace object ' +
11
+ 'var public private case switch default do';
11
12
 
12
13
  this.regexList = [
13
14
  { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comment' },
@@ -43,7 +43,7 @@ module NaslDoc
43
43
  @error_count = 0
44
44
  @options = Hash.new
45
45
 
46
- @options[:output_directory] = "nasldoc_ouput/"
46
+ @options[:output_directory] = "nasldoc_output/"
47
47
 
48
48
  @functions = Array.new
49
49
  @globals = Array.new
@@ -253,29 +253,25 @@ module NaslDoc
253
253
  def remove_blacklist file_list
254
254
  blacklist = [
255
255
  "apple_device_model_list.inc",
256
- "blacklist_dss.inc",
257
- "blacklist_rsa.inc",
258
- "blacklist_ssl_rsa1024.inc",
259
- "blacklist_ssl_rsa2048.inc",
256
+ "blacklist_",
260
257
  "custom_CA.inc",
261
- "daily_badip.inc",
262
- "daily_badip2.inc",
258
+ "daily_badip",
263
259
  "daily_badurl.inc",
264
260
  "known_CA.inc",
265
261
  "oui.inc",
266
262
  "oval-definitions-schematron.inc",
267
- "ovaldi32-rhel5.inc",
268
- "ovaldi32-win-dyn-v100.inc",
269
- "ovaldi32-win-dyn-v90.inc",
270
- "ovaldi32-win-static.inc",
271
- "ovaldi64-rhel5.inc",
272
- "ovaldi64-win-dyn-v100.inc",
273
- "ovaldi64-win-dyn-v90.inc",
274
- "ovaldi64-win-static.inc",
275
263
  "plugin_feed_info.inc",
276
264
  "sc_families.inc",
277
265
  "scap_schema.inc",
278
- "ssl_known_cert.inc"
266
+ "ssl_known_cert.inc",
267
+ "ssh_get_info2",
268
+ "torture_cgi",
269
+ "daily_badip3.inc",
270
+ "cisco_ios.inc",
271
+ "ovaldi32",
272
+ "ovaldi64",
273
+ "os_cves.inc",
274
+ "kernel_cves.inc"
279
275
  ]
280
276
 
281
277
  new_file_list = file_list.dup
@@ -52,8 +52,8 @@ module NaslDoc
52
52
  attr_accessor :description, :summary
53
53
 
54
54
  # Tag attributes.
55
- attr_accessor :anonparams, :categories, :deprecated, :includes, :nessus
56
- attr_accessor :params, :remarks, :return
55
+ attr_accessor :anonparams, :anonparams_type, :categories, :deprecated, :includes, :nessus
56
+ attr_accessor :params, :params_type, :remarks, :return
57
57
 
58
58
  # Export and function attributes.
59
59
  attr_accessor :function
@@ -87,11 +87,13 @@ module NaslDoc
87
87
 
88
88
  # Create tag attributes.
89
89
  @anonparams = {}
90
+ @anonparams_type = {}
90
91
  @categories = []
91
92
  @deprecated = nil
92
93
  @includes = []
93
94
  @nessus = nil
94
95
  @params = {}
96
+ @params_type = {}
95
97
  @remarks = []
96
98
  @return = nil
97
99
 
@@ -193,7 +195,7 @@ module NaslDoc
193
195
  end
194
196
 
195
197
  def parse_tags(text)
196
- re_name = Regexp.new("[_a-zA-Z][_a-zA-Z0-9]*")
198
+ re_name = Regexp.new("(<|\\[)?[_a-zA-Z0-9:]*(\\]|>)?")
197
199
  re_tags = Regexp.new(tags_regex)
198
200
 
199
201
  # Tags start a line which continues until the next tag or blank line.
@@ -232,17 +234,29 @@ module NaslDoc
232
234
  case tag
233
235
  when '@anonparam', '@param'
234
236
  # Parse the argument name.
235
- name = block[re_name]
236
- if name.nil?
237
+ parts_str = block[re_name]
238
+ if parts_str.nil?
237
239
  raise TagFormatException, "Failed to parse the #{tag}'s name for #@name."
238
240
  end
239
241
 
240
- block = block[name.length..-1]
242
+ parts = parts_str.split(':')
243
+
244
+ name = parts[0]
245
+ name = name.gsub(/[\[\]<>]/, '')
246
+
247
+ block = block[parts_str.length..-1]
248
+
241
249
  if block.nil?
242
250
  raise TagFormatException, "Failed to parse the #{tag}'s block for #@name."
243
251
  end
252
+
244
253
  block.lstrip!
245
- block = block.gsub(/^.*>/, "")
254
+
255
+ type = nil
256
+ if(parts.length > 1)
257
+ type = parts[1]
258
+ type = type.gsub(/[\[\]<>]/, '')
259
+ end
246
260
 
247
261
  # Check for previous declarations of this name.
248
262
  if @anonparams.key?(name)
@@ -252,10 +266,14 @@ module NaslDoc
252
266
  if @params.key?(name) and not @params[name].nil?
253
267
  raise DuplicateTagException, "The param '#{name}' was previously declared as a @param for #@name."
254
268
  end
255
-
256
269
  hash = self.send(attr + 's')
257
270
  hash[name] = block
258
-
271
+
272
+ if(!type.nil?)
273
+ hash1 = self.send(attr + 's_type')
274
+ hash1[name] = type
275
+ end
276
+
259
277
  when '@category'
260
278
  unless @categories.empty?
261
279
  raise DuplicateTagException, "The #{tag} tag appears more than once for #@name."
@@ -14,7 +14,6 @@
14
14
  @comments.select(&filter1).select(&filter2).shift
15
15
  end
16
16
  %>
17
-
18
17
  <%
19
18
  def safe(obj, default, *attrs)
20
19
  attrs.each do |attr|
@@ -344,7 +343,8 @@
344
343
  <h3>Anonymous Parameters</h3>
345
344
  <dl>
346
345
  <% comm.anonparams.sort.each do |name, block| %>
347
- <dt><%= name %></dt>
346
+ <dt><%= name %><% unless !comm.anonparams_type.has_key?(name) %><font color="#d14"> (<%= comm.anonparams_type[name] %>)</font>
347
+ <% end %></dt>
348
348
  <dd><%= block %></dd>
349
349
  <% end %>
350
350
  </dl>
@@ -356,7 +356,9 @@
356
356
  <dl>
357
357
 
358
358
  <% @functions[name][:params].sort.each do |param| %>
359
- <dt><%= param.name %></dt>
359
+ <dt><%= param.name %>
360
+ <% unless comm.nil? || !comm.params_type.has_key?(param.name) %><font color="#d14"> (<%= comm.params_type[param.name] %>)</font>
361
+ <% end %></dt>
360
362
  <% unless comm.nil? || !comm.params.has_key?(param.name) %>
361
363
  <dd><%= comm.params[param.name] %></dd>
362
364
  <% end %>
@@ -371,11 +373,11 @@
371
373
 
372
374
  <h3>Code</h3>
373
375
  <!-- The contents must not have indentation, else formatting is off. -->
374
- <pre class="brush: nasl">
376
+ <script type="syntaxhighlighter" class="brush: nasl"><![CDATA[
375
377
  <% unless @functions[name][:code].nil? %>
376
- <%= CGI::escapeHTML(@functions[name][:code]) %>
378
+ <%= @functions[name][:code] %>
377
379
  <% end %>
378
- </pre>
380
+ ]]></script>
379
381
  <a href="#top">top</a>
380
382
  <hr>
381
383
  <% end %>
@@ -388,7 +390,7 @@
388
390
  <hr>
389
391
 
390
392
  <footer>
391
- <p>&copy; Tenable Network Security 2018</p>
393
+ <p>&copy; Tenable Network Security <%= Time.new.year %></p>
392
394
  </footer>
393
395
 
394
396
  </div><!--/.fluid-container-->
@@ -71,8 +71,9 @@
71
71
  <div class="span9">
72
72
  <div class="hero-unit">
73
73
  <h1>Welcome to nasldoc!</h1>
74
+ <h3> Generated <%= Time.now.inspect %></h3>
74
75
  <p>Select a file to view the docs!</p>
75
- <p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p>
76
+ <p><a class="btn btn-primary btn-large" href="https://github.com/tenable/nasldoc">Learn more &raquo;</a></p>
76
77
  </div>
77
78
  <div class="row-fluid">
78
79
  </div><!--/row-->
@@ -82,7 +83,7 @@
82
83
  <hr>
83
84
 
84
85
  <footer>
85
- <p>&copy; Tenable Network Security 2018</p>
86
+ <p>&copy; Tenable Network Security <%= Time.new.year %></p>
86
87
  </footer>
87
88
 
88
89
  </div><!--/.fluid-container-->
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nasldoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Hammack
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-06-06 00:00:00.000000000 Z
13
+ date: 2018-06-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake