Enable domain reset (to remove a delegation).
This commit is contained in:
parent
bd20767989
commit
49adaba0aa
4 changed files with 61 additions and 9 deletions
|
|
@ -601,6 +601,9 @@ act_on_page_event page_event = case page_event of
|
||||||
PageZone.AskSaveDelegation domain nameserver1 nameserver2 -> do
|
PageZone.AskSaveDelegation domain nameserver1 nameserver2 -> do
|
||||||
message <- H.liftEffect $ DNSManager.serialize $ DNSManager.MkDelegateDomain { domain, nameserver1, nameserver2 }
|
message <- H.liftEffect $ DNSManager.serialize $ DNSManager.MkDelegateDomain { domain, nameserver1, nameserver2 }
|
||||||
H.tell _ws_dns unit (WS.ToSend message)
|
H.tell _ws_dns unit (WS.ToSend message)
|
||||||
|
PageZone.AskResetDelegation domain -> do
|
||||||
|
message <- H.liftEffect $ DNSManager.serialize $ DNSManager.MkResetDelegation { domain }
|
||||||
|
H.tell _ws_dns unit (WS.ToSend message)
|
||||||
PageZone.AskAddRR domain rr -> do
|
PageZone.AskAddRR domain rr -> do
|
||||||
message <- H.liftEffect $ DNSManager.serialize $ DNSManager.MkAddRR { domain, rr }
|
message <- H.liftEffect $ DNSManager.serialize $ DNSManager.MkAddRR { domain, rr }
|
||||||
H.tell _ws_dns unit (WS.ToSend message)
|
H.tell _ws_dns unit (WS.ToSend message)
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ data Output
|
||||||
| AskDeleteRR String Int
|
| AskDeleteRR String Int
|
||||||
| AskSaveRR String RR.ResourceRecord
|
| AskSaveRR String RR.ResourceRecord
|
||||||
| AskSaveDelegation String String String
|
| AskSaveDelegation String String String
|
||||||
|
| AskResetDelegation String
|
||||||
| AskAddRR String RR.ResourceRecord
|
| AskAddRR String RR.ResourceRecord
|
||||||
| AskGetZone String
|
| AskGetZone String
|
||||||
|
|
||||||
|
|
@ -109,6 +110,9 @@ data Action
|
||||||
-- | Update Delegation modal.
|
-- | Update Delegation modal.
|
||||||
| UpdateDelegationModal Delegation
|
| UpdateDelegationModal Delegation
|
||||||
|
|
||||||
|
-- | Reset Delegation modal.
|
||||||
|
| DisplayResetDelegationModal
|
||||||
|
|
||||||
-- | Create modal (a form) for a resource record to update.
|
-- | Create modal (a form) for a resource record to update.
|
||||||
| CreateUpdateRRModal RR.RRId
|
| CreateUpdateRRModal RR.RRId
|
||||||
|
|
||||||
|
|
@ -133,6 +137,9 @@ data Action
|
||||||
-- | Save the delegation.
|
-- | Save the delegation.
|
||||||
| SaveDelegation
|
| SaveDelegation
|
||||||
|
|
||||||
|
-- | Reset the delegation.
|
||||||
|
| ResetDelegation
|
||||||
|
|
||||||
-- | Validate a new resource record before adding it.
|
-- | Validate a new resource record before adding it.
|
||||||
| ValidateRR RR.AcceptedRRTypes
|
| ValidateRR RR.AcceptedRRTypes
|
||||||
|
|
||||||
|
|
@ -255,12 +262,16 @@ render state
|
||||||
= Modal.delegation_modal state._domain state._delegation_form
|
= Modal.delegation_modal state._domain state._delegation_form
|
||||||
UpdateDelegationForm ValidateDelegation CancelModal
|
UpdateDelegationForm ValidateDelegation CancelModal
|
||||||
|
|
||||||
|
reset_delegation_modal
|
||||||
|
= Modal.reset_delegation_modal state._domain ResetDelegation CancelModal
|
||||||
|
|
||||||
render_zone =
|
render_zone =
|
||||||
case state.rr_modal of
|
case state.rr_modal of
|
||||||
RemoveRRModal rr_id -> Modal.modal_rr_delete rr_id RemoveRR CancelModal
|
RemoveRRModal rr_id -> Modal.modal_rr_delete rr_id RemoveRR CancelModal
|
||||||
NewRRModal _ -> call_to_current_rr_modal
|
NewRRModal _ -> call_to_current_rr_modal
|
||||||
UpdateRRModal -> call_to_current_rr_modal
|
UpdateRRModal -> call_to_current_rr_modal
|
||||||
DelegationModal -> delegation_modal
|
DelegationModal -> delegation_modal
|
||||||
|
ResetDelegationModal -> reset_delegation_modal
|
||||||
NoModal -> HH.div_ $
|
NoModal -> HH.div_ $
|
||||||
[ Web.level [ Web.btn_ [C.is_large, C.is_info] "Back to the domain list" ReturnToDomainList
|
[ Web.level [ Web.btn_ [C.is_large, C.is_info] "Back to the domain list" ReturnToDomainList
|
||||||
, Web.h1 state._domain
|
, Web.h1 state._domain
|
||||||
|
|
@ -277,6 +288,9 @@ render state
|
||||||
, Web.level [
|
, Web.level [
|
||||||
Web.btn "Edit the name servers" (UpdateDelegationModal delegation)
|
Web.btn "Edit the name servers" (UpdateDelegationModal delegation)
|
||||||
] []
|
] []
|
||||||
|
, Web.level [
|
||||||
|
Web.btn "Reset this domain, forget about delegation" DisplayResetDelegationModal
|
||||||
|
] []
|
||||||
]
|
]
|
||||||
render_zone_records _ =
|
render_zone_records _ =
|
||||||
[ Table.resource_records (sorted state._resources) CreateUpdateRRModal DeleteRRModal NewToken
|
[ Table.resource_records (sorted state._resources) CreateUpdateRRModal DeleteRRModal NewToken
|
||||||
|
|
@ -346,6 +360,10 @@ handleAction = case _ of
|
||||||
UpdateDelegationModal delegation -> do
|
UpdateDelegationModal delegation -> do
|
||||||
H.modify_ _ { rr_modal = DelegationModal, _delegation_form = Delegation.mkUpdateDelegationForm delegation }
|
H.modify_ _ { rr_modal = DelegationModal, _delegation_form = Delegation.mkUpdateDelegationForm delegation }
|
||||||
|
|
||||||
|
-- | Delegation modal presents a simple form with two entries (chosen nameservers).
|
||||||
|
DisplayResetDelegationModal -> do
|
||||||
|
H.modify_ _ { rr_modal = ResetDelegationModal }
|
||||||
|
|
||||||
-- | Initialize the Zone component: ask for the domain zone to `dnsmanagerd`.
|
-- | Initialize the Zone component: ask for the domain zone to `dnsmanagerd`.
|
||||||
Initialize -> do
|
Initialize -> do
|
||||||
{ _domain } <- H.get
|
{ _domain } <- H.get
|
||||||
|
|
@ -483,6 +501,13 @@ handleAction = case _ of
|
||||||
H.raise $ AskSaveDelegation state._domain df.nameserver1 df.nameserver2
|
H.raise $ AskSaveDelegation state._domain df.nameserver1 df.nameserver2
|
||||||
H.modify_ _ { rr_modal = NoModal }
|
H.modify_ _ { rr_modal = NoModal }
|
||||||
|
|
||||||
|
-- | Save the delegation of the domain.
|
||||||
|
ResetDelegation -> do
|
||||||
|
state <- H.get
|
||||||
|
H.raise $ Log $ SystemLog $ "Reset the delegation for domain '" <> state._domain <> "'"
|
||||||
|
H.raise $ AskResetDelegation state._domain
|
||||||
|
H.modify_ _ { rr_modal = NoModal }
|
||||||
|
|
||||||
NewToken rr_id -> do
|
NewToken rr_id -> do
|
||||||
{ _domain } <- H.get
|
{ _domain } <- H.get
|
||||||
H.raise $ Log $ SystemLog $ "Ask a token for rrid " <> show rr_id
|
H.raise $ Log $ SystemLog $ "Ask a token for rrid " <> show rr_id
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,28 @@ modal_rr_delete rr_id action_remove_rr action_cancel_modal = Web.modal "Deleting
|
||||||
zip_nullable :: forall a. Array a -> Array String -> Array (Tuple a String)
|
zip_nullable :: forall a. Array a -> Array String -> Array (Tuple a String)
|
||||||
zip_nullable txt raw = A.zip txt ([""] <> raw)
|
zip_nullable txt raw = A.zip txt ([""] <> raw)
|
||||||
|
|
||||||
|
type ActionResetDelegation :: forall i. i -> i
|
||||||
|
type ActionResetDelegation i = i
|
||||||
|
reset_delegation_modal :: forall w i. Domain -> ActionResetDelegation i -> ActionCancelModal i -> HH.HTML w i
|
||||||
|
reset_delegation_modal selected_domain action_reset_delegation action_cancel_modal =
|
||||||
|
Web.modal modal_title modal_content modal_foot
|
||||||
|
where
|
||||||
|
modal_title = "Reset delegation for " <> selected_domain
|
||||||
|
modal_content :: Array (HH.HTML w i)
|
||||||
|
modal_content =
|
||||||
|
[ HH.div [HP.classes [C.notification, C.is_warning]]
|
||||||
|
[ Web.p "⚠️ You are about to remove delegation for this domain."
|
||||||
|
, Web.p """
|
||||||
|
The domain will be reset to the default values from a template, you'll be able to modify the domain as a new domain.
|
||||||
|
"""
|
||||||
|
]
|
||||||
|
]
|
||||||
|
modal_foot :: Array (HH.HTML w i)
|
||||||
|
modal_foot =
|
||||||
|
[ Web.info_btn "Reset this domain" action_reset_delegation
|
||||||
|
, Web.cancel_button action_cancel_modal
|
||||||
|
]
|
||||||
|
|
||||||
type ActionValidate :: forall i. i -> i
|
type ActionValidate :: forall i. i -> i
|
||||||
type ActionValidate i = i
|
type ActionValidate i = i
|
||||||
type ActionUpdateDelegationForm i = (Delegation.Field -> i)
|
type ActionUpdateDelegationForm i = (Delegation.Field -> i)
|
||||||
|
|
@ -398,9 +420,10 @@ current_rr_modal selected_domain form rr_modal
|
||||||
template content foot_ = Web.modal title content foot
|
template content foot_ = Web.modal title content foot
|
||||||
where
|
where
|
||||||
title = case rr_modal of
|
title = case rr_modal of
|
||||||
NoModal -> "Error: no modal should be displayed"
|
NoModal -> "Error: no modal should be displayed"
|
||||||
DelegationModal -> "Error: the delegation modal should be displayed"
|
DelegationModal -> "Error: the delegation modal should be displayed"
|
||||||
NewRRModal t_ -> "New " <> show t_ <> " resource record"
|
ResetDelegationModal -> "Error: the reset delegation modal should be displayed"
|
||||||
UpdateRRModal -> "Update " <> form._rr.rrtype <> " Resource Record"
|
NewRRModal t_ -> "New " <> show t_ <> " resource record"
|
||||||
RemoveRRModal rr_id -> "Error: should display removal modal instead (for resource record " <> show rr_id <> ")"
|
UpdateRRModal -> "Update " <> form._rr.rrtype <> " Resource Record"
|
||||||
|
RemoveRRModal rr_id -> "Error: should display removal modal instead (for resource record " <> show rr_id <> ")"
|
||||||
foot = foot_ <> [Web.cancel_button action_cancel_modal]
|
foot = foot_ <> [Web.cancel_button action_cancel_modal]
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,4 @@ data RRModal
|
||||||
| UpdateRRModal
|
| UpdateRRModal
|
||||||
| RemoveRRModal RR.RRId
|
| RemoveRRModal RR.RRId
|
||||||
| DelegationModal
|
| DelegationModal
|
||||||
|
| ResetDelegationModal
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue