summaryrefslogtreecommitdiff
path: root/acme-certify.hs
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2016-04-08 23:28:46 -0400
committerAndrew Cady <d@jerkface.net>2016-04-08 23:28:46 -0400
commit76cd49c6568bcf909f6ec31bfb8d6ed320e546bb (patch)
tree25cca906ee0b7ae04b51506cf9225a544e6daa9b /acme-certify.hs
parent4a56b2af54b27dc7ae366fc14207eb100d8784a5 (diff)
Improve HttpProvisioner interface
These still need to be renamed
Diffstat (limited to 'acme-certify.hs')
-rw-r--r--acme-certify.hs19
1 files changed, 9 insertions, 10 deletions
diff --git a/acme-certify.hs b/acme-certify.hs
index 951d290..84b7f85 100644
--- a/acme-certify.hs
+++ b/acme-certify.hs
@@ -13,9 +13,11 @@
13module Main where 13module Main where
14 14
15import BasePrelude 15import BasePrelude
16import Network.ACME (Keys (..), WritableDir, canProvision, 16import Network.ACME (HttpProvisioner', Keys (..),
17 certify, ensureWritableDir, 17 canProvision, certify,
18 fileProvisioner, genReq, readKeys, (</>)) 18 dispatchProvisioner', ensureWritableDir,
19 genReq, provisionViaFile, readKeys,
20 (</>))
19import Network.ACME.Issuer (letsEncryptX1CrossSigned) 21import Network.ACME.Issuer (letsEncryptX1CrossSigned)
20import Network.URI 22import Network.URI
21import OpenSSL 23import OpenSSL
@@ -56,10 +58,8 @@ data CmdOpts = CmdOpts {
56 optSkipProvisionCheck :: Bool 58 optSkipProvisionCheck :: Bool
57} 59}
58 60
59data Provisioner = ProvisionDir WritableDir
60
61data AcmeCertRequest = AcmeCertRequest { 61data AcmeCertRequest = AcmeCertRequest {
62 acrDomains :: [(DomainName, Provisioner)], 62 acrDomains :: [(DomainName, HttpProvisioner')],
63 acrSkipDH :: Bool, 63 acrSkipDH :: Bool,
64 acrCertificateDir :: FilePath, 64 acrCertificateDir :: FilePath,
65 acrUserKeys :: Keys 65 acrUserKeys :: Keys
@@ -131,7 +131,7 @@ go CmdOpts { .. } = do
131 (`unless` error "Error: cannot provision files to web server via challenge directory") 131 (`unless` error "Error: cannot provision files to web server via challenge directory")
132 132
133 let req = AcmeCertRequest {..} 133 let req = AcmeCertRequest {..}
134 acrDomains = map (flip (,) (ProvisionDir challengeDir)) requestDomains 134 acrDomains = map (flip (,) (provisionViaFile challengeDir)) requestDomains
135 acrSkipDH = optSkipDH 135 acrSkipDH = optSkipDH
136 acrUserKeys = keys 136 acrUserKeys = keys
137 acrCertificateDir = domainDir 137 acrCertificateDir = domainDir
@@ -139,9 +139,8 @@ go CmdOpts { .. } = do
139 139
140go' :: URI -> URI -> Maybe EmailAddress -> X509 -> AcmeCertRequest -> IO (Either String ()) 140go' :: URI -> URI -> Maybe EmailAddress -> X509 -> AcmeCertRequest -> IO (Either String ())
141go' directoryUrl terms email issuerCert acr@AcmeCertRequest{..} = do 141go' directoryUrl terms email issuerCert acr@AcmeCertRequest{..} = do
142 let domainKeyFile = acrCertificateDir </> "rsa.key" 142 let domainKeyFile = acrCertificateDir </> "rsa.key"
143 let provision = fileProvisioner (fmap un . flip lookup acrDomains) 143 let provision = dispatchProvisioner' acrDomains
144 un (ProvisionDir w) = w
145 144
146 Just domainKeys <- getOrCreateKeys domainKeyFile 145 Just domainKeys <- getOrCreateKeys domainKeyFile
147 dh <- saveDhParams acr 146 dh <- saveDhParams acr