summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/helpers.rb')
-rw-r--r--lib/helpers.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/helpers.rb b/lib/helpers.rb
new file mode 100644
index 0000000..34ed17f
--- /dev/null
+++ b/lib/helpers.rb
@@ -0,0 +1,62 @@
+require 'sanitize'
+require 'erb'
+require 'rss'
+
+COMP_MAP = {
+ '>=' => 'ge',
+ '>' => 'gt',
+ '=' => 'eq',
+ '<=' => 'le',
+ '<' => 'lt',
+ 'revision <' => 'rlt',
+ 'revision <=' => 'rle',
+ 'revision >' => 'rgt',
+ 'revision >=' => 'rge'
+}.freeze
+
+helpers do
+ def h(text)
+ Rack::Utils.escape_html(text)
+ end
+
+ def u(text)
+ ERB::Util::url_encode(text)
+ end
+
+ def h2(text)
+ Sanitize.clean(text, Sanitize::Config::BASIC)
+ end
+
+ def code2pre(text)
+ text.gsub('<code>', '<pre>').gsub('</code>', '</pre>').gsub(/ +/, ' ').chomp
+ end
+
+ # Returns the comparator in the format needed for the XML
+ def xml_comp(val)
+ COMP_MAP[val]
+ end
+
+ def reverse_xml_comp(val)
+ COMP_MAP.invert[val]
+ end
+
+ def feed(type, items)
+ RSS::Maker.make(type) do |maker|
+ maker.channel.author = "Gentoo Security Team"
+ maker.channel.about = "https://security.gentoo.org/glsa"
+ maker.channel.link = "https://security.gentoo.org/glsa"
+ maker.channel.description = "This feed contains new Gentoo Linux Security Advisories. Contact security@gentoo.org with questions."
+ maker.channel.title = "Gentoo Linux Security Advisories"
+ maker.channel.updated = Time.now.to_s
+
+ items.each do |input_item|
+ maker.items.new_item do |item|
+ item.link = BASE_URL + 'glsa/' + input_item.id
+ item.title = "GLSA %s: %s" % [input_item.id, input_item.title]
+ item.updated = Time.now.to_s
+ end
+ end
+ end.to_s
+ end
+
+end \ No newline at end of file