class LogSimulator::Resolver
Public Class Methods
resolve_service(scan_time) { |found_targets| ... }
click to toggle source
# File lib/resolve.rb, line 54 def self.resolve_service(scan_time) browser = DNSSD::Service.new service_name = '_debugConnection._tcp' puts "Browsing for #{service_name}" found_targets = [] Thread.new do browser.browse service_name do |reply| Thread.new do Thread.exclusive do resolver = DNSSD::Service.new resolver.resolve reply do |r| found_targets<<Target.new(r.name,r.target,r.port) break unless r.flags.more_coming? end end end end end sleep scan_time found_targets.uniq! yield found_targets end
select_target(scan_time) { |target| ... }
click to toggle source
# File lib/resolve.rb, line 30 def self.select_target(scan_time) self.resolve_service(scan_time) do |found_targets| if found_targets.count <= 0 puts 'no possible target found!' elsif found_targets.count == 1 target = found_targets[0] yield target else puts 'Which one to connect?' found_targets.each_with_index do |target,index| puts "#{index+1}. #{target.name} - #{target.target_name}: #{target.port}" end puts 'Select: ' selection = gets.chomp.to_i - 1 while(selection < 0 || selection >= found_targets.count) puts "Select between #{0}-#{found_targets.count}" selection = gets.chomp.to_i - 1 end yield found_targets[selection] end end end