risu 1.7.4 → 1.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.markdown +35 -0
  3. data/README.markdown +1 -1
  4. data/lib/risu.rb +3 -3
  5. data/lib/risu/base/host_template_helper.rb +3 -2
  6. data/lib/risu/base/schema.rb +6 -0
  7. data/lib/risu/base/template_helper.rb +8 -7
  8. data/lib/risu/base/template_manager.rb +5 -4
  9. data/lib/risu/cli.rb +2 -2
  10. data/lib/risu/cli/application.rb +1 -3
  11. data/lib/risu/exceptions.rb +2 -2
  12. data/lib/risu/exceptions/invaliddocument.rb +2 -2
  13. data/lib/risu/models.rb +2 -2
  14. data/lib/risu/models/host.rb +7 -1
  15. data/lib/risu/models/item.rb +32 -15
  16. data/lib/risu/models/pluginspreference.rb +2 -2
  17. data/lib/risu/models/policy.rb +2 -2
  18. data/lib/risu/models/reference.rb +2 -2
  19. data/lib/risu/models/report.rb +2 -2
  20. data/lib/risu/models/serverpreference.rb +2 -2
  21. data/lib/risu/models/version.rb +2 -2
  22. data/lib/risu/parsers.rb +2 -2
  23. data/lib/risu/parsers/nessus/nessus_sax_listener.rb +5 -2
  24. data/lib/risu/parsers/nessus/postprocess/adobe_acrobat.rb +87 -0
  25. data/lib/risu/parsers/nessus/postprocess/adobe_air.rb +21 -3
  26. data/lib/risu/parsers/nessus/postprocess/adobe_reader.rb +10 -2
  27. data/lib/risu/parsers/nessus/postprocess/apache.rb +8 -4
  28. data/lib/risu/parsers/nessus/postprocess/apple_quicktime.rb +56 -0
  29. data/lib/risu/parsers/nessus/postprocess/blackberry_enterprise_server.rb +61 -0
  30. data/lib/risu/parsers/nessus/postprocess/db2.rb +4 -3
  31. data/lib/risu/parsers/nessus/postprocess/downgrade_plugins.rb +79 -0
  32. data/lib/risu/parsers/nessus/postprocess/filezilla.rb +53 -0
  33. data/lib/risu/parsers/nessus/postprocess/firefox.rb +83 -0
  34. data/lib/risu/parsers/nessus/postprocess/flash_player.rb +63 -41
  35. data/lib/risu/parsers/nessus/postprocess/flexnet.rb +2 -2
  36. data/lib/risu/parsers/nessus/postprocess/foxit_reader.rb +58 -0
  37. data/lib/risu/parsers/nessus/postprocess/google_chrome.rb +30 -3
  38. data/lib/risu/parsers/nessus/postprocess/hp_system_mgt_homepage.rb +12 -2
  39. data/lib/risu/parsers/nessus/postprocess/java.rb +24 -9
  40. data/lib/risu/parsers/nessus/postprocess/openssh.rb +6 -4
  41. data/lib/risu/parsers/nessus/postprocess/openssl.rb +33 -3
  42. data/lib/risu/parsers/nessus/postprocess/oracle_database.rb +2 -2
  43. data/lib/risu/parsers/nessus/postprocess/php.rb +47 -1
  44. data/lib/risu/parsers/nessus/postprocess/post_process.rb +2 -2
  45. data/lib/risu/parsers/nessus/postprocess/root_cause.rb +35 -1
  46. data/lib/risu/parsers/nessus/postprocess/shockwave.rb +1 -0
  47. data/lib/risu/parsers/nessus/postprocess/sigplus_pro.rb +55 -0
  48. data/lib/risu/parsers/nessus/postprocess/symantec_pcanywhere.rb +56 -0
  49. data/lib/risu/parsers/nessus/postprocess/vlc.rb +58 -0
  50. data/lib/risu/parsers/nessus/postprocess/vmware_esxi.rb +9 -2
  51. data/lib/risu/parsers/nessus/postprocess/vmware_player.rb +51 -0
  52. data/lib/risu/parsers/nessus/postprocess/vmware_vcenter.rb +62 -0
  53. data/lib/risu/parsers/nessus/postprocess/vmware_vsphere_client.rb +53 -0
  54. data/lib/risu/parsers/nessus/postprocess/windows.rb +688 -0
  55. data/lib/risu/parsers/nessus/postprocess/winscp.rb +57 -0
  56. data/lib/risu/parsers/nessus/postprocess/wireshark.rb +13 -1
  57. data/lib/risu/parsers/nexpose/nexpose_document.rb +2 -2
  58. data/lib/risu/parsers/nexpose/simple_nexpose.rb +2 -2
  59. data/lib/risu/renderers.rb +2 -2
  60. data/lib/risu/renderers/csvrenderer.rb +2 -2
  61. data/lib/risu/renderers/nilrenderer.rb +2 -2
  62. data/lib/risu/renderers/pdfrenderer.rb +2 -2
  63. data/lib/risu/templates/executive_summary_detailed.rb +2 -2
  64. data/lib/risu/templates/exploitablity_summary.rb +2 -2
  65. data/lib/risu/templates/finding_statistics.rb +2 -2
  66. data/lib/risu/templates/graphs.rb +2 -2
  67. data/lib/risu/templates/host_findings_csv.rb +3 -3
  68. data/lib/risu/templates/host_summary.rb +2 -2
  69. data/lib/risu/templates/ms_patch_summary.rb +2 -2
  70. data/lib/risu/templates/top_25.rb +2 -2
  71. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed1f7b219ebb25c728109b214d7b1f6f2b4aabd5
