Class: Wamupd::DNSIpController
- Inherits:
-
Object
- Object
- Wamupd::DNSIpController
- Includes:
- Signals
- Defined in:
- lib/wamupd/dns_ip_controller.rb
Overview
Manage IP information in DNS
Signals
- :added
-
A record was published. Parameters are the type (A/AAAA) and the address
- :removed
-
A record was unpublished. Parameters are the type (A/AAAA) and the address
Instance Method Summary collapse
-
#initialize ⇒ DNSIpController
constructor
Constructor.
-
#publish ⇒ Object
Publish A and AAAA records.
-
#publish_all ⇒ Object
Synonym for publish.
-
#unpublish ⇒ Object
Unpublish A and AAAA records.
-
#unpublish_all ⇒ Object
Synonym for unpublish.
-
#update_leases ⇒ Object
Update leases when required.
Methods included from Signals
Constructor Details
#initialize ⇒ DNSIpController
Constructor
41 42 43 44 45 46 |
# File 'lib/wamupd/dns_ip_controller.rb', line 41 def initialize() @sa = MainSettings.instance @sa.get_ip_addresses @resolver = @sa.resolver @lease_queue = Containers::PriorityQueue.new end |
Instance Method Details
#publish ⇒ Object
Publish A and AAAA records
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/wamupd/dns_ip_controller.rb', line 49 def publish if (@sa.ipv4) DNSUpdate.publish(@sa.target, Dnsruby::Types.A, @sa.ttl, @sa.ipv4) signal(:added, Dnsruby::Types.A, @sa.ipv4) end if (@sa.ipv6) DNSUpdate.publish(@sa.target, Dnsruby::Types.AAAA, @sa.ttl, @sa.ipv6) signal(:added, Dnsruby::Types.AAAA, @sa.ipv6) end update_time = Time.now() + @sa.lease_time @lease_queue.push(Wamupd::LeaseUpdate.new(update_time, nil), update_time) end |
#publish_all ⇒ Object
Synonym for publish
63 64 65 |
# File 'lib/wamupd/dns_ip_controller.rb', line 63 def publish_all publish end |
#unpublish ⇒ Object
Unpublish A and AAAA records
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/wamupd/dns_ip_controller.rb', line 68 def unpublish if (@sa.ipv4) DNSUpdate.unpublish(@sa.target, Dnsruby::Types.A, @sa.ipv4) signal(:removed, Dnsruby::Types.A, @sa.ipv4) end if (@sa.ipv6) DNSUpdate.unpublish(@sa.target, Dnsruby::Types.AAAA, @sa.ipv6) signal(:removed, Dnsruby::Types.A, @sa.ipv6) end end |
#unpublish_all ⇒ Object
Synonym for unpublish
80 81 82 |
# File 'lib/wamupd/dns_ip_controller.rb', line 80 def unpublish_all unpublish end |
#update_leases ⇒ Object
Update leases when required. Please run in a separate thread.
85 86 87 88 89 90 91 92 93 |
# File 'lib/wamupd/dns_ip_controller.rb', line 85 def update_leases while true now = Time.now while (not @lease_queue.empty?) and (@lease_queue.next.date < now) publish end sleep(@sa.sleep_time) end end |