summaryrefslogtreecommitdiffstats
path: root/Regfish.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Regfish.hs')
-rw-r--r--Regfish.hs26
1 files changed, 22 insertions, 4 deletions
diff --git a/Regfish.hs b/Regfish.hs
index 4119d4d..a0c70db 100644
--- a/Regfish.hs
+++ b/Regfish.hs
@@ -14,6 +14,7 @@ module Regfish
, add
, edit
, del
+ , RRData(..)
) where
import Control.Lens
@@ -90,10 +91,21 @@ list =
-- TODO login and try again (once)
error "not logged in"
else do
- mapM_ pr $ readZone $ body
+ mapM_ pr =<< readZoneIO body
where
- pr (Record rrid rrtype rrname rrttl rraux rrdata) = do
- printf "%-8s %-24s\t%s\tIN\t%-5s\t%s\n"
+ pr (RR rrid rrname rrttl x) = case x of
+ A rrdata -> f "A" rrid rrname rrttl 0 rrdata
+ AAAA rrdata -> f "AAAA" rrid rrname rrttl 0 rrdata
+ ALIAS rrdata -> f "ALIAS" rrid rrname rrttl 0 rrdata
+ CNAME rrdata -> f "CNAME" rrid rrname rrttl 0 rrdata
+ MX rraux rrdata -> f "MX" rrid rrname rrttl rraux rrdata
+ NS rrdata -> f "NS" rrid rrname rrttl 0 rrdata
+ TXT rrdata -> f "TXT" rrid rrname rrttl 0 rrdata
+ SRV rrdata -> f "SRV" rrid rrname rrttl 0 rrdata
+
+ f :: String -> String -> String -> Integer -> Integer -> String -> IO ()
+ f rrtype rrid rrname rrttl rraux rrdata =
+ printf "%-8s %-24s\t%s\tin\t%-5s\t%s\n"
rrid
rrname
(if rrttl /= 0 then show rrttl else mempty)
@@ -177,8 +189,14 @@ isLoginPage =
undata :: RRData -> (String -> Integer -> String -> a) -> a
undata (A rrdata) f = f "A" 0 rrdata
-undata (MX rraux rrdata) f = f "MX" rraux rrdata
+undata (AAAA rrdata) f = f "AAAA" 0 rrdata
+undata (ALIAS rrdata) f = f "ALIAS" 0 rrdata
undata (CNAME rrdata) f = f "CNAME" 0 rrdata
+undata (MX rraux rrdata) f = f "MX" rraux rrdata
+undata (NS rrdata) f = f "NS" 0 rrdata
+undata (TXT rrdata) f = f "TXT" 0 rrdata
+undata (SRV rrdata) f = f "SRV" 0 rrdata
+
add :: RRname -> RRttl -> RRData -> IO (Either String (W.Response LBS8.ByteString))
add rrname rrttl rrdata =