Fix a bug introduced by delegation (upon domain deletion).

This commit is contained in:
Philippe Pittoli 2025-09-28 18:15:59 +02:00
parent e94bed139b
commit 9388663688

View file

@ -91,7 +91,7 @@ class DNSManager::Storage
# Instead of generating the file for each change (synchronously),
# it will be regenerated periodically by a script outside the application.
def delegation_token_file
"#{@delegationdir}/regen-token-file"
"#{@delegationdir}/.regen-token-file"
end
# Updates the token file.
@ -394,12 +394,16 @@ class DNSManager::Storage
def remove_delegation_file(domain : String) : Nil
Baguette::Log.info "(domain #{domain}) removing a delegation file."
File.delete "#{@delegationdir}/#{domain}"
rescue e : File::NotFoundError
Baguette::Log.info "(domain #{domain}) delegation file not found - ignoring."
end
# Removes a Bind9 zonefile.
def remove_bind9_zonefile(domain : String) : Nil
Baguette::Log.info "(domain #{domain}) removing a Bind9 zone file."
File.delete "#{@zonefiledir}/#{domain}"
rescue e : File::NotFoundError
Baguette::Log.info "(domain #{domain}) zone file not found - ignoring."
end
# Deletes a domain.
@ -545,12 +549,14 @@ class DNSManager::Storage
# WARNING: this function removes a zone with all its related data (zone file, delegation file, indexes, etc.).
#
# WARNING: this function doesn't check for ownership authorizations (could cause a chicken-egg problem when
# deleting a domain).
#
# RATIONALE: wipe_zone can be used to renew to remove zone-related content (the entry in the zone db, tokens
# and generated zone file) while preserving the entry in the domain db.
# wipe_zone is called when the domain is deleted or when it is delegated.
def wipe_zone(user_id : UserDataID, domain_name : String)
zone = zone_must_exist! domain_name
user_should_own! user_id, domain_name
Baguette::Log.info "Wiping zone content for #{domain_name}"
# Remove the related zone and their registered tokens.