dns_worker.rb 676 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. require 'rubydns'
  2. require 'rubydns/system'
  3. class DnsWorker
  4. include Sidekiq::Worker
  5. sidekiq_options :retry => false, :backtrace => true
  6. def perform(domains=[])
  7. return false if domains.blank?
  8. resolver = RubyDNS::Resolver.new(RubyDNS::System::nameservers)
  9. dead = []
  10. alive = []
  11. EventMachine::run do
  12. domains.each do |domain|
  13. resolver.query(domain) do |response|
  14. if response.answer.blank?
  15. dead << domain
  16. else
  17. alive << domain
  18. end
  19. end
  20. end
  21. EventMachine::stop
  22. end
  23. results = {}
  24. results[:dead] = dead
  25. results[:alive] = alive
  26. results
  27. end
  28. end