4
- data.tar.gz: 91e12a4dd836bbe7b9573c6d9b2f53f7f0fc3146
3
+ metadata.gz: f6936958320d0f5a66b83446740f767902c0a8aa
4
+ data.tar.gz: 037950d5f6ef7524e8062ae080d69d0c493c62ba
5
5
  SHA512:
6
- metadata.gz: 4452938f9fdbc00b1a692e9e7e771f51655a44b550a8a8145f6a71cd905f9cc8a1d40c7fda5d8d59a4ace8e3f5d371177bc7adadd619f6c49b360fbfb2bbfd8e
7
- data.tar.gz: 40cc53b89b40b5c855b9713e9f6371e5062d3ff819d6328e69f50e9b9e4fd5121012b9c4c82f966536303a67a112453cc8d0289ae12528fc0343b619b2fe76ed
6
+ metadata.gz: e166f6769fd4f88a96a494fab589c84e9900e88dd939fda23f21efd12c817d8bed1e6c8245ea5fb0536c668e2c74053b3348492a41dfb2f9f05de1931754541e
7
+ data.tar.gz: c7a5d992b4445cce24900e4f990e438d2debfe346ea57eed42b9cd7ac8555543de6c0da59b6e994c9b304819fe361134ef63f18609e6ca3f924b3f3e09557cbc
@@ -1,5 +1,40 @@
1
1
  # News
2
2
 
3
+ # 1.7.5 (November, 2015)
4
+ - Added initial test for HostProperties
5
+ - Added fixture for HostProperties testing
6
+ - Added VMware vCenter Post Processing
7
+ - Added VMware Player Post Processing
8
+ - Added WinSCP Post Processing
9
+ - Added non rounded risk % text methods
10
+ - Added SigPlus Pro post process
11
+ - Added epo HostProperty
12
+ - Updated Flash Player plugin list
13
+ - Updated Adobe Reader plugin list
14
+ - Updated Root Cause post processing
15
+ - Updated Windows Post Processing
16
+ - Updated Apache Post Processing
17
+ - Updated Java Post Processing
18
+ - Updated Item.notable_order_by_cvss_raw to pull in high findings if there are less than 10 critical findings
19
+ - Added new tags in_the_news, exploited_by_nessus, unsupported_by_vendor, default_account
20
+ - Downgraded FTP Privileged Port Bounce Scan to 0
21
+ - Added vSphere client post processing
22
+ - Added PCanywhere Post Processing
23
+ - Added Foxit Reader Post Processing
24
+ - Added Firefox Postprocessing
25
+ - Added VLC Post Processing
26
+ - Added a postprocess for downgrading plugins
27
+ - Added blackberry enterprise server Post Processing
28
+ - More support for windows 2003 unsupported
29
+ - Added DNS to the cvs output
30
+ - Added potentinal_vulnerability field
31
+ - Added support for unsupported windows 2003
32
+ - Test for potential_vunerability field
33
+ - Fixture for new field test
34
+ - Added docker container [jkordish]
35
+ - Added support for the agent field
36
+ - Added a default creds plugin
37
+
3
38
  # 1.7.4 (January 25, 2015)
