diff options
author | Andrew Cady <d@jerkface.net> | 2016-04-08 23:28:46 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2016-04-08 23:28:46 -0400 |
commit | 76cd49c6568bcf909f6ec31bfb8d6ed320e546bb (patch) | |
tree | 25cca906ee0b7ae04b51506cf9225a544e6daa9b /acme-certify.hs | |
parent | 4a56b2af54b27dc7ae366fc14207eb100d8784a5 (diff) |
Improve HttpProvisioner interface
These still need to be renamed
Diffstat (limited to 'acme-certify.hs')
-rw-r--r-- | acme-certify.hs | 19 |
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 @@ | |||
13 | module Main where | 13 | module Main where |
14 | 14 | ||
15 | import BasePrelude | 15 | import BasePrelude |
16 | import Network.ACME (Keys (..), WritableDir, canProvision, | 16 | import Network.ACME (HttpProvisioner', Keys (..), |
17 | certify, ensureWritableDir, | 17 | canProvision, certify, |
18 | fileProvisioner, genReq, readKeys, (</>)) | 18 | dispatchProvisioner', ensureWritableDir, |
19 | genReq, provisionViaFile, readKeys, | ||
20 | (</>)) | ||
19 | import Network.ACME.Issuer (letsEncryptX1CrossSigned) | 21 | import Network.ACME.Issuer (letsEncryptX1CrossSigned) |
20 | import Network.URI | 22 | import Network.URI |
21 | import OpenSSL | 23 | import OpenSSL |
@@ -56,10 +58,8 @@ data CmdOpts = CmdOpts { | |||
56 | optSkipProvisionCheck :: Bool | 58 | optSkipProvisionCheck :: Bool |
57 | } | 59 | } |
58 | 60 | ||
59 | data Provisioner = ProvisionDir WritableDir | ||
60 | |||
61 | data AcmeCertRequest = AcmeCertRequest { | 61 | data 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 | ||
140 | go' :: URI -> URI -> Maybe EmailAddress -> X509 -> AcmeCertRequest -> IO (Either String ()) | 140 | go' :: URI -> URI -> Maybe EmailAddress -> X509 -> AcmeCertRequest -> IO (Either String ()) |
141 | go' directoryUrl terms email issuerCert acr@AcmeCertRequest{..} = do | 141 | go' 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 |