Delegation: WIP.

This commit is contained in:
Philippe Pittoli 2025-07-11 15:30:03 +02:00
parent a448b68fcc
commit 09a97386a9
3 changed files with 43 additions and 0 deletions

View file

@ -0,0 +1,21 @@
class DNSManager::Request
IPC::JSON.message DelegateDomain, 25 do
property domain : String
property nameserver1 : String
property nameserver2 : String
def initialize(@domain, @nameserver1, @nameserver2)
end
def to_s(io : IO)
super io
io << " (domain: #{@domain}, ns1: #{@nameserver1}, ns2: #{@nameserver2}"
end
def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event) : IPC::JSON
user = dnsmanagerd.get_logged_user event
return Response::ErrorUserNotLogged.new unless user
dnsmanagerd.storage.delegate_domain user.uid, @domain, @nameserver1, @nameserver2
end
end
DNSManager.requests << DelegateDomain
end

View file

@ -204,4 +204,18 @@ class DNSManager::Response
end end
end end
DNSManager.responses << FoundDomains DNSManager.responses << FoundDomains
IPC::JSON.message DomainDelegated, 26 do
property domain : String
property nameserver1 : String
property nameserver2 : String
def initialize(@domain, @nameserver1, @nameserver2)
end
def to_s(io : IO)
super io
io << " (domain: #{@domain}, ns1: #{@nameserver1}, ns2: #{@nameserver2})"
end
end
DNSManager.responses << DomainDelegated
end end

View file

@ -433,6 +433,14 @@ class DNSManager::Storage
Response::Zone.new zone Response::Zone.new zone
end end
# TODO, FIXME: verifications + actually delegate the domain.
def delegate_domain(user_id : UserDataID, domain : String, nameserver1 : String, nameserver2 : String) : IPC::JSON
zone = zone_must_exist! domain
user_should_own! user_id, domain
Response::DomainDelegated.new domain, nameserver1, nameserver2
end
# Removes user data. # Removes user data.
def wipe_user_data(user_id : UserDataID) : Nil def wipe_user_data(user_id : UserDataID) : Nil
domains_by_owners.get(user_id.to_s).each do |domain| domains_by_owners.get(user_id.to_s).each do |domain|