Class: Arachni::UI::CLI::RPC::Server::Dispatcher::OptionParser

Inherits:
OptionParser show all
Defined in:
ui/cli/rpc/server/dispatcher/option_parser.rb

Overview

Author:

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from OptionParser

#after_parse, #banner, #on, #options, #parse, #parser, #separator

Methods included from Utilities

#list_checks, #list_platforms, #list_plugins, #list_reporters, #load_profile, #print_banner, #print_issues, #save_profile

Methods included from Support::Mixins::Terminal

#clear_screen, #empty_screen, #flush, #move_to_home, #reprint, #reputs, #restr

Methods included from Arachni::Utilities

#available_port, available_port_mutex, #bytes_to_kilobytes, #bytes_to_megabytes, #caller_name, #caller_path, #cookie_decode, #cookie_encode, #cookies_from_file, #cookies_from_parser, #cookies_from_response, #exception_jail, #exclude_path?, #follow_protocol?, #form_decode, #form_encode, #forms_from_parser, #forms_from_response, #full_and_absolute_url?, #generate_token, #get_path, #hms_to_seconds, #html_decode, #html_encode, #include_path?, #links_from_parser, #links_from_response, #normalize_url, #page_from_response, #page_from_url, #parse_set_cookie, #path_in_domain?, #path_too_deep?, #port_available?, #rand_port, #random_seed, #redundant_path?, #regexp_array_match, #remove_constants, #request_parse_body, #seconds_to_hms, #skip_page?, #skip_path?, #skip_resource?, #skip_response?, #to_absolute, #uri_decode, #uri_encode, #uri_parse, #uri_parse_query, #uri_parser, #uri_rewrite

Methods included from Output

#caller_location, #debug?, #debug_level, #debug_level_1?, #debug_level_2?, #debug_level_3?, #debug_level_4?, #debug_off, #debug_on, #disable_only_positives, #error_buffer, #error_log_fd, #error_logfile, #has_error_log?, #included, #log_error, #mute, #muted?, #only_positives, #only_positives?, #print_bad, #print_debug, #print_debug_backtrace, #print_debug_exception, #print_debug_level_1, #print_debug_level_2, #print_debug_level_3, #print_debug_level_4, #print_error, #print_error_backtrace, #print_exception, #print_info, #print_line, #print_ok, #print_status, #print_verbose, #reroute_to_file, #reroute_to_file?, reset_output_options, #set_error_logfile, #unmute, #verbose?, #verbose_off, #verbose_on

Constructor Details

#initializeOptionParser

Returns a new instance of OptionParser.


23
24
25
26
27
28
29
30
31
32
33
34
35
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
136
137
138
139
140
141
142
143
144
145
146
# File 'ui/cli/rpc/server/dispatcher/option_parser.rb', line 23

def initialize
    super

    separator 'Server'

    on( '--address ADDRESS', 'Hostname or IP address to bind to.',
           "(Default: #{options.rpc.server_address})"
    ) do |address|
        options.rpc.server_address = address
    end

    on( '--external-address ADDRESS', 'Hostname or IP address to advertise.',
           "(Default: #{options.rpc.server_address})"
    ) do |address|
        options.dispatcher.external_address = address
    end

    on( '--port NUMBER', 'Port to listen to.', Integer,
           "(Default: #{options.rpc.server_port})"
    ) do |port|
        options.rpc.server_port = port
    end

    on( '--port-range BEGINNING-END',
           'Specify port range for the spawned RPC instances.',
           "(Default: #{options.dispatcher.instance_port_range.join( '-' )})"
    ) do |range|
        options.dispatcher.instance_port_range = range.split( '-' ).map(&:to_i)
    end

    on( '--pool-size SIZE', Integer,
           'How many Instances to have available at any given time.',
           "(Default: #{options.dispatcher.pool_size})"
    ) do |pool_size|
        options.dispatcher.pool_size = pool_size
    end

    separator ''
    separator 'Output'

    on( '--reroute-to-logfile',
           "Reroute all output to log-files under: #{options.paths.logs}"
    ) do
        options.output.reroute_to_logfile = true
    end

    on( '--verbose', 'Show verbose output.',
        "(Only applicable when '--reroute-to-logfile' is enabled.)"
    ) do
        verbose_on
    end

    on( '--debug [LEVEL 1-3]', Integer, 'Show debugging information.',
        "(Only applicable when '--reroute-to-logfile' is enabled.)"
    ) do |level|
        debug_on( level || 1 )
    end

    on( '--only-positives', 'Only output positive results.',
        "(Only applicable when '--reroute-to-logfile' is enabled.)"
    ) do
        only_positives
    end

    separator ''
    separator 'Grid'

    on( '--neighbour URL', 'URL of a neighbouring Dispatcher.' ) do |url|
        options.dispatcher.neighbour = url
    end

    on( '--weight FLOAT', Float, 'Weight of this node.' ) do |url|
        options.dispatcher.node_weight = url
    end

    on( '--pipe-id ID', 'Identifier for the attached bandwidth pipe.' ) do |id|
        options.dispatcher.node_pipe_id = id
    end

    on( '--nickname NAME', 'Nickname for this Dispatcher.' ) do |name|
        options.dispatcher.node_nickname = name
    end

    separator ''
    separator 'SSL'

    on( '--ssl-ca FILE',
           'Location of the CA certificate (.pem).'
    ) do |file|
        options.rpc.ssl_ca = file
    end

    on( '--server-ssl-private-key FILE',
           'Location of the server SSL private key (.pem).'
    ) do |file|
        options.rpc.server_ssl_private_key = file
    end

    on( '--server-ssl-certificate FILE',
           'Location of the server SSL certificate (.pem).'
    ) do |file|
        options.rpc.server_ssl_certificate = file
    end

    on( '--client-ssl-private-key FILE',
           'Location of the client SSL private key (.pem).'
    ) do |file|
        options.rpc.client_ssl_private_key = file
    end

    on( '--client-ssl-certificate FILE',
           'Location of the client SSL certificate (.pem).'
    ) do |file|
        options.rpc.client_ssl_certificate = file
    end

    separator ''
    separator 'Snapshot'

    on( '--snapshot-save-path DIRECTORY', String,
        'Directory under which to store snapshots of suspended scans.' ) do |path|
        options.snapshot.save_path = path
    end
end

Instance Attribute Details

#cliObject (readonly)

Returns the value of attribute cli


21
22
23
# File 'ui/cli/rpc/server/dispatcher/option_parser.rb', line 21

def cli
  @cli
end

Instance Method Details

#validateObject


148
149
150
# File 'ui/cli/rpc/server/dispatcher/option_parser.rb', line 148

def validate
    validate_snapshot_save_path
end

#validate_snapshot_save_pathObject


152
153
154
155
156
157
158
# File 'ui/cli/rpc/server/dispatcher/option_parser.rb', line 152

def validate_snapshot_save_path
    snapshot_path = options.snapshot.save_path
    return if !snapshot_path || File.directory?( snapshot_path )

    $stderr.puts "Snapshot directory does not exist: #{snapshot_path}"
    exit 1
end