move most formatting to PowerDns
authorEugene Crosser <crosser@average.org>
Sun, 30 Mar 2014 09:20:16 +0000 (13:20 +0400)
committerEugene Crosser <crosser@average.org>
Sun, 30 Mar 2014 09:20:16 +0000 (13:20 +0400)
PowerDns.hs
pdns-pipe-nmc.hs

index 1c1e420c6e13c0c61d25e1dc98537933f802bad0..9a2a4987443c9d052a40257f005a04dcd1aa8343 100644 (file)
@@ -1,6 +1,7 @@
 module PowerDns ( RRType(..)
                 , PdnsRequest(..)
                 , pdnsParse
+                , pdnsReport
                 , pdnsOut
                 ) where
 
@@ -63,8 +64,16 @@ pdnsParse ver s =
                                             })
       _                         -> Left $ "Unparseable PDNS Request: " ++ s
 
-pdnsOut :: Int -> RRType -> Either String NmcDom -> String
-pdnsOut ver rrtype edom =
+pdnsReport :: String -> String
+pdnsReport err =
+  "LOG\tError: " ++ err ++ "\nFAIL\n"
+
+pdnsOut :: Int -> String -> RRType -> Either String NmcDom -> String
+pdnsOut ver id rrtype edom =
   case edom of
-    Left  err -> "LOG Error: " ++ err ++ "\nFAIL\n"
-    Right dom -> "DATA\n" ++ (show dom) ++ "\nEND\n" --FIXME
+    Left  err -> pdnsReport err
+    Right dom -> pdnsAmend ver id rrtype dom "END\n"
+
+pdnsAmend :: Int -> String -> RRType -> NmcDom -> String -> String
+pdnsAmend ver id rrtype dom accum =
+  "DATA\t" ++ (show dom) ++ "\n" ++ accum --FIXME
index 79a17c0df1691d8d84ec2b5b43936bb05de70ff5..50d4bd860f8aa78e485825cf4e5eecb6d8befe77 100644 (file)
@@ -96,13 +96,13 @@ main = do
   forever $ do
     l <- getLine
     case pdnsParse ver l of
-      Left e -> putStrLn $ "FAIL\t" ++ e
+      Left e -> putStr $ pdnsReport e
       Right preq -> do
         case preq of
           PdnsRequestQ qname qtype id _ _ _ ->
-            queryNmc mgr cfg qname id >>= putStr . (pdnsOut ver qtype)
+            queryNmc mgr cfg qname id >>= putStr . (pdnsOut ver id qtype)
           PdnsRequestAXFR xfrreq ->
-            putStrLn ("FAIL\tNo support for AXFR " ++ xfrreq)
+            putStr $ pdnsReport ("No support for AXFR " ++ xfrreq)
           PdnsRequestPing -> putStrLn "END"
 
 -- for testing
@@ -110,4 +110,4 @@ main = do
 ask str = do
   cfg <- readConfig confFile
   mgr <- newManager def
-  queryNmc mgr cfg str "test-req-id" >>= putStr . (pdnsOut 1 RRTypeANY)
+  queryNmc mgr cfg str "askid" >>= putStr . (pdnsOut 1 "askid" RRTypeANY)