1
0
mirror of https://github.com/cmur2/dyndnsd.git synced 2025-06-26 02:30:22 +02:00

daemon: add host offlining by deleting the associated DNS records

This commit is contained in:
cn
2018-02-23 16:37:10 +01:00
parent 8d4e96a1dd
commit 147071da9e
5 changed files with 48 additions and 6 deletions

View File

@ -141,7 +141,11 @@ module Dyndnsd
hostnames.each do |hostname|
# myips order is always deterministic
if Helper.changed?(hostname, myips, @db['hosts'])
if myips.empty? && @db['hosts'].include?(hostname)
@db['hosts'].delete(hostname)
changes << :good
Metriks.meter('requests.good').mark
elsif Helper.changed?(hostname, myips, @db['hosts'])
@db['hosts'][hostname] = myips
changes << :good
Metriks.meter('requests.good').mark
@ -180,10 +184,13 @@ module Dyndnsd
forbidden_hostnames = hostnames - @users[user]['hosts']
return [422, {'X-DynDNS-Response' => 'host_forbidden'}, []] if forbidden_hostnames.any?
myips = extract_myips(env, params)
# require at least one IP to update
return [422, {'X-DynDNS-Response' => 'host_forbidden'}, []] if myips.empty?
if params['offline'] == 'YES'
myips = []
else
myips = extract_myips(env, params)
# require at least one IP to update
return [422, {'X-DynDNS-Response' => 'host_forbidden'}, []] if myips.empty?
end
Metriks.meter('requests.valid').mark
Dyndnsd.logger.info "Request to update #{hostnames} to #{myips} for user #{user}"

View File

@ -24,7 +24,7 @@ module Dyndnsd
def self.changed?(hostname, myips, hosts)
# myips order is always deterministic
(!hosts.include? hostname) || (hosts[hostname] != myips)
((!hosts.include? hostname) || (hosts[hostname] != myips)) && !myips.empty?
end
def self.span(operation, &block)