class CloudFlare::DynamicDNS::Updater
Update DNS zone / domain information in cloudflare with the new IP address if it has changed.
Attributes
email[R]
hostname[R]
ip[R]
key[R]
zone[R]
Public Class Methods
new(key:, email:, zone:, hostname:, ipv4:)
click to toggle source
@param [String] key @param [String] email @param [String] zone @param [String] hostname @param [String] ipv4
# File lib/cloud_flare/dynamic_dns/updater.rb, line 14 def initialize(key:, email:, zone:, hostname:, ipv4:) @key = key @email = email @zone = zone @hostname = hostname @ip = ipv4 end
Public Instance Methods
update()
click to toggle source
Update Cloudflare with the new IP addr
# File lib/cloud_flare/dynamic_dns/updater.rb, line 23 def update current_config if changed? logger.info "=> updating #{dns_record.record[:name]} to #{ip}" dns_record.update_content(ip) else logger.info '=> No changes detected.' end end
Private Instance Methods
changed?()
click to toggle source
# File lib/cloud_flare/dynamic_dns/updater.rb, line 40 def changed? ip != dns_record.record[:content] end
connection()
click to toggle source
# File lib/cloud_flare/dynamic_dns/updater.rb, line 52 def connection @connection ||= Cloudflare.connect(key: key, email: email) end
current_config()
click to toggle source
# File lib/cloud_flare/dynamic_dns/updater.rb, line 35 def current_config logger.info "=> #{dns_record.record[:name]} currently pointing to -> #{dns_record.record[:content]}" logger.info "=> current public IP of your network is #{ip}." end
dns_record()
click to toggle source
# File lib/cloud_flare/dynamic_dns/updater.rb, line 44 def dns_record @dns_record ||= dns_zone.dns_records.find_by_name(hostname) end
dns_zone()
click to toggle source
# File lib/cloud_flare/dynamic_dns/updater.rb, line 48 def dns_zone @dns_zone ||= connection.zones.find_by_name(zone) end
logger()
click to toggle source
# File lib/cloud_flare/dynamic_dns/updater.rb, line 56 def logger Logger.new(STDOUT) end