module Msf

###
#
# This module allows a compatible exploit to be called once for every valid target,
# in succession, until no targets are left.
#
###
module Exploit::BruteTargets


# Compatible exploit modules define a method call exploit_target, which is called once
# for every target in the list. The very first target should always be a stub for enabling
# the brute force mode.

def exploit(*args)
	# Brute force through every available target
	if (not datastore['TARGET'] or datastore['TARGET'].to_i == 0)
		
		print_status("Brute forcing with #{(targets.length - 1).to_s} possible targets")
		
		targets.each_index do |i|
			next if i == 0
			break if session_created?
			print_status("Trying target #{targets[i].name}...")
			exploit_target(targets[i])
		end
	
	# Otherwise, only try the specified target
	else
		exploit_target(target())
	end

end



end
end
