Class: Wamupd::DNSIpController

Inherits:
Object
  • Object
show all
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

Methods included from Signals

#on

Constructor Details

#initializeDNSIpController

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

#publishObject

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_allObject

Synonym for publish



63
64
65
# File 'lib/wamupd/dns_ip_controller.rb', line 63

def publish_all
    publish
end

#unpublishObject

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_allObject

Synonym for unpublish



80
81
82
# File 'lib/wamupd/dns_ip_controller.rb', line 80

def unpublish_all
    unpublish
end

#update_leasesObject

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