X-Git-Url: http://www.average.org/gitweb/?p=pdns-pipe-nmc.git;a=blobdiff_plain;f=pdns-pipe-nmc.hs;h=e9b29690aa0a866f2e57749dc41efa14fe304d4f;hp=a933c9ca70ade2f57d3c3a46b91b80923bf41d90;hb=9ef6b8b7e3a1eeb20cdde32541e6d2aa549ba3b1;hpb=26b23d266b588ea4b5bc4d53cbf479f9b40d26a0 diff --git a/pdns-pipe-nmc.hs b/pdns-pipe-nmc.hs index a933c9c..e9b2969 100644 --- a/pdns-pipe-nmc.hs +++ b/pdns-pipe-nmc.hs @@ -43,15 +43,18 @@ qRsp rsp = case parseJsonRpc (responseBody rsp) :: Either JsonRpcError NmcRes of Left jerr -> Left $ "Unparseable response: " ++ (show (responseBody rsp)) Right jrsp -> - case decode (resValue jrsp) :: Maybe NmcDom of - Nothing -> Left $ "Unparseable value: " ++ (show (resValue jrsp)) - Just dom -> Right dom + case resValue jrsp of + "" -> Right emptyNmcDom + vstr -> + case decode vstr :: Maybe NmcDom of + Nothing -> Left $ "Unparseable value: " ++ (show vstr) + Just dom -> Right dom -- NMC interface -queryNmc :: Manager -> Config -> String -> RRType -> String +queryNmc :: Manager -> Config -> String -> String -> IO (Either String NmcDom) -queryNmc mgr cfg fqdn qtype qid = do +queryNmc mgr cfg fqdn qid = do case reverse (splitOn "." fqdn) of "bit":dn:xs -> do rsp <- runResourceT $ @@ -89,11 +92,21 @@ main = do Left e -> putStrLn $ "ERROR\t" ++ e Right preq -> do case preq of - PdnsRequestQ qn qt id lip rip eip -> do - ncres <- queryNmc mgr cfg (qName preq) (qType preq) (iD preq) + PdnsRequestQ qname qtype id _ _ _ -> do + ncres <- queryNmc mgr cfg qname id case ncres of Left e -> putStrLn $ "ERROR\t" ++ e - Right dom -> putStrLn $ pdnsOut dom + Right dom -> putStrLn $ pdnsOut qtype dom PdnsRequestAXFR xfrreq -> - putStrLn ("ERROR\t No support for AXFR " ++ xfrreq) + putStrLn ("ERROR\tNo support for AXFR " ++ xfrreq) PdnsRequestPing -> putStrLn "OK" + +-- for testing + +ask str = do + cfg <- readConfig confFile + mgr <- newManager def + ncres <- queryNmc mgr cfg str "test-req-id" + case ncres of + Left e -> putStrLn $ "ERROR\t" ++ e + Right dom -> putStrLn $ pdnsOut RRTypeANY dom