Delegation: WIP.
This commit is contained in:
parent
a448b68fcc
commit
09a97386a9
3 changed files with 43 additions and 0 deletions
21
src/requests/delegation.cr
Normal file
21
src/requests/delegation.cr
Normal 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
|
|
@ -204,4 +204,18 @@ class DNSManager::Response
|
|||
end
|
||||
end
|
||||
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
|
||||
|
|
|
@ -433,6 +433,14 @@ class DNSManager::Storage
|
|||
Response::Zone.new zone
|
||||
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.
|
||||
def wipe_user_data(user_id : UserDataID) : Nil
|
||||
domains_by_owners.get(user_id.to_s).each do |domain|
|
||||
|
|
Loading…
Add table
Reference in a new issue