Merge pull request #76 from kernelsmith/lab_tab_complete
lab_load now tab completes from data/lab (lab plugin), for real thounstable
commit
db90989db4
|
@ -60,7 +60,76 @@ class Plugin::Lab < Msf::Plugin
|
|||
|
||||
def cmd_lab_load(*args)
|
||||
return lab_usage unless args.count == 1
|
||||
@controller.from_file(args[0])
|
||||
|
||||
res = args[0]
|
||||
good_res = nil
|
||||
if (File.file? res and File.readable? res)
|
||||
# then the provided argument is an absolute path and is gtg.
|
||||
good_res = res
|
||||
elsif
|
||||
# let's check to see if it's in the data/lab dir (like when tab completed)
|
||||
[
|
||||
::Msf::Config.data_directory + File::SEPARATOR + "lab",
|
||||
# there isn't a user_data_directory, but could use:
|
||||
#::Msf::Config.user_plugins_directory + File::SEPARATOR + "lab"
|
||||
].each do |dir|
|
||||
res_path = dir + File::SEPARATOR + res
|
||||
if (File.file?(res_path) and File.readable?(res_path))
|
||||
good_res = res_path
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if good_res
|
||||
@controller.from_file(good_res)
|
||||
else
|
||||
print_error("#{res} is not a valid lab definition file (.yml)")
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
# Tab completion for the lab_load command
|
||||
#
|
||||
def cmd_lab_load_tabs(str, words)
|
||||
tabs = []
|
||||
#return tabs if words.length > 1
|
||||
if ( str and str =~ /^#{Regexp.escape(File::SEPARATOR)}/ )
|
||||
# then you are probably specifying a full path so let's just use normal file completion
|
||||
return tab_complete_filenames(str,words)
|
||||
elsif (not words[1] or not words[1].match(/^\//))
|
||||
# then let's start tab completion in the data/lab directory
|
||||
begin
|
||||
[
|
||||
::Msf::Config.data_directory + File::SEPARATOR + "lab",
|
||||
# there isn't a user_data_directory, but could use:
|
||||
#::Msf::Config.user_plugins_directory + File::SEPARATOR + "lab"
|
||||
].each do |dir|
|
||||
next if not ::File.exist? dir
|
||||
tabs += ::Dir.new(dir).find_all { |e|
|
||||
path = dir + File::SEPARATOR + e
|
||||
::File.file?(path) and File.readable?(path)
|
||||
}
|
||||
end
|
||||
rescue Exception
|
||||
end
|
||||
else
|
||||
tabs += tab_complete_filenames(str,words)
|
||||
end
|
||||
return tabs
|
||||
end
|
||||
|
||||
def cmd_lab_load_dir(*args)
|
||||
return lab_usage unless args.count == 2
|
||||
@controller.build_from_dir(args[0],args[1],true)
|
||||
end
|
||||
|
||||
def cmd_lab_clear(*args)
|
||||
@controller.clear!
|
||||
end
|
||||
|
||||
def cmd_lab_save(*args)
|
||||
return lab_usage if args.empty?
|
||||
@controller.to_file(args[0])
|
||||
end
|
||||
|
||||
def cmd_lab_load_running(*args)
|
||||
|
|
Loading…
Reference in New Issue