require "ipc/json" require "grok" class DNSManager::Request IPC::JSON.message NewDomain, 9 do property domain : String def initialize(@domain) 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.new_domain user.uid, @domain end end DNSManager.requests << NewDomain IPC::JSON.message DeleteDomain, 10 do property domain : String def initialize(@domain) 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.delete_domain user.uid, @domain end end DNSManager.requests << DeleteDomain IPC::JSON.message AddOrUpdateZone, 11 do property zone : DNSManager::Storage::Zone def initialize(@zone) 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.add_or_update_zone user.uid, zone end end DNSManager.requests << AddOrUpdateZone IPC::JSON.message GetZone, 12 do property domain : String def initialize(@domain) 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.get_zone user.uid, @domain end end DNSManager.requests << GetZone IPC::JSON.message UserDomains, 13 do def initialize() end def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event) : IPC::JSON user = dnsmanagerd.get_logged_user event return Response::ErrorUserNotLogged.new unless user user_domain_names = dnsmanagerd.storage.user_domains(user.uid).map &.name Response::DomainList.new user_domain_names end end DNSManager.requests << UserDomains IPC::JSON.message AddRR, 14 do property domain : String property rr : DNSManager::Storage::Zone::ResourceRecord def initialize(@domain, @rr) 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.add_rr user.uid, @domain, @rr end end DNSManager.requests << AddRR IPC::JSON.message UpdateRR, 15 do property domain : String property rr : DNSManager::Storage::Zone::ResourceRecord def initialize(@domain, @rr) 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.update_rr user.uid, @domain, @rr end end DNSManager.requests << UpdateRR IPC::JSON.message DeleteRR, 16 do property domain : String property rrid : UInt32 def initialize(@domain, @rrid) 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.delete_rr user.uid, @domain, @rrid end end DNSManager.requests << DeleteRR IPC::JSON.message AskGeneratedZoneFile, 17 do property domain : String def initialize(@domain) 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.get_generated_zonefile user.uid, @domain end end DNSManager.requests << AskGeneratedZoneFile end