diff options
Diffstat (limited to 'Regfish.hs')
-rw-r--r-- | Regfish.hs | 26 |
1 files changed, 22 insertions, 4 deletions
@@ -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 = |