Simplify deletion-related questions in msfdb
parent
f49acae86a
commit
0b37214123
47
msfdb
47
msfdb
|
@ -64,7 +64,8 @@ require 'msf/util/helper'
|
||||||
ws_env: ENV['RACK_ENV'] || 'production',
|
ws_env: ENV['RACK_ENV'] || 'production',
|
||||||
retry_max: 10,
|
retry_max: 10,
|
||||||
retry_delay: 5.0,
|
retry_delay: 5.0,
|
||||||
ws_user: nil
|
ws_user: nil,
|
||||||
|
delete_existing_data: nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,8 +208,7 @@ def init_db
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if File.exist?(@db_conf) &&
|
if File.exist?(@db_conf) && !@options[:delete_existing_data]
|
||||||
!ask_yn("Found database config at #{@db_conf}, do you want to overwrite it?")
|
|
||||||
if !load_db_config
|
if !load_db_config
|
||||||
puts "Failed to load existing database config. Please reinit and overwrite the file."
|
puts "Failed to load existing database config. Please reinit and overwrite the file."
|
||||||
return
|
return
|
||||||
|
@ -366,12 +366,12 @@ def delete_db
|
||||||
if Dir.exist?(@db)
|
if Dir.exist?(@db)
|
||||||
stop_db
|
stop_db
|
||||||
|
|
||||||
if ask_yn("Delete all data at #{@db}?")
|
if @options[:delete_existing_data]
|
||||||
puts "Deleting all data at #{@db}"
|
puts "Deleting all data at #{@db}"
|
||||||
FileUtils.rm_rf(@db)
|
FileUtils.rm_rf(@db)
|
||||||
end
|
end
|
||||||
|
|
||||||
if File.file?(@db_conf) && ask_yn("Delete database configuration at #{@db_conf}?")
|
if @options[:delete_existing_data]
|
||||||
File.delete(@db_conf)
|
File.delete(@db_conf)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -404,8 +404,7 @@ def init_web_service
|
||||||
@msf_ws_user = @options[:ws_user]
|
@msf_ws_user = @options[:ws_user]
|
||||||
end
|
end
|
||||||
|
|
||||||
if @options[:ssl] && ((!File.file?(@options[:ssl_key]) || !File.file?(@options[:ssl_cert])) ||
|
if should_generate_web_service_ssl
|
||||||
(@options[:ssl_key] == @ws_ssl_key_default && @options[:ssl_cert] == @ws_ssl_cert_default))
|
|
||||||
generate_web_service_ssl(key: @options[:ssl_key], cert: @options[:ssl_cert])
|
generate_web_service_ssl(key: @options[:ssl_key], cert: @options[:ssl_cert])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -502,8 +501,7 @@ end
|
||||||
|
|
||||||
def generate_web_service_ssl(key:, cert:)
|
def generate_web_service_ssl(key:, cert:)
|
||||||
@ws_generated_ssl = true
|
@ws_generated_ssl = true
|
||||||
if (File.file?(key) || File.file?(cert)) &&
|
if (File.file?(key) || File.file?(cert)) && !@options[:delete_existing_data]
|
||||||
!ask_yn("Either MSF web service SSL key #{key} or certificate #{cert} already exist, overwrite both?")
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -889,6 +887,36 @@ def has_requirements
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def should_generate_web_service_ssl
|
||||||
|
@options[:ssl] && ((!File.file?(@options[:ssl_key]) || !File.file?(@options[:ssl_cert])) ||
|
||||||
|
(@options[:ssl_key] == @ws_ssl_key_default && @options[:ssl_cert] == @ws_ssl_cert_default))
|
||||||
|
end
|
||||||
|
|
||||||
|
def prompt_for_deletion(command)
|
||||||
|
destructive_operations = [:init, :reinit, :delete]
|
||||||
|
|
||||||
|
if destructive_operations.include? command
|
||||||
|
if command == :init
|
||||||
|
if (@options[:component] == :all || @options[:component] == :webservice) &&
|
||||||
|
should_generate_web_service_ssl && (File.file?(@options[:ssl_key]) || File.file?(@options[:ssl_cert]))
|
||||||
|
puts should_generate_web_service_ssl
|
||||||
|
@options[:delete_existing_data] = should_delete
|
||||||
|
return
|
||||||
|
elsif (@options[:component] == :all || @options[:component] == :database) && File.exist?(@db_conf)
|
||||||
|
@options[:delete_existing_data] = should_delete
|
||||||
|
return
|
||||||
|
end
|
||||||
|
else
|
||||||
|
@options[:delete_existing_data] = should_delete
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def should_delete
|
||||||
|
ask_yn("Would you like to delete your existing data and configurations?")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if $PROGRAM_NAME == __FILE__
|
if $PROGRAM_NAME == __FILE__
|
||||||
# Bomb out if we're root
|
# Bomb out if we're root
|
||||||
|
@ -926,6 +954,7 @@ if $PROGRAM_NAME == __FILE__
|
||||||
parse_args(ARGV)
|
parse_args(ARGV)
|
||||||
|
|
||||||
command = ARGV[0].to_sym
|
command = ARGV[0].to_sym
|
||||||
|
prompt_for_deletion(command)
|
||||||
if @options[:component] == :all
|
if @options[:component] == :all
|
||||||
@components.each { |component|
|
@components.each { |component|
|
||||||
invoke_command(commands, component.to_sym, command)
|
invoke_command(commands, component.to_sym, command)
|
||||||
|
|
Loading…
Reference in New Issue