Class: Arachni::OptionGroups::Paths

Inherits:
Arachni::OptionGroup show all
Defined in:
lib/arachni/option_groups/paths.rb

Overview

Holds paths to the directories of various system components.

Author:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Arachni::OptionGroup

#==, attr_accessor, attributes, #attributes, #defaults, defaults, #hash, #merge, set_defaults, #to_h, #to_hash, #to_rpc_data, #update, #validate

Constructor Details

#initializePaths

Returns a new instance of Paths.


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/arachni/option_groups/paths.rb', line 36

def initialize
    @root       = root_path
    @gfx        = @root + 'gfx/'
    @components = @root + 'components/'

    if self.class.config['framework']['snapshots']
        @snapshots  = self.class.config['framework']['snapshots']
    else
        @snapshots  = @root + 'snapshots/'
    end

    if ENV['ARACHNI_FRAMEWORK_LOGDIR']
        @logs = "#{ENV['ARACHNI_FRAMEWORK_LOGDIR']}/"
    elsif self.class.config['framework']['logs']
        @logs = self.class.config['framework']['logs']
    else
        @logs = "#{@root}logs/"
    end

    @checks          = @components + 'checks/'
    @reporters       = @components + 'reporters/'
    @plugins         = @components + 'plugins/'
    @services        = @components + 'services/'
    @path_extractors = @components + 'path_extractors/'
    @fingerprinters  = @components + 'fingerprinters/'

    @lib = @root + 'lib/arachni/'

    @executables = @lib + 'processes/executables/'
    @support     = @lib + 'support/'
    @mixins      = @support + 'mixins/'
    @arachni     = @lib[0...-1]
end

Instance Attribute Details

#arachniObject

Returns the value of attribute arachni


20
21
22
# File 'lib/arachni/option_groups/paths.rb', line 20

def arachni
  @arachni
end

#checksObject

Returns the value of attribute checks


25
26
27
# File 'lib/arachni/option_groups/paths.rb', line 25

def checks
  @checks
end

#componentsObject

Returns the value of attribute components


22
23
24
# File 'lib/arachni/option_groups/paths.rb', line 22

def components
  @components
end

#executablesObject

Returns the value of attribute executables


24
25
26
# File 'lib/arachni/option_groups/paths.rb', line 24

def executables
  @executables
end

#fingerprintersObject

Returns the value of attribute fingerprinters


30
31
32
# File 'lib/arachni/option_groups/paths.rb', line 30

def fingerprinters
  @fingerprinters
end

#gfxObject

Returns the value of attribute gfx


21
22
23
# File 'lib/arachni/option_groups/paths.rb', line 21

def gfx
  @gfx
end

#libObject

Returns the value of attribute lib


31
32
33
# File 'lib/arachni/option_groups/paths.rb', line 31

def lib
  @lib
end

#logsObject

Returns the value of attribute logs


23
24
25
# File 'lib/arachni/option_groups/paths.rb', line 23

def logs
  @logs
end

#mixinsObject

Returns the value of attribute mixins


33
34
35
# File 'lib/arachni/option_groups/paths.rb', line 33

def mixins
  @mixins
end

#path_extractorsObject

Returns the value of attribute path_extractors


29
30
31
# File 'lib/arachni/option_groups/paths.rb', line 29

def path_extractors
  @path_extractors
end

#pluginsObject

Returns the value of attribute plugins


27
28
29
# File 'lib/arachni/option_groups/paths.rb', line 27

def plugins
  @plugins
end

#reportersObject

Returns the value of attribute reporters


26
27
28
# File 'lib/arachni/option_groups/paths.rb', line 26

def reporters
  @reporters
end

#rootObject

Returns the value of attribute root


19
20
21
# File 'lib/arachni/option_groups/paths.rb', line 19

def root
  @root
end

#servicesObject

Returns the value of attribute services


28
29
30
# File 'lib/arachni/option_groups/paths.rb', line 28

def services
  @services
end

#snapshotsObject

Returns the value of attribute snapshots


34
35
36
# File 'lib/arachni/option_groups/paths.rb', line 34

def snapshots
  @snapshots
end

#supportObject

Returns the value of attribute support


32
33
34
# File 'lib/arachni/option_groups/paths.rb', line 32

def support
  @support
end

Class Method Details

.clear_config_cacheObject


97
98
99
# File 'lib/arachni/option_groups/paths.rb', line 97

def self.clear_config_cache
    @config = nil
end

.configObject


101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/arachni/option_groups/paths.rb', line 101

def self.config
    return @config if @config

    if !File.exist?( paths_config_file )
        @config = {}
    else
        @config = YAML.load( IO.read( paths_config_file ) )
    end

    @config['framework'] ||= {}
    @config['cli']       ||= {}

    @config.dup.each do |category, config|
        config.dup.each do |subcat, dir|
            if dir.to_s.empty?
                @config[category].delete subcat
                next
            end

            dir = Arachni.get_long_win32_filename( dir )

            if !Arachni.windows?
                dir.gsub!( '~', ENV['HOME'] )
            end

            dir << '/' if !dir.end_with?( '/' )

            @config[category][subcat] = dir

            FileUtils.mkdir_p dir
        end
    end

    @config
end

.paths_config_fileObject


93
94
95
# File 'lib/arachni/option_groups/paths.rb', line 93

def self.paths_config_file
    Arachni.get_long_win32_filename "#{root_path}config/write_paths.yml"
end

.root_pathString

Returns Root path of the framework.

Returns:

  • (String)

    Root path of the framework.


75
76
77
# File 'lib/arachni/option_groups/paths.rb', line 75

def self.root_path
    File.expand_path( File.dirname( __FILE__ ) + '/../../..' ) + '/'
end

Instance Method Details

#configObject


89
90
91
# File 'lib/arachni/option_groups/paths.rb', line 89

def config
    self.class.config
end

#root_pathObject


70
71
72
# File 'lib/arachni/option_groups/paths.rb', line 70

def root_path
    self.class.root_path
end

#tmpdirObject


79
80
81
82
83
84
85
86
87
# File 'lib/arachni/option_groups/paths.rb', line 79

def tmpdir
    if config['framework']['tmpdir'].to_s.empty?
        # On MS Windows Dir.tmpdir can return the path with a shortname,
        # better avoid that as it can be insonsistent with other paths.
        Arachni.get_long_win32_filename( Dir.tmpdir )
    else
        Arachni.get_long_win32_filename( config['framework']['tmpdir'] )
    end
end