summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2016-01-24 16:22:20 -0500
committerAndrew Cady <d@jerkface.net>2016-01-24 19:47:07 -0500
commitc4b9b52a2ebbc8d113f4829c86834dcd565cd6a3 (patch)
treed6b8f0d4c2d21970d84bcf6b011d1c5b990cdef0 /src
parent7f1b6358cd96d9ea204e36a5b721113635006cac (diff)
Oops; don't use "show" with DomainName type
Diffstat (limited to 'src')
-rw-r--r--src/Network/ACME.hs18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/Network/ACME.hs b/src/Network/ACME.hs
index 116a291..d2216ac 100644
--- a/src/Network/ACME.hs
+++ b/src/Network/ACME.hs
@@ -32,7 +32,6 @@ import Network.Wreq (Response, checkStatus, defaults,
32import qualified Network.Wreq as W 32import qualified Network.Wreq as W
33import qualified Network.Wreq.Session as WS 33import qualified Network.Wreq.Session as WS
34import OpenSSL.RSA 34import OpenSSL.RSA
35import Pipes
36import System.Directory 35import System.Directory
37import Text.Email.Validate 36import Text.Email.Validate
38import Text.Domain.Validate hiding (validate) 37import Text.Domain.Validate hiding (validate)
@@ -44,15 +43,11 @@ certify directoryUrl keys optEmail terms requestDomains optChallengeDir csrData
44 runACME directoryUrl keys $ do 43 runACME directoryUrl keys $ do
45 forM_ optEmail $ register terms >=> statusReport 44 forM_ optEmail $ register terms >=> statusReport
46 45
47 let producer :: Producer ChallengeRequest ACME () 46 let performChallenge (ChallengeRequest nextUri token thumbtoken) = do
48 producer = for (each requestDomains) $ challengeRequest >=> statusReport >=> extractCR >=> yield 47 liftIO $ BC.writeFile (coerce optChallengeDir </> BC.unpack token) thumbtoken
49 consumer :: Consumer ChallengeRequest ACME ()
50 consumer = forever $ await >>= consume1
51 consume1 (ChallengeRequest nextUri token thumbtoken) = do
52 lift $ liftIO $ BC.writeFile (coerce optChallengeDir </> BC.unpack token) thumbtoken
53 notifyChallenge nextUri thumbtoken >>= statusReport >>= ncErrorReport 48 notifyChallenge nextUri thumbtoken >>= statusReport >>= ncErrorReport
54 49
55 runEffect $ producer >-> consumer 50 forM_ requestDomains $ challengeRequest >=> statusReport >=> extractCR >=> performChallenge
56 51
57 retrieveCert csrData >>= statusReport <&> checkCertResponse 52 retrieveCert csrData >>= statusReport <&> checkCertResponse
58 53
@@ -71,6 +66,9 @@ ensureWritableDir file name = do
71a </> b = a ++ "/" ++ b 66a </> b = a ++ "/" ++ b
72infixr 5 </> 67infixr 5 </>
73 68
69domainToString :: DomainName -> String
70domainToString = T.unpack . decodeUtf8 . Text.Domain.Validate.toByteString
71
74canProvision :: WritableDir -> DomainName -> IO Bool 72canProvision :: WritableDir -> DomainName -> IO Bool
75canProvision challengeDir domain = do 73canProvision challengeDir domain = do
76 randomish <- fromString . show <$> getPOSIXTime 74 randomish <- fromString . show <$> getPOSIXTime
@@ -79,7 +77,7 @@ canProvision challengeDir domain = do
79 relFile = ".test." ++ show randomish 77 relFile = ".test." ++ show randomish
80 78
81 LC.writeFile absFile randomish 79 LC.writeFile absFile randomish
82 r <- W.get $ "http://" ++ show domain </> ".well-known/acme-challenge" </> relFile 80 r <- W.get $ "http://" ++ domainToString domain </> ".well-known/acme-challenge" </> relFile
83 removeFile absFile 81 removeFile absFile
84 return $ r ^. responseBody == randomish 82 return $ r ^. responseBody == randomish
85 83
@@ -152,7 +150,7 @@ register :: URI -> EmailAddress -> ACME (Response LC.ByteString)
152register terms email = sendPayload _newReg (registration email (show terms)) 150register terms email = sendPayload _newReg (registration email (show terms))
153 151
154challengeRequest :: (MonadIO m, MonadState Nonce m, MonadReader Env m) => DomainName -> m (Response LC.ByteString) 152challengeRequest :: (MonadIO m, MonadState Nonce m, MonadReader Env m) => DomainName -> m (Response LC.ByteString)
155challengeRequest = sendPayload _newAuthz . authz . show 153challengeRequest = sendPayload _newAuthz . authz . domainToString
156 154
157statusLine :: Response body -> String 155statusLine :: Response body -> String
158statusLine r = (r ^. responseStatus . statusCode . to show) ++ " " ++ r ^. responseStatus . statusMessage . to (T.unpack . decodeUtf8) 156statusLine r = (r ^. responseStatus . statusCode . to show) ++ " " ++ r ^. responseStatus . statusMessage . to (T.unpack . decodeUtf8)