Guest User

Untitled

a guest
Jan 16th, 2019
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. $: << File.dirname(__FILE__) + '/../lib'
  2. require 'em-whois'
  3. require 'atomic'
  4.  
  5. # Asynchronous, parallel multi-domain WHOIS lookup
  6. #domains = ARGV.empty? ? ["github.com", "google.com", "bing.com", "yahoo.com", "mikejarema.com"] : ARGV
  7. whois = {}
  8. domains = []
  9.  
  10. counter = 0
  11. File.open("domains_list", "r") do |infile|
  12. while (line = infile.gets)
  13. counter += 1
  14. domains.push(line)
  15. end
  16. end
  17.  
  18. EM.synchrony do
  19.  
  20. # Progress indicator
  21. EM.add_periodic_timer(0.1) do
  22. STDERR.print "."
  23. end
  24.  
  25. # Exit condition
  26. EM.add_periodic_timer(0.1) do
  27. if domains.size == whois.keys.size
  28. puts ""
  29. whois.each do |k,v|
  30. if v.properties[:available?]
  31. puts "#{k}: available"
  32. else
  33. puts "#{k}: taken, expires #{v.properties[:expires_on]}"
  34. end
  35. end
  36.  
  37. EM.stop
  38. end
  39. end
  40.  
  41. # Async WHOIS lookup - fire and forget via parallel fibers
  42. domains.each do |i|
  43. Fiber.new do
  44. #whois[i] = Whois.whois(i)
  45. c = Whois::Client.new()
  46. whois[i] = c.query(i)
  47. end.resume
  48. end
  49.  
  50. end
Add Comment
Please, Sign In to add comment