class Arachni::Data::Framework::RPC

Data for {Arachni::RPC::Server::Framework}.

@author Tasos “Zapotek” Laskos <tasos.laskos@arachni-scanner.com>

Attributes

distributed_page_queue[R]

@return [Support::Database::Queue]

Public Class Methods

load( directory ) click to toggle source
# File lib/arachni/data/framework/rpc.rb, line 49
def self.load( directory )
    rpc = new

    Dir["#{directory}/distributed_page_queue/*"].each do |page_file|
        rpc.distributed_page_queue.disk << page_file
    end

    rpc
end
new() click to toggle source
# File lib/arachni/data/framework/rpc.rb, line 21
def initialize
    @distributed_page_queue = Support::Database::Queue.new
end

Public Instance Methods

clear() click to toggle source
# File lib/arachni/data/framework/rpc.rb, line 59
def clear
    @distributed_page_queue.clear
end
dump( directory ) click to toggle source
# File lib/arachni/data/framework/rpc.rb, line 29
def dump( directory )
    FileUtils.mkdir_p( directory )

    page_queue_directory = "#{directory}/distributed_page_queue/"

    FileUtils.rm_rf( page_queue_directory )
    FileUtils.mkdir_p( page_queue_directory )

    distributed_page_queue.buffer.each do |page|
        IO.binwrite(
            "#{page_queue_directory}/#{page.persistent_hash}",
            distributed_page_queue.serialize( page )
        )
    end

    distributed_page_queue.disk.each do |filepath|
        FileUtils.cp filepath, "#{page_queue_directory}/"
    end
end
statistics() click to toggle source
# File lib/arachni/data/framework/rpc.rb, line 25
def statistics
    { distributed_page_queue: @distributed_page_queue.size }
end