4
39
  - Added New tags to the model Item
5
40
  - cm:compliance-reference
@@ -6,7 +6,7 @@
6
6
 
7
7
  Risu is [Nessus](http://www.nessus.org) parser, that converts the generated reports into a [ActiveRecord](http://api.rubyonrails.org/classes/ActiveRecord/Base.html) database, this allows for easy report generation and vulnerability verification.
8
8
 
9
- Version **1.7.2** is the current release.
9
+ Version **1.7.4** is the current release.
10
10
 
11
11
  ## Requirements
12
12
 
@@ -21,12 +21,12 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  APP_NAME = "risu"
29
- VERSION = "1.7.4"
29
+ VERSION = "1.7.5"
30
30
  GRAPH_WIDTH = 750
31
31
  # red orange yellow green blue purple grey pink
32
32
  GRAPH_COLORS = %w(#d2403f #ec9241 #fcc343 #50ad51 #397bbb #8E6B8E black #cccccc brown #e52d89)
@@ -67,9 +67,10 @@ module Risu
67
67
  unsupported_os("Unsupported Windows NT Installations", "Microsoft Windows NT 4.0 Unsupported Installation Detection")
68
68
  unsupported_os("Unsupported Windows 2000 Installations", "Microsoft Windows 2000 Unsupported Installation Detection")
69
69
  unsupported_os("Unsupported Windows XP Installations", "Microsoft Windows XP Unsupported Installation Detection")
70
+ unsupported_os("Unsupported Windows 2003 Installations", "Microsoft Windows Server 2003 Unsupported Installation Detection")
70
71
 
71
72
  text "\n"
72
- end
73
+ end
73
74
  end
74
75
  end
75
- end
76
+ end
@@ -151,6 +151,12 @@ module Risu
151
151
  t.integer :risk_score
152
152
  t.string :compliance
153
153
  t.string :root_cause
154
+ t.string :agent
155
+ t.boolean :potential_vulnerability
156
+ t.boolean :in_the_news
157
+ t.boolean :exploited_by_nessus
158
+ t.boolean :unsupported_by_vendor
159
+ t.boolean :default_account
154
160
  end
155
161
 
156
162
  create_table :individual_plugin_selections do |t|
@@ -69,7 +69,7 @@ module Risu
69
69
  if text == nil
70
70
  text = ""
71
71
  end
72
-
72
+
73
73
  @output.text text, options
74
74
  end
75
75
 
@@ -141,7 +141,7 @@ module Risu
141
141
  return Item.where(:plugin_id => Plugin.where(:plugin_name => plugin_name).first.id).count
142
142
  rescue => e
143
143
  return 0
144
- end
144
+ end
145
145
  end
146
146
 
147
147
  def item_count_by_plugin_id (plugin_id)
@@ -149,16 +149,17 @@ module Risu
149
149
  return Item.where(:plugin_id => plugin_id).count
150
150
  rescue => e
151
151
  return 0
152
- end
153
- end
152
+ end
153
+ end
154
154
 
155
155
  # @todo comment
156
156
  def default_credential_plugins
157
157
  [
158
- 10862, 25927, 32315, 65950, 39364, 33852, 11454, 51369,
159
- 26918, 76073, 24745, 11245, 23938, 46786, 46789,
158
+ 10862, 25927, 32315, 65950, 39364, 33852, 11454, 51369,
159
+ 26918, 76073, 24745, 11245, 23938, 46786, 46789, 10483,
160
+ 81375
160
161
  ].uniq
161
- end
162
+ end
162
163
 
163
164
  # @todo comment
164
165
  def has_default_credentials?
@@ -107,10 +107,11 @@ module Risu
107
107
  # Displays a list of all the templates to STDOUT
108
108
  def display_templates
109
109
  puts "Available Templates"
110
- @registered_templates.each do |x|
111
- p = x.new
112
- puts "\t#{p.template_info[:name]} - #{p.template_info[:description]}\n"
113
- end
110
+
111
+ @registered_templates.each do |x|
112
+ p = x.new
113
+ puts "\t#{p.template_info[:name]} - #{p.template_info[:description]}\n"
114
+ end
114
115
  end
115
116
  end
116
117
  end
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module CLI
@@ -377,9 +377,7 @@ module Risu
377
377
  end
378
378
 
379
379
  if @options[:test_connection] != nil
380
- result = test_connection?
381
-
382
- puts "#{result[1]}"
380
+ puts "#{test_connection?[1]}"
383
381
  exit
384
382
  end
385
383
 
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Exceptions
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Exceptions
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -622,12 +622,15 @@ module Risu
622
622
  win_nt_text = ""
623
623
  win_2000_text = ""
624
624
  win_xp_text = ""
625
+ win_2003_text = ""
626
+
625
627
  win_95 = Host.os_windows_95
626
628
  win_98 = Host.os_windows_98
627
629
  win_me = Host.os_windows_me
628
630
  win_nt = Plugin.where(:plugin_name => "Microsoft Windows NT 4.0 Unsupported Installation Detection")
629
631
  win_2000 = Plugin.where(:plugin_name => "Microsoft Windows 2000 Unsupported Installation Detection")
630
632
  win_xp = Plugin.where(:plugin_name => "Microsoft Windows XP Unsupported Installation Detection")
633
+ win_2003 = Plugin.where(:plugin_name => "Microsoft Windows Server 2003 Unsupported Installation Detection")
631
634
 
632
635
  #Host.os_windows.not_os_windows_7.not_os_windows_2008.not_os_windows_vista.not_os_windows_2003.not_os_windows_xp
633
636
 
@@ -649,7 +652,10 @@ module Risu
649
652
  win_xp_text = "Windows XP is an unsupported operating system; Microsoft has stopped support as of April 2014. " +
650
653
  "Please see http://windows.microsoft.com/en-us/windows/products/lifecycle for more information.\n\n" if win_xp.count >= 1
651
654
 
652
- return "#{win_95_text}#{win_98_text}#{win_me_text}#{win_nt_text}#{win_2000_text}#{win_xp_text}"
655
+ win_2003_text = "Windows 2003 is an unsupported operating system; Microsoft has stopped support as of July 2015. " +
656
+ "Please see http://windows.microsoft.com/en-us/windows/products/lifecycle for more information.\n\n" if win_2003.count >= 1
657
+
658
+ return "#{win_95_text}#{win_98_text}#{win_me_text}#{win_nt_text}#{win_2000_text}#{win_xp_text}#{win_2003_text}"
653
659
  end
654
660
 
655
661
  # @todo comments
@@ -330,29 +330,29 @@ module Risu
330
330
  #
331
331
  # @return [FixNum] Percentage of vulnerable hosts
332
332
  def calculate_vulnerable_host_percent
333
- #patch to fix double counting
333
+ #patch to fix double counting
334
334
  #unique_hosts_with_critical_and_high = Host.unique_hosts_with_critical.count + Host.unique_hosts_with_high.count
335
335
  unique_hosts_with_critical_and_high = Host.unique_hosts_with_critical_and_high_count
336
336
  host_percent = (unique_hosts_with_critical_and_high.to_f / Host.count.to_f) * 100
337
337
  end
338
338
 
339
- #
339
+ # @todo w t f
340
340
  def calculate_vulnerable_host_percent_with_patches_applied
341
341
 
342
342
  exclude_list = []
343
343
  hosts = []
344
344
 
345
- Item.notable_order_by_cvss_raw.each do |h, k|
346
- exclude_list << h
347
- end
345
+ risks = Item.top_10_sorted_raw[0..9]
348
346
 
349
- criticals = Item.critical_risks.where.not(:plugin_id => exclude_list)
347
+ risks.each do |risk|
348
+ exclude_list << risk[0]
349
+ end
350
350
 
351
- criticals.each do |item|
351
+ Item.critical_risks.where.not(:plugin_id => exclude_list).each do |item|
352
352
  hosts << item.host_id
353
353
  end
354
354
 
355
- Item.high_risks.each do |item|
355
+ Item.high_risks.where.not(:plugin_id => exclude_list).each do |item|
356
356
  hosts << item.host_id
357
357
  end
358
358
 
@@ -383,7 +383,7 @@ module Risu
383
383
  # Builds a sentence based on the risk_percent to describe the risk
384
384
  #
385
385
  # @param risk_percent Calculated percentage of risk based on {Item::calculate_vulnerable_host_percent}
386
- #
386
+ #
387
387
  # @return [String] Sentence describing the implied significance of the risk_percent
388
388
  def risk_text risk_percent
389
389
  percent_text = case risk_percent
@@ -445,7 +445,15 @@ module Risu
445
445
 
446
446
  def risk_percent_patched_rounded_text
447
447
  "#{calculate_vulnerable_host_percent_with_patches_applied().round}%"
448
- end
448
+ end
449
+
450
+ def risk_percent_text
451
+ "%.2f%" % calculate_vulnerable_host_percent()
452
+ end
453
+
454
+ def risk_percent_patched_text
455
+ "%.2f%" % calculate_vulnerable_host_percent_with_patches_applied()
456
+ end
449
457
 
450
458
  #
451
459
  # @todo comment
@@ -455,11 +463,20 @@ module Risu
455
463
  #MIGHT NOT BE CORRECT @TODO
456
464
 
457
465
  #return Item.joins(:plugin).where(:severity => 4).order("plugins.cvss_base_score").count(:all, :group => :plugin_id)
458
- return Item.joins(:plugin).where(:severity => 4).order("plugins.cvss_base_score").group(:plugin_id).distinct.count
466
+ #return Item.joins(:plugin).where(:severity => 4).order("plugins.cvss_base_score").group(:plugin_id).distinct.count
467
+
468
+ critical = Item.joins(:plugin).where(:severity => 4).order("plugins.cvss_base_score").group(:plugin_id).distinct.count
469
+
470
+ if critical.size < 10
471
+ high = Item.joins(:plugin).where(:severity => 3).order("plugins.cvss_base_score").group(:plugin_id).distinct.count
472
+ critical = critical.merge high
473
+ end
474
+
475
+ return critical
459
476
  end
460
477
 
461
478
  # Scrubs a plugin_name to remove all pointless data
462
- #
479
+ #
463
480
  # @return [String] Scrubbed plugin name
464
481
  def scrub_plugin_name (name)
465
482
  return name.gsub("(remote check)", "").gsub("(uncredentialed check)", "").gsub(/(\(\d.*\))/, "")
@@ -467,7 +484,7 @@ module Risu
467
484
 
468
485
  # Returns an array of plugin_id and plugin_name for the top 10
469
486
  # findings unsorted
470
- #
487
+ #
471
488
  # @return [Array] Unsorted top 10 findings
472
489
  def top_10_sorted_raw
473
490
  raw = notable_order_by_cvss_raw
@@ -493,7 +510,7 @@ module Risu
493
510
 
494
511
  # Returns an array of plugin_id and plugin_name for the top 10
495
512
  # findings sorted by CVSS score
496
- #
513
+ #
497
514
  # @return [Array] Sorted top 10 findings
498
515
  def top_10_sorted
499
516
  raw = notable_order_by_cvss_raw
@@ -572,7 +589,7 @@ module Risu
572
589
  results.push [name, total, core, metasploit, canvas, exploithub, d2elliot]
573
590
  end
574
591
 
575
- return results
592
+ return results
576
593
  end
577
594
  end
578
595
  end
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Models
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
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.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  module Risu
28
28
  module Parsers