diff options
author | Andrew Cady <d@jerkface.net> | 2016-01-20 23:13:58 -0500 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2016-01-20 23:13:58 -0500 |
commit | e5e066657123c6090ee1e673d87c7c24c2af71b5 (patch) | |
tree | 8bd897b36193bc6ba85f56d0fb9c180a95acedad | |
parent | d6bb99752c20ffd7ea1679c651563963a216556c (diff) |
whitespace
-rw-r--r-- | acme.hs | 35 |
1 files changed, 20 insertions, 15 deletions
@@ -1,7 +1,8 @@ | |||
1 | {-# LANGUAGE OverloadedStrings #-} | 1 | {-# LANGUAGE FlexibleContexts #-} |
2 | {-# LANGUAGE RecordWildCards #-} | 2 | {-# LANGUAGE MultiParamTypeClasses #-} |
3 | {-# LANGUAGE ScopedTypeVariables #-} | 3 | {-# LANGUAGE OverloadedStrings #-} |
4 | {-# LANGUAGE FlexibleContexts #-} | 4 | {-# LANGUAGE RecordWildCards #-} |
5 | {-# LANGUAGE ScopedTypeVariables #-} | ||
5 | 6 | ||
6 | -------------------------------------------------------------------------------- | 7 | -------------------------------------------------------------------------------- |
7 | -- | Get a certificate from Let's Encrypt using the ACME protocol. | 8 | -- | Get a certificate from Let's Encrypt using the ACME protocol. |
@@ -10,10 +11,13 @@ | |||
10 | 11 | ||
11 | module Main where | 12 | module Main where |
12 | 13 | ||
14 | import Control.Concurrent (threadDelay) | ||
13 | import Control.Lens hiding ((.=)) | 15 | import Control.Lens hiding ((.=)) |
14 | import Control.Monad | 16 | import Control.Monad |
17 | import Control.Monad.RWS.Strict | ||
15 | import Crypto.Number.Serialize (i2osp) | 18 | import Crypto.Number.Serialize (i2osp) |
16 | import Data.Aeson (ToJSON (..), encode, object, (.=), Value) | 19 | import Data.Aeson (ToJSON (..), Value, encode, object, |
20 | (.=)) | ||
17 | import Data.Aeson.Lens hiding (key) | 21 | import Data.Aeson.Lens hiding (key) |
18 | import qualified Data.Aeson.Lens as JSON | 22 | import qualified Data.Aeson.Lens as JSON |
19 | import Data.ByteString (ByteString) | 23 | import Data.ByteString (ByteString) |
@@ -22,11 +26,15 @@ import qualified Data.ByteString.Base64.URL as Base64 | |||
22 | import qualified Data.ByteString.Char8 as BC | 26 | import qualified Data.ByteString.Char8 as BC |
23 | import qualified Data.ByteString.Lazy as LB | 27 | import qualified Data.ByteString.Lazy as LB |
24 | import qualified Data.ByteString.Lazy.Char8 as LC | 28 | import qualified Data.ByteString.Lazy.Char8 as LC |
29 | import Data.Coerce | ||
25 | import Data.Digest.Pure.SHA (bytestringDigest, sha256) | 30 | import Data.Digest.Pure.SHA (bytestringDigest, sha256) |
26 | import Data.Maybe | 31 | import Data.Maybe |
27 | import qualified Data.Text as T | 32 | import qualified Data.Text as T |
28 | import Data.Text.Encoding (decodeUtf8, encodeUtf8) | 33 | import Data.Text.Encoding (decodeUtf8, encodeUtf8) |
29 | import Network.Wreq (Response, responseHeader, responseBody, responseStatus, statusCode, statusMessage, defaults, checkStatus) | 34 | import Network.Wreq (Response, checkStatus, defaults, |
35 | responseBody, responseHeader, | ||
36 | responseStatus, statusCode, | ||
37 | statusMessage) | ||
30 | import qualified Network.Wreq.Session as WS | 38 | import qualified Network.Wreq.Session as WS |
31 | import OpenSSL | 39 | import OpenSSL |
32 | import OpenSSL.EVP.Digest | 40 | import OpenSSL.EVP.Digest |
@@ -37,14 +45,11 @@ import OpenSSL.RSA | |||
37 | import Options.Applicative hiding (header) | 45 | import Options.Applicative hiding (header) |
38 | import qualified Options.Applicative as Opt | 46 | import qualified Options.Applicative as Opt |
39 | import System.Directory | 47 | import System.Directory |
48 | import System.Exit | ||
40 | import System.Process (readProcess) | 49 | import System.Process (readProcess) |
41 | import Control.Monad.RWS.Strict | ||
42 | import Data.Coerce | ||
43 | import Control.Concurrent (threadDelay) | ||
44 | import System.Exit | ||
45 | 50 | ||
46 | directoryUrl :: String | 51 | directoryUrl :: String |
47 | directoryUrl = "https://acme-v01.api.letsencrypt.org/directory" | 52 | directoryUrl = "https://acme-v01.api.letsencrypt.org/directory" |
48 | 53 | ||
49 | main :: IO () | 54 | main :: IO () |
50 | main = execParser opts >>= go | 55 | main = execParser opts >>= go |
@@ -53,11 +58,11 @@ main = execParser opts >>= go | |||
53 | detailedDescription = "This is a work in progress." | 58 | detailedDescription = "This is a work in progress." |
54 | 59 | ||
55 | data CmdOpts = CmdOpts { | 60 | data CmdOpts = CmdOpts { |
56 | optKeyFile :: String, | 61 | optKeyFile :: String, |
57 | optDomain :: String, | 62 | optDomain :: String, |
58 | optChallengeDir :: String, | 63 | optChallengeDir :: String, |
59 | optEmail :: Maybe String, | 64 | optEmail :: Maybe String, |
60 | optTerms :: Maybe String | 65 | optTerms :: Maybe String |
61 | } | 66 | } |
62 | 67 | ||
63 | defaultTerms :: String | 68 | defaultTerms :: String |