risu 1.5.3 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/Gemfile.ci +1 -0
  2. data/LICENSE +1 -1
  3. data/NEWS.markdown +80 -3
  4. data/README.markdown +9 -8
  5. data/Rakefile +7 -7
  6. data/bin/risu +1 -1
  7. data/lib/risu.rb +6 -3
  8. data/lib/risu/base.rb +2 -1
  9. data/lib/risu/base/schema.rb +8 -4
  10. data/lib/risu/base/template_base.rb +3 -1
  11. data/lib/risu/base/template_helper.rb +115 -0
  12. data/lib/risu/base/template_manager.rb +1 -1
  13. data/lib/risu/base/templater.rb +3 -4
  14. data/lib/risu/cli.rb +1 -1
  15. data/lib/risu/cli/application.rb +3 -10
  16. data/lib/risu/cli/banner.rb +1 -1
  17. data/lib/risu/exceptions.rb +1 -1
  18. data/lib/risu/exceptions/invaliddocument.rb +1 -1
  19. data/lib/risu/models.rb +1 -1
  20. data/lib/risu/models/familyselection.rb +1 -1
  21. data/lib/risu/models/host.rb +92 -9
  22. data/lib/risu/models/individualpluginselection.rb +1 -1
  23. data/lib/risu/models/item.rb +47 -13
  24. data/lib/risu/models/patch.rb +1 -1
  25. data/lib/risu/models/plugin.rb +9 -1
  26. data/lib/risu/models/pluginspreference.rb +1 -1
  27. data/lib/risu/models/policy.rb +1 -1
  28. data/lib/risu/models/reference.rb +69 -9
  29. data/lib/risu/models/report.rb +1 -1
  30. data/lib/risu/models/serverpreference.rb +1 -1
  31. data/lib/risu/models/servicedescription.rb +1 -1
  32. data/lib/risu/models/version.rb +1 -1
  33. data/lib/risu/parsers.rb +1 -1
  34. data/lib/risu/parsers/nessus/nessus_document.rb +1 -1
  35. data/lib/risu/parsers/nessus/nessus_sax_listener.rb +69 -50
  36. data/lib/risu/parsers/nexpose/nexpose_document.rb +2 -5
  37. data/lib/risu/parsers/nexpose/simple_nexpose.rb +1 -1
  38. data/lib/risu/renderers.rb +1 -1
  39. data/lib/risu/renderers/nilrenderer.rb +1 -1
  40. data/lib/risu/templates/assets.rb +17 -29
  41. data/lib/risu/templates/cover_sheet.rb +40 -44
  42. data/lib/risu/templates/exec_summary.rb +11 -20
  43. data/lib/risu/templates/{executive_summary.rb → executive_summary_detailed.rb} +2 -11
  44. data/lib/risu/templates/finding_statistics.rb +1 -1
  45. data/lib/risu/templates/findings_host.rb +1 -1
  46. data/lib/risu/templates/findings_summary.rb +25 -86
  47. data/lib/risu/templates/findings_summary_with_pluginid.rb +1 -1
  48. data/lib/risu/templates/graphs.rb +1 -1
  49. data/lib/risu/templates/host_summary.rb +18 -14
  50. data/lib/risu/templates/ms_patch_summary.rb +17 -24
  51. data/lib/risu/templates/ms_update_summary.rb +1 -1
  52. data/lib/risu/templates/ms_wsus_findings.rb +1 -1
  53. data/lib/risu/templates/notable.rb +10 -14
  54. data/lib/risu/templates/notable_detailed.rb +43 -54
  55. data/lib/risu/templates/pci_compliance.rb +28 -34
  56. data/lib/risu/templates/stig_findings_summary.rb +25 -38
  57. data/lib/risu/templates/technical_findings.rb +46 -55
  58. data/lib/risu/templates/template.rb +4 -3
  59. data/risu.gemspec +12 -11
  60. metadata +79 -61
data/Gemfile.ci CHANGED
@@ -11,3 +11,4 @@ gem "mysql2"
11
11
  gem "rmagick"
12
12
  gem "sqlite3"
13
13
  gem "simplecov"
14
+ gem "nokogiri"
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2012 Arxopia LLC.
1
+ Copyright (c) 2010-2013 Arxopia LLC.
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -1,5 +1,82 @@
1
1
  # News
2
2
 
