Rewrite RecordBase type (in RR.purs) to match ResourceRecord.
This commit is contained in:
parent
7c5574e3d4
commit
c0ed930bea
@ -6,8 +6,8 @@ type InputParameter
|
||||
}
|
||||
|
||||
type RecordType = String
|
||||
type RecordValue = String
|
||||
type RecordDomain = String
|
||||
type RecordTarget = String
|
||||
type RecordName = String
|
||||
|
||||
-- These should be integers, but I use these values in user inputs.
|
||||
type TTL = String
|
||||
@ -22,21 +22,22 @@ type Modified = Boolean
|
||||
type Valid = Boolean
|
||||
|
||||
type RecordBase l
|
||||
= { t :: RecordType
|
||||
, id :: RRId
|
||||
= { rrtype :: RecordType
|
||||
, rrid :: RRId
|
||||
, modified :: Boolean
|
||||
, valid :: Boolean
|
||||
, ttl :: TTL
|
||||
, domain :: RecordDomain
|
||||
, value :: RecordValue | l
|
||||
, name :: RecordName
|
||||
, target :: RecordTarget
|
||||
, readonly :: Boolean
|
||||
| l
|
||||
}
|
||||
|
||||
-- CNAME A AAAA NS TXT
|
||||
type SimpleRR l = RecordBase (|l)
|
||||
|
||||
type MXRR l = RecordBase ( priority :: Priority | l)
|
||||
type SRVRR l = RecordBase ( priority :: Priority
|
||||
, protocol :: Protocol
|
||||
type SRVRR l = MXRR ( protocol :: Protocol
|
||||
, weight :: Weight
|
||||
, port :: Port
|
||||
| l)
|
||||
@ -53,18 +54,18 @@ type SOARR l
|
||||
|
||||
defaultResourceA :: SimpleRR ()
|
||||
defaultResourceA
|
||||
= { id: 0, t: "A", modified: false, valid: true
|
||||
, ttl: "200", domain: "www", value: "192.168.10.2" }
|
||||
= { rrid: 0, rrtype: "A", modified: false, valid: true, readonly: false
|
||||
, ttl: "200", name : "www", target: "192.168.10.2" }
|
||||
|
||||
defaultResourceMX :: MXRR ()
|
||||
defaultResourceMX
|
||||
= { id: 0, t: "MX", modified: false, valid: true
|
||||
, ttl: "500", priority: "10", domain: "mail", value: "www" }
|
||||
= { rrid: 0, rrtype: "MX", modified: false, valid: true, readonly: false
|
||||
, ttl: "500", priority: "10", name : "mail", target: "www" }
|
||||
|
||||
defaultResourceSRV :: SRVRR ()
|
||||
-- RRId Modified Valid Priority Protocol Weight Port TTL Domain Value
|
||||
defaultResourceSRV
|
||||
= { id: 0, t: "SRV", modified: false, valid: true
|
||||
= { rrid: 0, rrtype: "SRV", modified: false, valid: true, readonly: false
|
||||
, priority: "10", protocol: "_tcp", weight: "100"
|
||||
, port: "80", ttl: "200"
|
||||
, domain: "_sip._tcp.example.com.", value: "sip.example.com." }
|
||||
, name : "_sip._tcp.example.com.", target: "sip.example.com." }
|
||||
|
@ -37,7 +37,7 @@ import Halogen.HTML.Properties as HP
|
||||
import Bulma as Bulma
|
||||
import CSSClasses as C
|
||||
|
||||
import App.RR (MXRR, Port, Priority, Protocol, RRId, RecordDomain, RecordValue, SOARR, SRVRR, SimpleRR, TTL, Weight
|
||||
import App.RR (MXRR, Port, Priority, Protocol, RRId, RecordName, RecordTarget, SOARR, SRVRR, SimpleRR, TTL, Weight
|
||||
, defaultResourceA, defaultResourceMX, defaultResourceSRV)
|
||||
import App.ResourceRecord (ResourceRecord)
|
||||
|
||||
@ -84,20 +84,20 @@ data Add_RR
|
||||
|
||||
data Update_SRR_Form
|
||||
= Update_SRR_Type Int
|
||||
| Update_SRR_Domain RecordDomain
|
||||
| Update_SRR_Domain RecordName
|
||||
| Update_SRR_TTL TTL
|
||||
| Update_SRR_Value RecordValue
|
||||
| Update_SRR_Target RecordTarget
|
||||
|
||||
data Update_MX_Form
|
||||
= Update_MX_Domain RecordDomain
|
||||
= Update_MX_Domain RecordName
|
||||
| Update_MX_TTL TTL
|
||||
| Update_MX_Value RecordValue
|
||||
| Update_MX_Target RecordTarget
|
||||
| Update_MX_Priority Priority
|
||||
|
||||
data Update_SRV_Form
|
||||
= Update_SRV_Domain RecordDomain
|
||||
= Update_SRV_Domain RecordName
|
||||
| Update_SRV_TTL TTL
|
||||
| Update_SRV_Value RecordValue
|
||||
| Update_SRV_Target RecordTarget
|
||||
| Update_SRV_Priority Priority
|
||||
| Update_SRV_Protocol Protocol
|
||||
| Update_SRV_Weight Weight
|
||||
@ -139,7 +139,7 @@ data Action
|
||||
-- |
|
||||
|
||||
type State =
|
||||
{ _current_domain :: RecordDomain
|
||||
{ _current_domain :: RecordName
|
||||
, _soa :: Maybe (SOARR ())
|
||||
, _srr :: Array (SimpleRR ())
|
||||
, _mxrr :: Array (MXRR ())
|
||||
@ -184,6 +184,8 @@ initialState domain =
|
||||
, _current_entry_srv: defaultResourceSRV
|
||||
}
|
||||
|
||||
type SortableRecord l = Record (rrtype :: String, rrid :: Int | l)
|
||||
|
||||
render :: forall m. State -> H.ComponentHTML Action () m
|
||||
render state
|
||||
= Bulma.section_small
|
||||
@ -193,17 +195,18 @@ render state
|
||||
true, Nothing -> HH.div_ [ Bulma.h1 state._current_domain
|
||||
, Bulma.hr
|
||||
, render_soa state._soa
|
||||
, render_records sorted
|
||||
, render_mx_records state._mxrr
|
||||
, render_srv_records state._srvrr
|
||||
, render_records $ sorted state._srr
|
||||
, render_mx_records $ sorted state._mxrr
|
||||
, render_srv_records $ sorted state._srvrr
|
||||
, render_new_records state
|
||||
]
|
||||
]
|
||||
where
|
||||
sorted = Foldable.foldl (<>) []
|
||||
$ map (A.sortBy (comparing (_.id)))
|
||||
sorted :: forall l. Array (SortableRecord (l)) -> Array (SortableRecord (l))
|
||||
sorted array = Foldable.foldl (<>) []
|
||||
$ map (A.sortBy (comparing (_.rrid)))
|
||||
$ map NonEmpty.toArray
|
||||
$ A.groupAllBy (comparing (_.t)) state._srr
|
||||
$ A.groupAllBy (comparing (_.rrtype)) array
|
||||
|
||||
modal_rr_delete :: forall w. Int -> HH.HTML w Action
|
||||
modal_rr_delete rr_id =
|
||||
@ -257,31 +260,31 @@ handleAction = case _ of
|
||||
state <- H.get
|
||||
H.modify_ _ { _current_entry = changeType state._current_entry (baseRecords A.!! val) }
|
||||
Update_SRR_Domain val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new entry domain: " <> val)
|
||||
H.modify_ _ { _current_entry { domain = val } }
|
||||
-- H.raise $ Log $ SimpleLog ("Update new entry name: " <> val)
|
||||
H.modify_ _ { _current_entry { name = val } }
|
||||
Update_SRR_TTL val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new entry ttl: " <> val)
|
||||
H.modify_ _ { _current_entry { ttl = val, valid = isInteger val } }
|
||||
Update_SRR_Value val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new entry value: " <> val)
|
||||
H.modify_ _ { _current_entry { value = val } }
|
||||
Update_SRR_Target val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new entry target: " <> val)
|
||||
H.modify_ _ { _current_entry { target = val } }
|
||||
|
||||
Update_New_Form_MXRR rr_update -> case rr_update of
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_MX_Domain val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new MX entry domain: " <> val)
|
||||
-- H.raise $ Log $ SimpleLog ("Update new MX entry name: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _current_entry_mx = state._current_entry_mx { domain = val } }
|
||||
H.modify_ _ { _current_entry_mx = state._current_entry_mx { name = val } }
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_MX_TTL val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new MX entry ttl: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _current_entry_mx = state._current_entry_mx {ttl = val, valid = isInteger val} }
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_MX_Value val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new MX entry value: " <> val)
|
||||
Update_MX_Target val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new MX entry target: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _current_entry_mx = state._current_entry_mx { value = val } }
|
||||
H.modify_ _ { _current_entry_mx = state._current_entry_mx { target = val } }
|
||||
Update_MX_Priority val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new MX entry priority: " <> val)
|
||||
state <- H.get
|
||||
@ -289,13 +292,13 @@ handleAction = case _ of
|
||||
|
||||
Update_New_Form_SRVRR rr_update -> case rr_update of
|
||||
Update_SRV_Domain val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new SRV entry domain: " <> val)
|
||||
-- H.raise $ Log $ SimpleLog ("Update new SRV entry name: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _current_entry_srv = state._current_entry_srv { domain = val } }
|
||||
Update_SRV_Value val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new SRV entry value: " <> val)
|
||||
H.modify_ _ { _current_entry_srv = state._current_entry_srv { name = val } }
|
||||
Update_SRV_Target val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new SRV entry target: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _current_entry_srv = state._current_entry_srv { value = val } }
|
||||
H.modify_ _ { _current_entry_srv = state._current_entry_srv { target = val } }
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_SRV_TTL val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update new SRV entry ttl: " <> val)
|
||||
@ -323,7 +326,7 @@ handleAction = case _ of
|
||||
Add_SRR -> do
|
||||
state <- H.get
|
||||
let newrr = fromLocalSimpleRRRepresentationToResourceRecord state._current_entry
|
||||
H.raise $ Log $ SimpleLog ("Add new simple RR: " <> show state._current_entry)
|
||||
-- H.raise $ Log $ SimpleLog $ "Add new simple RR: " <> show state._current_entry.rrtype
|
||||
message <- H.liftEffect
|
||||
$ DNSManager.serialize
|
||||
$ DNSManager.MkAddRR { domain: state._current_domain, rr: newrr }
|
||||
@ -332,7 +335,7 @@ handleAction = case _ of
|
||||
Add_MXRR -> do
|
||||
state <- H.get
|
||||
let newrr = fromLocalMXRRRepresentationToResourceRecord state._current_entry_mx
|
||||
H.raise $ Log $ SimpleLog ("Add new MX: " <> show state._current_entry_mx)
|
||||
-- H.raise $ Log $ SimpleLog "Add new MX"
|
||||
message <- H.liftEffect
|
||||
$ DNSManager.serialize
|
||||
$ DNSManager.MkAddRR { domain: state._current_domain, rr: newrr }
|
||||
@ -340,10 +343,8 @@ handleAction = case _ of
|
||||
|
||||
Add_SRVRR -> do
|
||||
state <- H.get
|
||||
case fromLocalToRR state._current_entry_srv of
|
||||
Left errmsg -> H.raise $ Log $ SimpleLog $ "Add new SRV failed: " <> errmsg
|
||||
Right newrr -> do
|
||||
H.raise $ Log $ SimpleLog $ "Add new SRV: " <> show state._current_entry_srv
|
||||
let newrr = fromLocalSRVRRepresentationToResourceRecord state._current_entry_srv
|
||||
-- H.raise $ Log $ SimpleLog "Add new SRV"
|
||||
message <- H.liftEffect
|
||||
$ DNSManager.serialize
|
||||
$ DNSManager.MkAddRR { domain: state._current_domain, rr: newrr }
|
||||
@ -357,22 +358,22 @@ handleAction = case _ of
|
||||
-- state <- H.get
|
||||
-- H.modify_ _ { _srr = changeType state._current_entry (baseRecords A.!! val) }
|
||||
Update_SRR_Domain val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local RR " <> show rr_id <> " domain: " <> val)
|
||||
-- H.raise $ Log $ SimpleLog ("Update local RR " <> show rr_id <> " name: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _srr = (update_domain rr_id val state._srr) }
|
||||
Update_SRR_TTL val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local RR " <> show rr_id <> " TTL: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _srr = (update_ttl rr_id val state._srr) }
|
||||
Update_SRR_Value val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local RR " <> show rr_id <> " value: " <> val)
|
||||
Update_SRR_Target val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local RR " <> show rr_id <> " target: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _srr = (update_value rr_id val state._srr) }
|
||||
H.modify_ _ { _srr = (update_target rr_id val state._srr) }
|
||||
|
||||
Update_Local_Form_MXRR rr_update -> case rr_update of
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_MX_Domain val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local MX RR " <> show rr_id <> " domain: " <> val)
|
||||
-- H.raise $ Log $ SimpleLog ("Update local MX RR " <> show rr_id <> " name: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _mxrr = (update_domain rr_id val state._mxrr) }
|
||||
-- TODO: FIXME: test all inputs
|
||||
@ -381,10 +382,10 @@ handleAction = case _ of
|
||||
state <- H.get
|
||||
H.modify_ _ { _mxrr = (update_ttl rr_id val state._mxrr) }
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_MX_Value val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local MX " <> show rr_id <> " entry value: " <> val)
|
||||
Update_MX_Target val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local MX " <> show rr_id <> " entry target: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _mxrr = (update_value rr_id val state._mxrr) }
|
||||
H.modify_ _ { _mxrr = (update_target rr_id val state._mxrr) }
|
||||
Update_MX_Priority val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local MX " <> show rr_id <> " entry priority: " <> val)
|
||||
state <- H.get
|
||||
@ -392,13 +393,13 @@ handleAction = case _ of
|
||||
|
||||
Update_Local_Form_SRVRR rr_update -> case rr_update of
|
||||
Update_SRV_Domain val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local SRV " <> show rr_id <> " entry domain: " <> val)
|
||||
-- H.raise $ Log $ SimpleLog ("Update local SRV " <> show rr_id <> " entry name: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _srvrr = (update_domain rr_id val state._srvrr) }
|
||||
Update_SRV_Value val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local SRV " <> show rr_id <> " entry value: " <> val)
|
||||
Update_SRV_Target val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local SRV " <> show rr_id <> " entry target: " <> val)
|
||||
state <- H.get
|
||||
H.modify_ _ { _srvrr = (update_value rr_id val state._srvrr) }
|
||||
H.modify_ _ { _srvrr = (update_target rr_id val state._srvrr) }
|
||||
-- TODO: FIXME: test all inputs
|
||||
Update_SRV_TTL val -> do
|
||||
-- H.raise $ Log $ SimpleLog ("Update local SRV " <> show rr_id <> " entry ttl: " <> val)
|
||||
@ -423,9 +424,9 @@ handleAction = case _ of
|
||||
|
||||
SyncSRR local_rr_id -> do
|
||||
state <- H.get
|
||||
let maybe_local_rr = first (\rr -> rr.id == local_rr_id) state._srr
|
||||
let maybe_local_rr = first (\rr -> rr.rrid == local_rr_id) state._srr
|
||||
case maybe_local_rr of
|
||||
Nothing -> H.raise $ Log $ SimpleLog $ "Cannot find simple RR id: " <> show local_rr_id
|
||||
Nothing -> H.raise $ Log $ SimpleLog $ "Cannot find simple RR rrid: " <> show local_rr_id
|
||||
Just local_rr -> do
|
||||
let rr = fromLocalSimpleRRRepresentationToResourceRecord local_rr
|
||||
H.raise $ Log $ SimpleLog $ "Sync a simple RR: " <> show local_rr_id
|
||||
@ -436,9 +437,9 @@ handleAction = case _ of
|
||||
|
||||
SyncMXRR local_rr_id -> do
|
||||
state <- H.get
|
||||
let maybe_local_rr = first (\rr -> rr.id == local_rr_id) state._mxrr
|
||||
let maybe_local_rr = first (\rr -> rr.rrid == local_rr_id) state._mxrr
|
||||
case maybe_local_rr of
|
||||
Nothing -> H.raise $ Log $ SimpleLog $ "Cannot find MX RR id: " <> show local_rr_id
|
||||
Nothing -> H.raise $ Log $ SimpleLog $ "Cannot find MX RR rrid: " <> show local_rr_id
|
||||
Just local_rr -> do
|
||||
let rr = fromLocalMXRRRepresentationToResourceRecord local_rr
|
||||
H.raise $ Log $ SimpleLog $ "Sync a MX RR: " <> show local_rr_id
|
||||
@ -449,9 +450,9 @@ handleAction = case _ of
|
||||
|
||||
SyncSRVRR local_rr_id -> do
|
||||
state <- H.get
|
||||
let maybe_local_rr = first (\rr -> rr.id == local_rr_id) state._srvrr
|
||||
let maybe_local_rr = first (\rr -> rr.rrid == local_rr_id) state._srvrr
|
||||
case maybe_local_rr of
|
||||
Nothing -> H.raise $ Log $ SimpleLog $ "Cannot find SRV RR id: " <> show local_rr_id
|
||||
Nothing -> H.raise $ Log $ SimpleLog $ "Cannot find SRV RR rrid: " <> show local_rr_id
|
||||
Just local_rr -> do
|
||||
let rr = fromLocalSRVRRepresentationToResourceRecord local_rr
|
||||
H.raise $ Log $ SimpleLog $ "Sync a SRV RR: " <> show local_rr_id
|
||||
@ -462,7 +463,7 @@ handleAction = case _ of
|
||||
|
||||
RemoveRR rr_id -> do
|
||||
{ _current_domain } <- H.get
|
||||
H.raise $ Log $ SimpleLog $ "Ask to remove rr (id: " <> show rr_id <> ")"
|
||||
H.raise $ Log $ SimpleLog $ "Ask to remove rr (rrid: " <> show rr_id <> ")"
|
||||
message <- H.liftEffect
|
||||
$ DNSManager.serialize
|
||||
$ DNSManager.MkDeleteRR { domain: _current_domain, rrid: rr_id }
|
||||
@ -522,7 +523,7 @@ handleQuery = case _ of
|
||||
(DNSManager.MkRRReadOnly response) -> do
|
||||
H.raise $ Log $ SimpleLog $ "[😈] Trying to modify a read-only resource! "
|
||||
<> "domain: " <> response.domain
|
||||
<> "resource id: " <> show response.rr.rrid
|
||||
<> "resource rrid: " <> show response.rr.rrid
|
||||
|
||||
(DNSManager.MkRRUpdated response) -> do
|
||||
H.raise $ Log $ SimpleLog $ "[🎉] Resource updated!"
|
||||
@ -531,13 +532,7 @@ handleQuery = case _ of
|
||||
(DNSManager.MkRRAdded response) -> do
|
||||
state <- H.get
|
||||
let new_rr = response.rr
|
||||
-- H.raise $ Log $ SimpleLog $ "Resource Record added: " <> response.domain
|
||||
-- <> " rrid: " <> show new_rr.rrid
|
||||
-- <> " rrtype: " <> new_rr.rrtype
|
||||
-- <> " name: " <> new_rr.name
|
||||
-- <> " ttl: " <> show new_rr.ttl
|
||||
-- <> " target: " <> new_rr.target
|
||||
-- <> " readonly: " <> show new_rr.readonly
|
||||
H.raise $ Log $ SimpleLog $ "[🎉] Resource Record added: " <> new_rr.rrtype
|
||||
case add_entry state new_rr of
|
||||
Left error_message -> H.raise $ Log $ SimpleLog $ "Error while adding new entry: " <> error_message
|
||||
Right new_state -> H.put new_state
|
||||
@ -548,11 +543,11 @@ handleQuery = case _ of
|
||||
(DNSManager.MkDomainDeleted response) -> do
|
||||
H.raise $ Log $ SimpleLog $ "[TODO] The domain '" <> response.domain <> "' has been deleted!"
|
||||
(DNSManager.MkRRDeleted response) -> do
|
||||
H.raise $ Log $ SimpleLog $ "[🎉] RR (id: '" <> show response.rrid <> "') has been deleted!"
|
||||
H.raise $ Log $ SimpleLog $ "[🎉] RR (rrid: '" <> show response.rrid <> "') has been deleted!"
|
||||
state <- H.get
|
||||
H.modify_ _ { _srr = A.filter (\rr -> rr.id /= response.rrid) state._srr
|
||||
, _mxrr = A.filter (\rr -> rr.id /= response.rrid) state._mxrr
|
||||
, _srvrr = A.filter (\rr -> rr.id /= response.rrid) state._srvrr
|
||||
H.modify_ _ { _srr = A.filter (\rr -> rr.rrid /= response.rrid) state._srr
|
||||
, _mxrr = A.filter (\rr -> rr.rrid /= response.rrid) state._mxrr
|
||||
, _srvrr = A.filter (\rr -> rr.rrid /= response.rrid) state._srvrr
|
||||
}
|
||||
|
||||
(DNSManager.MkZone response) -> do
|
||||
@ -581,9 +576,9 @@ handleQuery = case _ of
|
||||
-- replace_entry :: RRId
|
||||
replace_entry new_rr = do
|
||||
state <- H.get
|
||||
H.modify_ _ { _srr = A.filter (\rr -> rr.id /= new_rr.rrid) state._srr
|
||||
, _mxrr = A.filter (\rr -> rr.id /= new_rr.rrid) state._mxrr
|
||||
, _srvrr = A.filter (\rr -> rr.id /= new_rr.rrid) state._srvrr
|
||||
H.modify_ _ { _srr = A.filter (\rr -> rr.rrid /= new_rr.rrid) state._srr
|
||||
, _mxrr = A.filter (\rr -> rr.rrid /= new_rr.rrid) state._mxrr
|
||||
, _srvrr = A.filter (\rr -> rr.rrid /= new_rr.rrid) state._srvrr
|
||||
}
|
||||
|
||||
new_state <- H.get
|
||||
@ -623,11 +618,11 @@ render_soa (Just soa) = Bulma.columns [] [ left_block, right_block ]
|
||||
where left_block = Bulma.column class_title_size
|
||||
[ Bulma.zone_rr_title "Start Of Authority (SOA)" ]
|
||||
right_block = Bulma.column_ [ Bulma.p "ALL AVAILABLE DATA"
|
||||
, Bulma.p $ "rrtype: " <> soa.t
|
||||
, Bulma.p $ "rrid: " <> show soa.id
|
||||
, Bulma.p $ "name: " <> soa.domain
|
||||
, Bulma.p $ "rrtype: " <> soa.rrtype
|
||||
, Bulma.p $ "rrid: " <> show soa.rrid
|
||||
, Bulma.p $ "name: " <> soa.name
|
||||
, Bulma.p $ "ttl: " <> soa.ttl
|
||||
, Bulma.p $ "target: " <> soa.value
|
||||
, Bulma.p $ "target: " <> soa.target
|
||||
, Bulma.p $ "mname: " <> soa.mname
|
||||
, Bulma.p $ "rname: " <> soa.rname
|
||||
, Bulma.p $ "serial: " <> soa.serial
|
||||
@ -659,15 +654,14 @@ render_records records
|
||||
table_content = HH.tbody_ $ map row records
|
||||
|
||||
row rr = HH.tr_ $
|
||||
[ Bulma.txt_name rr.t
|
||||
, HH.td_ [ Bulma.input_domain ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRR <<< Update_SRR_Domain) rr.domain rr.valid ]
|
||||
, HH.td_ [ Bulma.input_ttl ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRR <<< Update_SRR_TTL ) rr.ttl rr.valid ]
|
||||
, HH.td_ [ Bulma.input_value ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRR <<< Update_SRR_Value) rr.value rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_change (SyncSRR rr.id) (TellSomethingWentWrong rr.id "cannot update") rr.modified rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_delete (\_ -> DeleteRRModal rr.id) ]
|
||||
[ Bulma.txt_name rr.rrtype
|
||||
, HH.td_ [ Bulma.input_domain ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRR <<< Update_SRR_Domain) rr.name rr.valid ]
|
||||
, HH.td_ [ Bulma.input_ttl ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRR <<< Update_SRR_TTL ) rr.ttl rr.valid ]
|
||||
, HH.td_ [ Bulma.input_target ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRR <<< Update_SRR_Target) rr.target rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_change (SyncSRR rr.rrid) (TellSomethingWentWrong rr.rrid "cannot update") rr.modified rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_delete (\_ -> DeleteRRModal rr.rrid) ]
|
||||
]
|
||||
|
||||
|
||||
render_mx_records :: forall (w :: Type) (l :: Row Type)
|
||||
. Array (MXRR l) -> HH.HTML w Action
|
||||
render_mx_records []
|
||||
@ -684,15 +678,14 @@ render_mx_records records
|
||||
table_content = HH.tbody_ $ map row records
|
||||
|
||||
row rr = HH.tr_ $
|
||||
[ HH.td_ [ Bulma.input_domain ((UpdateLocalForm rr.id) <<< Update_Local_Form_MXRR <<< Update_MX_Domain) rr.domain rr.valid ]
|
||||
, HH.td_ [ Bulma.input_ttl ((UpdateLocalForm rr.id) <<< Update_Local_Form_MXRR <<< Update_MX_TTL) rr.ttl rr.valid ]
|
||||
, HH.td_ [ Bulma.input_priority ((UpdateLocalForm rr.id) <<< Update_Local_Form_MXRR <<< Update_MX_Priority) rr.priority rr.valid ]
|
||||
, HH.td_ [ Bulma.input_value ((UpdateLocalForm rr.id) <<< Update_Local_Form_MXRR <<< Update_MX_Value) rr.value rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_change (SyncMXRR rr.id) (TellSomethingWentWrong rr.id "cannot update") rr.modified rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_delete (\_ -> DeleteRRModal rr.id) ]
|
||||
[ HH.td_ [ Bulma.input_domain ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_MXRR <<< Update_MX_Domain) rr.name rr.valid ]
|
||||
, HH.td_ [ Bulma.input_ttl ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_MXRR <<< Update_MX_TTL) rr.ttl rr.valid ]
|
||||
, HH.td_ [ Bulma.input_priority ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_MXRR <<< Update_MX_Priority) rr.priority rr.valid ]
|
||||
, HH.td_ [ Bulma.input_target ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_MXRR <<< Update_MX_Target) rr.target rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_change (SyncMXRR rr.rrid) (TellSomethingWentWrong rr.rrid "cannot update") rr.modified rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_delete (\_ -> DeleteRRModal rr.rrid) ]
|
||||
]
|
||||
|
||||
|
||||
render_srv_records :: forall (w :: Type) (l :: Row Type)
|
||||
. Array (SRVRR l) -> HH.HTML w Action
|
||||
render_srv_records []
|
||||
@ -708,18 +701,17 @@ render_srv_records records
|
||||
table_content = HH.tbody_ $ map row records
|
||||
|
||||
row rr = HH.tr_ $
|
||||
[ HH.td_ [ Bulma.input_domain ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_Domain ) rr.domain rr.valid ]
|
||||
, HH.td_ [ Bulma.input_ttl ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_TTL ) rr.ttl rr.valid ]
|
||||
, HH.td_ [ Bulma.input_priority ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_Priority) rr.priority rr.valid ]
|
||||
, HH.td_ [ Bulma.input_protocol ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_Protocol) rr.protocol rr.valid ]
|
||||
, HH.td_ [ Bulma.input_weight ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_Weight ) rr.weight rr.valid ]
|
||||
, HH.td_ [ Bulma.input_port ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_Port ) rr.port rr.valid ]
|
||||
, HH.td_ [ Bulma.input_value ((UpdateLocalForm rr.id) <<< Update_Local_Form_SRVRR <<< Update_SRV_Value ) rr.value rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_change (SyncSRVRR rr.id) (TellSomethingWentWrong rr.id "cannot update") rr.modified rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_delete (\_ -> DeleteRRModal rr.id) ]
|
||||
[ HH.td_ [ Bulma.input_domain ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_Domain ) rr.name rr.valid ]
|
||||
, HH.td_ [ Bulma.input_ttl ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_TTL ) rr.ttl rr.valid ]
|
||||
, HH.td_ [ Bulma.input_priority ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_Priority) rr.priority rr.valid ]
|
||||
, HH.td_ [ Bulma.input_protocol ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_Protocol) rr.protocol rr.valid ]
|
||||
, HH.td_ [ Bulma.input_weight ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_Weight ) rr.weight rr.valid ]
|
||||
, HH.td_ [ Bulma.input_port ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_Port ) rr.port rr.valid ]
|
||||
, HH.td_ [ Bulma.input_target ((UpdateLocalForm rr.rrid) <<< Update_Local_Form_SRVRR <<< Update_SRV_Target ) rr.target rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_change (SyncSRVRR rr.rrid) (TellSomethingWentWrong rr.rrid "cannot update") rr.modified rr.valid ]
|
||||
, HH.td_ [ Bulma.btn_delete (\_ -> DeleteRRModal rr.rrid) ]
|
||||
]
|
||||
|
||||
|
||||
baseRecords :: Array String
|
||||
baseRecords = [ "NS", "A", "AAAA", "CNAME", "TXT" ]
|
||||
|
||||
@ -734,9 +726,9 @@ render_new_records state
|
||||
[ render_new_record_column_simple state._current_entry
|
||||
, render_new_record_colunm_mx state._current_entry_mx
|
||||
, render_new_record_colunm_srv state._current_entry_srv
|
||||
-- , render_current_value state._current_entry
|
||||
-- , render_mx_current_value state._current_entry_mx
|
||||
-- , render_srv_current_value state._current_entry_srv
|
||||
-- , render_current_target state._current_entry
|
||||
-- , render_mx_current_target state._current_entry_mx
|
||||
-- , render_srv_current_target state._current_entry_srv
|
||||
]
|
||||
]
|
||||
|
||||
@ -746,10 +738,10 @@ render_new_record_column_simple rr
|
||||
= Bulma.column_ $ [ Bulma.box
|
||||
[ Bulma.zone_rr_title "NS, A, AAAA, CNAME, TXT"
|
||||
, type_selection
|
||||
, Bulma.box_input_domain (UpdateNewForm <<< Update_New_Form_SRR <<< Update_SRR_Domain) rr.domain rr.valid
|
||||
, Bulma.box_input_domain (UpdateNewForm <<< Update_New_Form_SRR <<< Update_SRR_Domain) rr.name rr.valid
|
||||
, Bulma.box_input_ttl (UpdateNewForm <<< Update_New_Form_SRR <<< Update_SRR_TTL) rr.ttl rr.valid
|
||||
, Bulma.box_input_value (UpdateNewForm <<< Update_New_Form_SRR <<< Update_SRR_Value) rr.value rr.valid
|
||||
, Bulma.btn_add (AddRR Add_SRR) (TellSomethingWentWrong rr.id "cannot add") rr.valid
|
||||
, Bulma.box_input_target (UpdateNewForm <<< Update_New_Form_SRR <<< Update_SRR_Target) rr.target rr.valid
|
||||
, Bulma.btn_add (AddRR Add_SRR) (TellSomethingWentWrong rr.rrid "cannot add") rr.valid
|
||||
]
|
||||
]
|
||||
where
|
||||
@ -760,19 +752,18 @@ render_new_record_column_simple rr
|
||||
type_option n
|
||||
= HH.option
|
||||
[ HP.value n
|
||||
, HP.selected (n == rr.t)
|
||||
, HP.selected (n == rr.rrtype)
|
||||
] [ HH.text n ]
|
||||
|
||||
|
||||
render_new_record_colunm_mx :: forall (w :: Type). (MXRR ()) -> HH.HTML w Action
|
||||
render_new_record_colunm_mx rr
|
||||
= Bulma.column_ $ [ Bulma.box
|
||||
[ Bulma.zone_rr_title "MX"
|
||||
, Bulma.box_input_domain (UpdateNewForm <<< Update_New_Form_MXRR <<< Update_MX_Domain) rr.domain rr.valid
|
||||
, Bulma.box_input_domain (UpdateNewForm <<< Update_New_Form_MXRR <<< Update_MX_Domain) rr.name rr.valid
|
||||
, Bulma.box_input_ttl (UpdateNewForm <<< Update_New_Form_MXRR <<< Update_MX_TTL) rr.ttl rr.valid
|
||||
, Bulma.box_input_priority (UpdateNewForm <<< Update_New_Form_MXRR <<< Update_MX_Priority) rr.priority rr.valid
|
||||
, Bulma.box_input_value (UpdateNewForm <<< Update_New_Form_MXRR <<< Update_MX_Value) rr.value rr.valid
|
||||
, Bulma.btn_add (AddRR Add_MXRR) (TellSomethingWentWrong rr.id "cannot add") rr.valid
|
||||
, Bulma.box_input_target (UpdateNewForm <<< Update_New_Form_MXRR <<< Update_MX_Target) rr.target rr.valid
|
||||
, Bulma.btn_add (AddRR Add_MXRR) (TellSomethingWentWrong rr.rrid "cannot add") rr.valid
|
||||
]
|
||||
]
|
||||
|
||||
@ -780,14 +771,14 @@ render_new_record_colunm_srv :: forall (w :: Type). (SRVRR ()) -> HH.HTML w Acti
|
||||
render_new_record_colunm_srv rr
|
||||
= Bulma.column_ $ [ Bulma.box
|
||||
[ Bulma.zone_rr_title "SRV"
|
||||
, Bulma.box_input_domain (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Domain) rr.domain rr.valid
|
||||
, Bulma.box_input_domain (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Domain) rr.name rr.valid
|
||||
, Bulma.box_input_ttl (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_TTL) rr.ttl rr.valid
|
||||
, Bulma.box_input_priority (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Priority) rr.priority rr.valid
|
||||
, Bulma.box_input_protocol (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Protocol) rr.protocol rr.valid
|
||||
, Bulma.box_input_weight (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Weight) rr.weight rr.valid
|
||||
, Bulma.box_input_port (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Port) rr.port rr.valid
|
||||
, Bulma.box_input_value (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Value) rr.value rr.valid
|
||||
, Bulma.btn_add (AddRR Add_SRVRR) (TellSomethingWentWrong rr.id "cannot add") rr.valid
|
||||
, Bulma.box_input_target (UpdateNewForm <<< Update_New_Form_SRVRR <<< Update_SRV_Target) rr.target rr.valid
|
||||
, Bulma.btn_add (AddRR Add_SRVRR) (TellSomethingWentWrong rr.rrid "cannot add") rr.valid
|
||||
]
|
||||
]
|
||||
|
||||
@ -818,22 +809,16 @@ new_soa state = case _ of
|
||||
|
||||
changeType :: forall (l :: Row Type). (SimpleRR l) -> Maybe String -> (SimpleRR l)
|
||||
changeType rr Nothing = rr
|
||||
changeType rr (Just s) = rr { t = s }
|
||||
changeType rr (Just s) = rr { rrtype = s }
|
||||
|
||||
update_domain :: forall (l :: Row Type).
|
||||
Int -> String -> Array (SimpleRR l) -> Array (SimpleRR l)
|
||||
update_domain rr_id val
|
||||
= update (\rr -> rr { modified = true, domain = val }) rr_id
|
||||
update_domain :: forall (l :: Row Type). Int -> String -> Array (SimpleRR l) -> Array (SimpleRR l)
|
||||
update_domain rr_id val = update (\rr -> rr { modified = true, name = val }) rr_id
|
||||
|
||||
update_value :: forall (l :: Row Type).
|
||||
Int -> String -> Array (SimpleRR l) -> Array (SimpleRR l)
|
||||
update_value rr_id val
|
||||
= update (\rr -> rr { modified = true, value = val }) rr_id
|
||||
update_target :: forall (l :: Row Type). Int -> String -> Array (SimpleRR l) -> Array (SimpleRR l)
|
||||
update_target rr_id val = update (\rr -> rr { modified = true, target = val }) rr_id
|
||||
|
||||
update_ttl :: forall (l :: Row Type).
|
||||
Int -> String -> Array (SimpleRR l) -> Array (SimpleRR l)
|
||||
update_ttl rr_id val
|
||||
= update (\rr -> rr { modified = true, ttl = val, valid = isInteger val }) rr_id
|
||||
update_ttl :: forall (l :: Row Type). Int -> String -> Array (SimpleRR l) -> Array (SimpleRR l)
|
||||
update_ttl rr_id val = update (\rr -> rr { modified = true, ttl = val, valid = isInteger val }) rr_id
|
||||
|
||||
update_priority :: forall (l :: Row Type). Int -> Priority -> Array (MXRR l) -> Array (MXRR l)
|
||||
update_priority rr_id val = update (\rr -> rr { modified = true, priority = val}) rr_id
|
||||
@ -858,39 +843,32 @@ update :: forall (l :: Row Type).
|
||||
update f rr_id records = map doSmth records
|
||||
where
|
||||
doSmth rr
|
||||
| rr_id == rr.id = f rr
|
||||
| rr_id == rr.rrid = f rr
|
||||
| otherwise = rr
|
||||
|
||||
fromLocalToRR :: forall (l :: Row Type). SRVRR (|l) -> Either String ResourceRecord
|
||||
fromLocalToRR new_rr = do
|
||||
case new_rr.t, (A.elem new_rr.t baseRecords) of
|
||||
_, true -> Right $ fromLocalSimpleRRRepresentationToResourceRecord new_rr
|
||||
"MX", _ -> Right $ fromLocalMXRRRepresentationToResourceRecord new_rr
|
||||
"SRV", _ -> Right $ fromLocalSRVRRepresentationToResourceRecord new_rr
|
||||
-- "SOA" resource record shouldn't be useful in this context.
|
||||
_, _ -> Left $ "TODO: cannot convert RR type '" <> new_rr.t <> "' to ResourceRecord representation."
|
||||
|
||||
fromResourceRecordToLocalRepresentationSimpleRR :: ResourceRecord -> Maybe (SimpleRR ())
|
||||
fromResourceRecordToLocalRepresentationSimpleRR new_rr =
|
||||
Just { t: new_rr.rrtype
|
||||
, id: new_rr.rrid
|
||||
Just { rrtype: new_rr.rrtype
|
||||
, rrid: new_rr.rrid
|
||||
, modified: false
|
||||
, valid: true
|
||||
, readonly: new_rr.readonly
|
||||
, ttl: show new_rr.ttl
|
||||
, domain: new_rr.name
|
||||
, value: new_rr.target
|
||||
, name: new_rr.name
|
||||
, target: new_rr.target
|
||||
}
|
||||
|
||||
fromResourceRecordToLocalRepresentationMXRR :: ResourceRecord -> Maybe (MXRR ())
|
||||
fromResourceRecordToLocalRepresentationMXRR new_rr = do
|
||||
priority <- new_rr.priority
|
||||
Just { t: new_rr.rrtype
|
||||
, id: new_rr.rrid
|
||||
Just { rrtype: new_rr.rrtype
|
||||
, rrid: new_rr.rrid
|
||||
, modified: false
|
||||
, valid: true
|
||||
, readonly: new_rr.readonly
|
||||
, ttl: show new_rr.ttl
|
||||
, domain: new_rr.name
|
||||
, value: new_rr.target
|
||||
, name: new_rr.name
|
||||
, target: new_rr.target
|
||||
, priority: show priority
|
||||
}
|
||||
-- TODO: would be nice to have a simpler implementation, something like this:
|
||||
@ -904,13 +882,14 @@ fromResourceRecordToLocalRepresentationSRVRR new_rr = do
|
||||
weight <- new_rr.weight
|
||||
priority <- new_rr.priority
|
||||
protocol <- new_rr.protocol
|
||||
Just { t: new_rr.rrtype
|
||||
, id: new_rr.rrid
|
||||
Just { rrtype: new_rr.rrtype
|
||||
, rrid: new_rr.rrid
|
||||
, modified: false
|
||||
, valid: true
|
||||
, readonly: new_rr.readonly
|
||||
, ttl: show new_rr.ttl
|
||||
, domain: new_rr.name
|
||||
, value: new_rr.target
|
||||
, name: new_rr.name
|
||||
, target: new_rr.target
|
||||
, priority: show priority
|
||||
, port: show port
|
||||
, weight: show weight
|
||||
@ -926,13 +905,14 @@ fromResourceRecordToLocalRepresentationSOARR new_rr = do
|
||||
retry <- new_rr.retry -- :: Maybe Int
|
||||
expire <- new_rr.expire -- :: Maybe Int
|
||||
minttl <- new_rr.minttl -- :: Maybe Int
|
||||
Just { t: new_rr.rrtype
|
||||
, id: new_rr.rrid
|
||||
Just { rrtype: new_rr.rrtype
|
||||
, rrid: new_rr.rrid
|
||||
, modified: false
|
||||
, valid: true
|
||||
, readonly: new_rr.readonly
|
||||
, ttl: show new_rr.ttl
|
||||
, domain: new_rr.name
|
||||
, value: new_rr.target
|
||||
, name: new_rr.name
|
||||
, target: new_rr.target
|
||||
, mname: mname -- :: RR (Maybe String) Local (String)
|
||||
, rname: rname -- :: RR (Maybe String) Local (String)
|
||||
, serial: show serial -- :: RR (Maybe Int) Local (String)
|
||||
@ -944,12 +924,12 @@ fromResourceRecordToLocalRepresentationSOARR new_rr = do
|
||||
|
||||
fromLocalSimpleRRRepresentationToResourceRecord :: forall l. SimpleRR (|l) -> ResourceRecord
|
||||
fromLocalSimpleRRRepresentationToResourceRecord form
|
||||
= { rrtype: form.t
|
||||
, rrid: form.id
|
||||
, name: form.domain
|
||||
= { rrtype: form.rrtype
|
||||
, rrid: form.rrid
|
||||
, name: form.name
|
||||
, ttl: fromMaybe 3600 $ fromString form.ttl
|
||||
, target: form.value
|
||||
, readonly: false
|
||||
, target: form.target
|
||||
, readonly: form.readonly
|
||||
, priority: Nothing
|
||||
, port: Nothing
|
||||
, protocol: Nothing
|
||||
@ -965,12 +945,12 @@ fromLocalSimpleRRRepresentationToResourceRecord form
|
||||
|
||||
fromLocalMXRRRepresentationToResourceRecord :: forall l. MXRR (|l) -> ResourceRecord
|
||||
fromLocalMXRRRepresentationToResourceRecord form
|
||||
= { rrtype: form.t
|
||||
, rrid: form.id
|
||||
, name: form.domain
|
||||
= { rrtype: form.rrtype
|
||||
, rrid: form.rrid
|
||||
, name: form.name
|
||||
, ttl: fromMaybe 3600 $ fromString form.ttl
|
||||
, target: form.value
|
||||
, readonly: false
|
||||
, target: form.target
|
||||
, readonly: form.readonly
|
||||
, priority: Just $ fromMaybe 10 $ fromString form.priority
|
||||
, port: Nothing
|
||||
, protocol: Nothing
|
||||
@ -986,12 +966,12 @@ fromLocalMXRRRepresentationToResourceRecord form
|
||||
|
||||
fromLocalSRVRRepresentationToResourceRecord :: forall l. SRVRR (|l) -> ResourceRecord
|
||||
fromLocalSRVRRepresentationToResourceRecord form
|
||||
= { rrtype: form.t
|
||||
, rrid: form.id
|
||||
, name: form.domain
|
||||
= { rrtype: form.rrtype
|
||||
, rrid: form.rrid
|
||||
, name: form.name
|
||||
, ttl: fromMaybe 3600 $ fromString form.ttl
|
||||
, target: form.value
|
||||
, readonly: false
|
||||
, target: form.target
|
||||
, readonly: form.readonly
|
||||
, priority: Just $ fromMaybe 10 $ fromString form.priority
|
||||
, port: Just $ fromMaybe 10 $ fromString form.port
|
||||
, protocol: Just form.protocol
|
||||
@ -1016,6 +996,6 @@ getNewID state = (_ + 1)
|
||||
]
|
||||
|
||||
where
|
||||
maxIDrr = Foldable.foldl max 0 $ map _.id state._srr
|
||||
maxIDmxrr = Foldable.foldl max 0 $ map _.id state._mxrr
|
||||
maxIDsrvrr = Foldable.foldl max 0 $ map _.id state._srvrr
|
||||
maxIDrr = Foldable.foldl max 0 $ map _.rrid state._srr
|
||||
maxIDmxrr = Foldable.foldl max 0 $ map _.rrid state._mxrr
|
||||
maxIDsrvrr = Foldable.foldl max 0 $ map _.rrid state._srvrr
|
||||
|
@ -63,30 +63,30 @@ btn_classes false = C.button <> C.is_small <> C.is_danger
|
||||
simple_table_header :: forall w i. HH.HTML w i
|
||||
simple_table_header
|
||||
= HH.thead_ [ HH.tr_ [ HH.th [ HP.style "width: 50px;" ] [ HH.text "Type" ]
|
||||
, HH.th_ [ HH.text "Domain" ]
|
||||
, HH.th_ [ HH.text "Name" ]
|
||||
, HH.th_ [ HH.text "TTL" ]
|
||||
, HH.th_ [ HH.text "Value" ]
|
||||
, HH.th_ [ HH.text "Target" ]
|
||||
]
|
||||
]
|
||||
|
||||
mx_table_header :: forall w i. HH.HTML w i
|
||||
mx_table_header
|
||||
= HH.thead_ [ HH.tr_ [ HH.th_ [ HH.text "Domain" ]
|
||||
= HH.thead_ [ HH.tr_ [ HH.th_ [ HH.text "Name" ]
|
||||
, HH.th_ [ HH.text "TTL" ]
|
||||
, HH.th_ [ HH.text "Priority" ]
|
||||
, HH.th_ [ HH.text "Value" ]
|
||||
, HH.th_ [ HH.text "Target" ]
|
||||
]
|
||||
]
|
||||
|
||||
srv_table_header :: forall w i. HH.HTML w i
|
||||
srv_table_header
|
||||
= HH.thead_ [ HH.tr_ [ HH.th_ [ HH.text "Domain" ]
|
||||
= HH.thead_ [ HH.tr_ [ HH.th_ [ HH.text "Name" ]
|
||||
, HH.th_ [ HH.text "TTL" ]
|
||||
, HH.th_ [ HH.text "Priority" ]
|
||||
, HH.th_ [ HH.text "Protocol" ]
|
||||
, HH.th_ [ HH.text "Weight" ]
|
||||
, HH.th_ [ HH.text "Port" ]
|
||||
, HH.th_ [ HH.text "Value" ]
|
||||
, HH.th_ [ HH.text "Target" ]
|
||||
]
|
||||
]
|
||||
|
||||
@ -200,19 +200,19 @@ box_input_protocol action value validity = HH.label [ ]
|
||||
, HH.div [HP.classes C.control ] [ input_protocol action value validity ]
|
||||
]
|
||||
|
||||
input_value :: forall w i. (String -> i) -> String -> Boolean -> HH.HTML w i
|
||||
input_value action value validity
|
||||
input_target :: forall w i. (String -> i) -> String -> Boolean -> HH.HTML w i
|
||||
input_target action value validity
|
||||
= HH.input
|
||||
[ HE.onValueInput action
|
||||
, HP.value value
|
||||
, HP.placeholder "value"
|
||||
, HP.placeholder "target"
|
||||
, HP.classes $ input_classes validity
|
||||
]
|
||||
|
||||
box_input_value :: forall w i. (String -> i) -> String -> Boolean -> HH.HTML w i
|
||||
box_input_value action value validity = HH.label [ ]
|
||||
[ HH.label [HP.classes C.label ] [ HH.text "Value" ]
|
||||
, HH.div [HP.classes C.control ] [ input_value action value validity ]
|
||||
box_input_target :: forall w i. (String -> i) -> String -> Boolean -> HH.HTML w i
|
||||
box_input_target action value validity = HH.label [ ]
|
||||
[ HH.label [HP.classes C.label ] [ HH.text "Target" ]
|
||||
, HH.div [HP.classes C.control ] [ input_target action value validity ]
|
||||
]
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user