Class: Arachni::UI::Web::AddonManager

Inherits:
Object
  • Object
show all
Includes:
Utilities
Defined in:
lib/arachni/ui/web/addon_manager.rb

Overview

Add-on manager.

Author:

Version:

  • 0.1

Defined Under Namespace

Classes: Addon, RestrictedComponentManager

Instance Method Summary collapse

Methods included from Utilities

#escape, #escape_hash, #parse_datetime, #remove_proto, #unescape, #unescape_hash

Constructor Details

#initialize(opts, settings) ⇒ AddonManager

Returns a new instance of AddonManager.



179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# File 'lib/arachni/ui/web/addon_manager.rb', line 179

def initialize( opts, settings )
    @opts     = opts
    @settings = settings

    lib = @opts.dir['lib'] + 'ui/web/addons/'
    @@manager ||= RestrictedComponentManager.new( lib, Addons )

    @@running ||= {}

    DataMapper::setup( :default, "sqlite3://#{@settings.db}/default.db" )
    DataMapper.finalize

    Addon.auto_upgrade!

    run( enabled )
end

Instance Method Details

#availableArray

Gets all available add-ons.

Returns:



237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/arachni/ui/web/addon_manager.rb', line 237

def available
    @@available ||= populate_available

    @@available.each {
        |addon|

        if @@running[addon['filename']] && !@@running[addon['filename']].title.empty?
            addon['title'] = @@running[addon['filename']].title
        else
            addon['title'] = addon['name']
        end
    }

    return @@available
end

#by_name(name) ⇒ Hash

Gets add-on info by name.

Parameters:

Returns:

  • (Hash)


227
228
229
230
# File 'lib/arachni/ui/web/addon_manager.rb', line 227

def by_name( name )
    available.each { |addon| return addon if addon['filename'] == name }
    return nil
end

#enable!(addons) ⇒ Object

Enables and runs add-ons.

Parameters:

  • addons (Array)

    array holding the names of the addons



258
259
260
261
# File 'lib/arachni/ui/web/addon_manager.rb', line 258

def enable!( addons )
    Addon.all.destroy
    addons.each { |addon| Addon.create( :name => addon ); run( [addon] ) }
end

#enabledArray

Gets all enabled add-ons.

Returns:



268
269
270
# File 'lib/arachni/ui/web/addon_manager.rb', line 268

def enabled
    Addon.all.map { |addon| addon.name }
end

#run(addons) ⇒ Object

Runs addons.

Parameters:

  • addons (Array)

    array holding the names of the addons



201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/arachni/ui/web/addon_manager.rb', line 201

def run( addons )

    begin
        addons.each {
            |name|
            @@running[name] = @@manager[name].new( @settings, name )
            @@running[name].run
        }

    rescue ::Exception => e
        # ap e.to_s
        # ap e.backtrace
    end
end

#runningObject



216
217
218
# File 'lib/arachni/ui/web/addon_manager.rb', line 216

def running
    @@running
end