import Network.HTTP.Types
import Data.Conduit
import Network.HTTP.Conduit
-import Data.JsonRpcClient
+import JsonRpcClient
import Config
import PowerDns
import NmcJson
-- 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 $
putStrLn $ "OK\tDnsNmc ready to serve, protocol v." ++ (show ver)
mgr <- newManager def
-
- print $ qReq cfg "d/nosuchdomain" "query-nmc"
- rsp <- runResourceT $ httpLbs (qReq cfg "d/nosuchdomain" "query-nmc") mgr
- print $ (statusCode . responseStatus) rsp
- putStrLn "===== complete response is:"
- print rsp
- let rbody = responseBody rsp
- putStrLn "===== response body is:"
- print rbody
- let result = parseJsonRpc rbody :: Either JsonRpcError NmcRes
- putStrLn "===== parsed response is:"
- print result
--- print $ parseJsonRpc (responseBody rsp)
-
- --forever $ getLine >>= (pdnsOut uri) . (pdnsParse ver)
+ forever $ do
+ l <- getLine
+ case pdnsParse ver l of
+ Left e -> putStrLn $ "ERROR\t" ++ e
+ Right preq -> do
+ case preq of
+ PdnsRequestQ qname qtype id _ _ _ -> do
+ ncres <- queryNmc mgr cfg qname id
+ case ncres of
+ Left e -> putStrLn $ "ERROR\t" ++ e
+ Right dom -> putStrLn $ pdnsOut qtype dom
+ PdnsRequestAXFR xfrreq ->
+ putStrLn ("ERROR\tNo support for AXFR " ++ xfrreq)
+ PdnsRequestPing -> putStrLn "OK"