class Dnsign::ResolveUpdateLoop
Public Class Methods
new(domain, dns_service, ip_resolver, opts={})
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 12 def initialize(domain, dns_service, ip_resolver, opts={}) @domain = domain @ip_resolver = ip_resolver @dns_service = dns_service @timers = Timers::Group.new @verbose = opts[:verbose].nil? ? true : opts[:verbose] @interval = opts[:interval] || 300 end
Public Instance Methods
kickoff()
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 22 def kickoff if @interval > 0 @timer = @timers.every( @interval ) { update } loop { @timers.wait } end end
update()
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 29 def update real_ip = resolve_real_ip dns_ip = retrieve_dns_ip if real_ip != dns_ip update_dns_ip(real_ip) log "UPDATE: Public #{real_ip} differs from the resolved #{dns_ip}" true else log "SKIPPING: Public #{real_ip} matches with the resolved #{dns_ip}" false end end
Private Instance Methods
log(msg)
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 63 def log(msg) if @verbose == true puts ["[#{Time.now.utc}]", msg].join ' ' end end
resolve_real_ip()
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 45 def resolve_real_ip @ip_resolver.resolve rescue InvalidResponseFromIpResolver => e log e end
retrieve_dns_ip()
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 51 def retrieve_dns_ip @dns_service.retrieve_ip @domain rescue RecordDoesNotExists => e log e end
update_dns_ip(real_ip)
click to toggle source
# File lib/dnsign/resolve_update_loop.rb, line 57 def update_dns_ip(real_ip) @dns_service.update_ip @domain, real_ip rescue DomainDoesNotExists => e log e end