3
+ # 1.6 (2013)
4
+ ***Official support for Ruby versions less than 1.9.3 has been dropped due to Rails 4***
5
+
6
+ - Changed all copyright to Arxopia LLC. instead of myself for legal protection, **Nothing changes** the project will always be open source and free (as in cost)
7
+ - Fixed several missing requires for Sqlite3 and Rails
8
+ - Default template font size is now 10pt
9
+ - Added TemplateHelper mixin for templates to use. The goal is to abstract Prawn in-line code out of the templates over the next few releases to allow for dynamic output to different formats.Currently it adds the following methods to each template it is included in:
10
+ - report_title(title, newline=false) #font size 24 + bold + center
11
+ - report_subtitle(title, newline=false) #font size 18 + bold + center
12
+ - report_author(author, newline=false) #font size 24 + bold + center
13
+ - report_classification(classification=Report.classification.upcase, newline=true)
14
+ - report_text(text, options={})
15
+ - heading1 #font size 24 + bold
16
+ - heading2 #font size 18 + bold
17
+ - heading3 #font size 14 + bold
18
+ - heading4 #font size 12 + bold
19
+ - heading5 #font size 10 + bold
20
+ - heading6 #font size 8 + bold
21
+ - Models
22
+ - Reference Model
23
+ - Added methods
24
+ - reference_string #Returns a full string of all the references
25
+ - reference_string_by(type) #Returns a string of all the references by type, Where type is the output of a Reference.type(ex. Reference.cve)
26
+ - Host Model
27
+ - Added methods
28
+ - ip_list #Generates a list of hosts from the database, returns a string \n delimited
29
+ - unsupported_os? #Checks to see if there was any unsupported OS in the scan
30
+ - os_windows_8
31
+ - not_os_windows_8
32
+ - os_windows_2k12
33
+ - not_is_windows_2k12
34
+ - Changed the wording `other_os_graph_text` to indicate that its just a percentage of the non windows computers
35
+ - Added 'bios_uuid' Property
36
+ - Reference Model
37
+ - Added cert-cc,
38
+ - Added apple-sa
39
+ - Added icsa
40
+ - Added msvr
41
+ - Plugin Model
42
+ - cvss_base_score is now a float in the schema, this change should be transparent
43
+ - When assigning to it, the value is converted to a float and when retrieving it, it is converted to a string.
44
+ - Item Model
45
+ - Added methods
46
+ - medium_risks_by_host
47
+ - low_risks_by_host
48
+ - plugin
49
+ - Rewrote the notable_order_by_cvss_raw
50
+ - Schema Changes
51
+ - Added owner and visibility to the Policy Table
52
+ - Added traceroute_hop_0-2 to the Host Properties
53
+ - Templates
54
+ - notable
55
+ - cleaned up and updated to use the TemplateHelper mixin
56
+ - notable_detailed
57
+ - cleaned up and updated to use the TemplateHelper mixin
58
+ - the new reference helpers
59
+ - host names are now show with ip addresses
60
+ - technical_findings
61
+ - cleaned up and updated to use the TemplateHelper mixin
62
+ - new reference helpers
63
+ - also fixed a bug with a trailing blank page
64
+ - host names are now show with ip addresses
65
+ - findings_summary
66
+ - cleaned up and updated to use the TemplateHelper mixin
67
+ - simplified the repeated code
68
+ - ms_patch_summary
69
+ - cleaned up and updated to use the TemplateHelper mixin
70
+ - pci_compliance
71
+ - cleaned up and updated to use the TemplateHelper mixin
72
+ - template
73
+ - cleaned up and updated to use the TemplateHelper mixin
74
+ - Wiki Pages
75
+ - New page for installing on [Fedora](https://github.com/arxopia/risu/wiki/Fedora-Installation-Guide)
76
+ - New page for installing on [CentOS](https://github.com/arxopia/risu/wiki/CentOS-Installation-Guide)
77
+ - New page for installing on [Gentoo](https://github.com/arxopia/risu/wiki/Gentoo-Installation-Guide)
78
+ - New page for installing on [ArchLinux](https://github.com/arxopia/risu/wiki/Arch-Linux-Install-Guide)
79
+
3
80
  #1.5.3 (August 29, 2012)
4
81
  - New Parsed Tags
5
82
  - cm_compliance_info
@@ -137,14 +214,14 @@
137
214
  - Fixed a bug on the exec_summary_detailed detailed report
138
215
  - A quick reference for Microsoft findings can now be found in the Patch model,
139
216
  You are able to get host_id, name(patch name, ie MS01-001), value (plugin_id)
140
- - Please report any missing tags that risu outputs to jacob[dot]hammackj[@]hammackj[.]com, I expect a ton of Microsoft Patch tags missing
217
+ - Please report any missing tags that risu outputs to risu[@]arxopia[.]com, I expect a ton of Microsoft Patch tags missing
141
218
 
142
219
  #1.4.8 (August 21, 2011)
143
220
  - Fixed a gemspec dependency error reported by mlpotgieter
144
221
  - Fixed a parser error related to Microsoft Bulletins report by stevelodin
145
222
  - Added a Table for all host related patches, currently only has Microsoft Bulletins
146
223
  You can access it via `Host.first.patches` or `Patch.all`
147
- - Please report any missing tags that risu outputs to jacob[dot]hammackj[@]hammackj[.]com, I expect a ton of Microsoft Patch tags missing
224
+ - Please report any missing tags that risu outputs to risu[@]arxopia[.]com, I expect a ton of Microsoft Patch tags missing
148
225
 
149
226
  #1.4.7 (August 13, 2011)
150
227
  - Fixed issue #39 Ruby 1.8.7 Syntax error reported by mlpotgieter
@@ -177,7 +254,7 @@ You can access it via `Host.first.patches` or `Patch.all`
177
254
 
178
255
  #1.4.3 (May 23, 2011)
179
256
 
180
- **This is the last release under the NessusDB name, I received a legal notice to change the name. They gave me a few weeks to change the name but I do not have a new name yet. If you have any suggestions please submit them to jacob.hammack[@]hammackj.com**
257
+ **This is the last release under the NessusDB name, I received a legal notice to change the name. They gave me a few weeks to change the name but I do not have a new name yet. If you have any suggestions please submit them to risu[@]arxopia[.]com**
181
258
 
182
259
  - Fixed small bug in Windows/Other OS graphs
183
260
  - Increased the verboseness of Error messages Ticket #29
@@ -2,12 +2,12 @@
2
2
 
3
3
  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.
4
4
 
5
- Version **1.5.3** is the current release.
5
+ Version **1.6.0** is the current release.
6
6
 
7
7
  ## Requirements
8
8
 
9
9
  ### Ruby
10
- Risu has been tested with ruby-1.8.7-p334, ruby-1.9.2-p180, ruby-1.9.3-p125. Please try to use one of these versions if possible. I recommend using RVM to setup your ruby environment you can get it [here](https://rvm.beginrescueend.com/).
10
+ Risu has been tested with ruby-1.9.3-p392 and ruby-2.0.0-p0. Please try to use one of these versions if possible. I recommend using RVM to setup your ruby environment you can get it [here](https://rvm.beginrescueend.com/).
11
11
 
12
12
  ### RubyGems
13
13
  Risu relies heavily on [RubyGems](http://rubygems.org/) to install other dependencies I highly recommend using it. RubyGems is included by default in the 1.9.x versions of [Ruby](http://ruby-lang.org/).
@@ -20,12 +20,13 @@ Risu relies heavily on [RubyGems](http://rubygems.org/) to install other depende
20
20
  - gruff
21
21
  - prawn
22
22
  - mysql2
23
+ - nokogiri
23
24
 
24
25
  ## Developmental Requirements
25
26
 
26
27
  These are all available through [RubyGems](http://rubygems.org/). The should be installed automatically when you install risu, If not this command will install them all:
27
28
 
28
- % gem install rmagick gruff prawn yard mysql2 libxml-ruby rails sqlite3 logger yaml
29
+ % gem install rmagick gruff prawn yard mysql2 libxml-ruby rails sqlite3 logger yaml nokogiri
29
30
 
30
31
  **You my need sudo/root access depending on your system setup**
31
32
 
@@ -74,9 +75,9 @@ Using the risu Console is just like using Rails. You can access all of the Activ
74
75
  |_| |_|___/\__,_|
75
76
 
76
77
 
77
- risu Console v1.5.3
78
+ risu Console v1.6.0
78
79
  >> Host.first
79
- => #<Risu::Models::Host id: 1, report_id: 1, name: "10.69.69.74", os: "Linux Kernel 2.6 on Debian 4.0 (etch)", mac: "XX:XX:XX:XX:XX:XX", start: "2011-04-20 16:29:37", end: "2011-04-20 16:32:14", ip: "10.69.69.74", fqdn: "redada.hammackj.net", netbios: "REDADA", local_checks_proto: nil, smb_login_used: nil, ssh_auth_meth: nil, ssh_login_used: nil, pci_dss_compliance: nil, notes: nil>
80
+ => #<Risu::Models::Host id: 1, report_id: 1, name: "10.69.69.74", os: "Linux Kernel 2.6 on Debian 4.0 (etch)", mac: "XX:XX:XX:XX:XX:XX", start: "2011-04-20 16:29:37", end: "2011-04-20 16:32:14", ip: "10.69.69.74", fqdn: "redada.arxopia.net", netbios: "REDADA", local_checks_proto: nil, smb_login_used: nil, ssh_auth_meth: nil, ssh_login_used: nil, pci_dss_compliance: nil, notes: nil>
80
81
 
81
82
  ## Templates
82
83
  Several templates are included:
@@ -107,12 +108,12 @@ Several templates are included:
107
108
  The templates are written in ruby using [prawn](http://prawn.majesticseacreature.com/), they are fairly easy to make. I will add any templates as requested. See the 'template' example for creating your own template.
108
109
 
109
110
  # Contributing
110
- If you would like to contribute templates/bug fixes/etc to risu. The easiest way is to fork the project on [github](http://github.com/hammackj/risu) and make the changes in your fork and the submit a pull request to the project.
111
+ If you would like to contribute templates/bug fixes/etc to risu. The easiest way is to fork the project on [github](http://github.com/arxopia/risu) and make the changes in your fork and the submit a pull request to the project.
111
112
 
112
113
  # Issues
113
- If you have any problems, bugs or feature requests please use the [github issue tracker](http://github.com/hammackj/risu/issues).
114
+ If you have any problems, bugs or feature requests please use the [github issue tracker](http://github.com/arxopia/risu/issues).
114
115
 
115
116
  # Contact
116
- You can reach me at jacob[dot]hammack[at]hammackj[dot]com.
117
+ You can reach me at risu[at]arxopia[dot]com.
117
118
 
118
119
  You can also contact me on IRC as hammackj on irc.freenode.net, #risu
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2012 Arxopia LLC.
1
+ # Copyright (c) 2010-2013 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -32,7 +32,7 @@ require 'rake'
32
32
  require 'rake/testtask'
33
33
 
34
34
  task :build do
35
- system "gem build #{Risu::APP_NAME}.gemspec"
35
+ system "gem build #{Risu::APP_NAME}.gemspec"
36
36
  end
37
37
 
38
38
  task :tag_and_bag do
@@ -41,8 +41,8 @@ task :tag_and_bag do
41
41
  end
42
42
 
43
43
  task :release => [:tag_and_bag, :build] do
44
- system "gem push #{Risu::APP_NAME}-#{Risu::VERSION}.gem"
45
- puts "Just released #{Risu::APP_NAME} v#{Risu::VERSION}. #{Risu::APP_NAME} is an Nessus XML parser/database. More information at http://hammackj.com/projects/risu/"
44
+ system "gem push #{Risu::APP_NAME}-#{Risu::VERSION}.gem"
45
+ puts "Just released #{Risu::APP_NAME} v#{Risu::VERSION}. #{Risu::APP_NAME} is an Nessus XML parser/database. More information at http://arxopia.com/projects/risu/"
46
46
  end
47
47
 
48
48
  task :clean do
@@ -65,13 +65,13 @@ end
65
65
 
66
66
  Rake::TestTask.new("run_tests") do |t|
67
67
  t.libs << "test"
68
- t.pattern = 'test/*/*_test.rb'
69
- t.verbose = true
68
+ t.pattern = 'test/*/*_test.rb'
69
+ t.verbose = true
70
70
  end
71
71
 
72
72
  task :merge do
73
73
  system "git checkout master"
74
- system "get merge #{Risu::VERSION}"
74
+ system "git merge #{Risu::VERSION}"
75
75
  system "git push"
76
76
  end
77
77
 
data/bin/risu CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # Copyright (c) 2010-2012 Arxopia LLC.
3
+ # Copyright (c) 2010-2013 Arxopia LLC.
4
4
  # All rights reserved.
5
5
  #
6
6
  # Redistribution and use in source and binary forms, with or without
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2012 Arxopia LLC.
1
+ # Copyright (c) 2010-2013 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -26,13 +26,14 @@
26
26
 
27
27
  module Risu
28
28
  APP_NAME = "risu"
29
- VERSION = "1.5.3"
29
+ VERSION = "1.6.0"
30
30
  GRAPH_WIDTH = 750
31
- EMAIL = "jacob.hammack@hammackj.com"
31
+ EMAIL = "risu@arxopia.com"
32
32
  CONFIG_FILE = "./risu.cfg"
33
33
  USER_TEMPLATES_DIR = "~/.risu/templates/"
34
34
  end
35
35
 
36
+ require 'rails'
36
37
  require 'active_record'
37
38
  require "active_support"
38
39
  require 'libxml'
@@ -45,6 +46,8 @@ require 'prawn/layout'
45
46
  require 'stringio'
46
47
  require 'mysql2'
47
48
  require 'irb'
49
+ require 'sqlite3'
50
+ require 'nokogiri'
48
51
 
49
52
  require 'optparse'
50
53
 
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2012 Arxopia LLC.
1
+ # Copyright (c) 2010-2013 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -32,3 +32,4 @@ end
32
32
  require 'risu/base/template_base'
33
33
  require 'risu/base/template_manager'
34
34
  require 'risu/base/templater'
35
+ require 'risu/base/template_helper'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2012 Arxopia LLC.
1
+ # Copyright (c) 2010-2013 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -28,15 +28,15 @@ module Risu
28
28
  module Base
29
29
 
30
30
  # Risu database Schema
31
- #
32
31
  class Schema < ActiveRecord::Migration
33
32
 
34
33
  # Creates all of the database tables required by the parser
35
- #
36
34
  def self.up
37
35
  create_table :policies do |t|
38
36
  t.string :name
39
37
  t.string :comments
38
+ t.string :owner
39
+ t.string :visibility
40
40
  end
41
41
 
42
42
  create_table :server_preferences do |t|
@@ -101,6 +101,10 @@ module Risu
101
101
  t.string :pcidss_www_sql_injection
102
102
  t.string :pcidss_backup_files
103
103
  t.string :system_type
104
+ t.string :bios_uuid
105
+ t.string :traceroute_hop_0
106
+ t.string :traceroute_hop_1
107
+ t.string :traceroute_hop_2
104
108
  t.text :notes
105
109
  end
106
110
 
@@ -133,7 +137,7 @@ module Risu
133
137
  t.datetime :plugin_modification_date
134
138
  t.datetime :vuln_publication_date
135
139
  t.string :cvss_vector
136
- t.string :cvss_base_score
140
+ t.float :cvss_base_score
137
141
  t.string :cvss_temporal_score
138
142
  t.string :cvss_temporal_vector
139
143
  t.string :exploitability_ease
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2012 Arxopia LLC.
1
+ # Copyright (c) 2010-2013 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -30,6 +30,8 @@ module Risu
30
30
  # Base template class, all report templates must be a subclass of this.
31
31
  #
32
32
  class TemplateBase
33
+ attr_accessor :output
34
+
33
35
  @possible_templates = []
34
36
 
35
37
  class << self
@@ -0,0 +1,115 @@
1
+ # Copyright (c) 2012 Arxopia LLC.
2
+ # All rights reserved.
3
+ #
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
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 Arxopia LLC 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.
15
+ #
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 ARXOPIA LLC 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.
26
+
27
+ module Risu
28
+ module Templates
29
+ module TemplateHelper
30
+
31
+ #
32
+ def report_classification classification=Report.classification.upcase, newline=true
33
+ @output.font_size(12) do
34
+ @output.text classification, :align => :center
35
+ @output.text "\n" if newline
36
+ end
37
+ end
38
+
39
+ #
40
+ def report_title title, newline=false
41
+ @output.font_size(24) do
42
+ @output.text title, :align => :center
43
+ @output.text "\n" if newline
44
+ end
45
+ end
46
+
47
+ #
48
+ def report_subtitle title, newline=false
49
+ @output.font_size(18) do
50
+ @output.text title, :align => :center
51
+ @output.text "\n" if newline
52
+ end
53
+ end
54
+
55
+ #
56
+ def report_author author, newline=false
57
+ @output.font_size(14) do
58
+ @output.text author, :align => :center
59
+ @output.text "\n" if newline
60
+ end
61
+ end
62
+
63
+ #
64
+ def text(text, options = {})
65
+ if text == nil
66
+ text = ""
67
+ end
68
+
69
+ @output.text text, options
70
+ end
71
+
72
+ #
73
+ def heading1 title
74
+ @output.font_size(24) do
75
+ @output.text title, :style => :bold
76
+ end
77
+ end
78
+
79
+ #
80
+ def heading2 title
81
+ @output.font_size(18) do
82
+ @output.text title, :style => :bold
83
+ end
84
+ end
85
+
86
+ #
87
+ def heading3 title
88
+ @output.font_size(14) do
89
+ @output.text title, :style => :bold
90
+ end
91
+ end
92
+
93
+ #
94
+ def heading4 title
95
+ @output.font_size(12) do
96
+ @output.text title, :style => :bold
97
+ end
98
+ end
99
+
100
+ #
101
+ def heading5 title
102
+ @output.font_size(10) do
103
+ @output.text title, :style => :bold
104
+ end
105
+ end
106
+
107
+ #
108
+ def heading6 title
109
+ @output.font_size(8) do
110
+ @output.text title, :style => :bold
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2012 Arxopia LLC.
1
+ # Copyright (c) 2010-2013 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without