diff --git a/src/App/Container.purs b/src/App/Container.purs index 8bc6afc..3b4a56a 100644 --- a/src/App/Container.purs +++ b/src/App/Container.purs @@ -637,6 +637,9 @@ handleAction = case _ of m@(DNSManager.MkRRAdded response) -> do handleAction $ Log $ SuccessLog $ "Resource Record added: " <> response.rr.rrtype handleAction $ DispatchDNSMessage m + (DNSManager.MkGeneratedZoneFile response) -> do + handleAction $ Log $ SuccessLog $ "Received the generated zonefile for " <> response.domain + handleAction $ Log $ SuccessLog $ "TODO: show it, " <> response.zonefile (DNSManager.MkInvalidDomainName _) -> do handleAction $ Log $ ErrorLog $ "The domain is not valid!" m@(DNSManager.MkDomainDeleted response) -> do diff --git a/src/App/Messages/DNSManagerDaemon.purs b/src/App/Messages/DNSManagerDaemon.purs index 29aee8c..d710988 100644 --- a/src/App/Messages/DNSManagerDaemon.purs +++ b/src/App/Messages/DNSManagerDaemon.purs @@ -85,6 +85,11 @@ type DeleteRR = { domain :: String, rrid :: Int } codecDeleteRR ∷ CA.JsonCodec DeleteRR codecDeleteRR = CA.object "DeleteRR" (CAR.record { domain: CA.string, rrid: CA.int }) +{- 17 -} +type AskGeneratedZoneFile = { domain :: String } +codecAskGeneratedZoneFile ∷ CA.JsonCodec AskGeneratedZoneFile +codecAskGeneratedZoneFile = CA.object "AskGeneratedZoneFile" (CAR.record { domain: CA.string }) + {- 100 -} type GenerateAllZoneFiles = {} codecGenerateAllZoneFiles ∷ CA.JsonCodec GenerateAllZoneFiles @@ -220,11 +225,16 @@ type RRUpdated = { domain :: String, rr :: ResourceRecord.ResourceRecord } codecRRUpdated ∷ CA.JsonCodec RRUpdated codecRRUpdated = CA.object "RRUpdated" (CAR.record { domain: CA.string, rr: ResourceRecord.codec }) -{- 21 -} +{- 22 -} type RRReadOnly = { domain :: String, rr :: ResourceRecord.ResourceRecord } codecRRReadOnly ∷ CA.JsonCodec RRReadOnly codecRRReadOnly = CA.object "RRReadOnly" (CAR.record { domain: CA.string, rr: ResourceRecord.codec }) +{- 23 -} +type GeneratedZoneFile = { domain :: String, zonefile :: String } +codecGeneratedZoneFile ∷ CA.JsonCodec GeneratedZoneFile +codecGeneratedZoneFile = CA.object "GeneratedZoneFile" (CAR.record { domain: CA.string, zonefile: CA.string }) + {- 50 -} type UnknownUser = { } codecUnknownUser ∷ CA.JsonCodec UnknownUser @@ -258,6 +268,7 @@ data RequestMessage | MkAddRR AddRR -- 14 | MkUpdateRR UpdateRR -- 15 | MkDeleteRR DeleteRR -- 16 + | MkAskGeneratedZoneFile AskGeneratedZoneFile -- 17 | MkGenerateAllZoneFiles GenerateAllZoneFiles -- 100 | MkGenerateZoneFile GenerateZoneFile -- 101 | MkKeepAlive KeepAlive -- 250 @@ -287,6 +298,7 @@ data AnswerMessage | MkInvalidRR InvalidRR -- 20 | MkRRUpdated RRUpdated -- 21 | MkRRReadOnly RRReadOnly -- 22 + | MkGeneratedZoneFile GeneratedZoneFile -- 23 | MkUnknownUser UnknownUser -- 50 | MkNoOwnership NoOwnership -- 51 | MkInsufficientRights InsufficientRights -- 52 @@ -304,6 +316,7 @@ encode m = case m of (MkAddRR request) -> get_tuple 14 codecAddRR request (MkUpdateRR request) -> get_tuple 15 codecUpdateRR request (MkDeleteRR request) -> get_tuple 16 codecDeleteRR request + (MkAskGeneratedZoneFile request) -> get_tuple 17 codecAskGeneratedZoneFile request (MkGenerateAllZoneFiles request) -> get_tuple 100 codecGenerateAllZoneFiles request (MkGenerateZoneFile request) -> get_tuple 101 codecGenerateZoneFile request (MkKeepAlive request) -> get_tuple 250 codecKeepAlive request @@ -342,6 +355,7 @@ decode number string 20 -> error_management codecInvalidRR MkInvalidRR 21 -> error_management codecRRUpdated MkRRUpdated 22 -> error_management codecRRReadOnly MkRRReadOnly + 23 -> error_management codecGeneratedZoneFile MkGeneratedZoneFile 50 -> error_management codecUnknownUser MkUnknownUser 51 -> error_management codecNoOwnership MkNoOwnership 52 -> error_management codecInsufficientRights MkInsufficientRights