=begin Arachni Copyright (c) 2010-2011 Tasos "Zapotek" Laskos <tasos.laskos@gmail.com> This is free software; you can copy and distribute and modify this program under the term of the GPL v2.0 License (See LICENSE file for details) =end require 'base64' module Arachni module Reports module Buffer require 'cgi' def append( str ) __add( str, true ) end def simple_tag( tag, text, no_escape = false ) start_tag( tag ) __add( text, no_escape ) end_tag( tag ) end def start_tag( tag ) __buffer( "\n<#{tag}>" ) end def end_tag( tag ) __buffer( "</#{tag}>\n" ) end def add_cookie( name, value ) __buffer( "<cookie name=\"#{name}\" value=\"#{value}\" />" ) end def add_credentials( username, password ) __buffer( "<credentials username=\"#{username}\" password=\"#{password}\" />" ) end def add_reference( name, url ) __buffer( "<reference name=\"#{name}\" url=\"#{url}\" />" ) end def add_param( name, value ) __buffer( "<param name=\"#{name}\" value=\"#{value}\" />" ) end def add_mod( name ) __buffer( "<module name=\"#{name}\" />" ) end def add_headers( type, headers ) start_tag( type ) headers.each_pair { |name, value| __buffer( "<field name=\"#{name}\" value=\"#{CGI.escapeHTML( value.strip )}\" />" ) } end_tag( type ) end def add_tags( tags ) start_tag( 'tags' ) tags.each { |name| __buffer( "<tag name=\"#{name}\" />" ) } end_tag( 'tags' ) end def buffer return @__buffer end def __buffer( str = '' ) @__buffer ||= '' @__buffer += str end def __add( text, no_escape = false ) if !no_escape __buffer( CGI.escapeHTML( text ) ) else __buffer( text ) end end end end end