diff options
author | Andrew Cady <d@jerkface.net> | 2016-04-10 17:27:31 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2016-04-10 17:27:31 -0400 |
commit | c2dbb32adf34a9bcef54e913f9bc025d846f056e (patch) | |
tree | 2ae11aa46cae6ed7d76af59eeba19cae6d112e49 | |
parent | b059ac7e511c91a855d1bb56d0d7e2d2167d5d61 (diff) |
fix bug where "." as subdomain was not substituted
-rw-r--r-- | acme-certify.hs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/acme-certify.hs b/acme-certify.hs index 3944e2a..73aff51 100644 --- a/acme-certify.hs +++ b/acme-certify.hs | |||
@@ -252,20 +252,19 @@ domainToString = unpack . decodeUtf8 . Text.Domain.Validate.toByteString | |||
252 | 252 | ||
253 | data VHostSpec = VHostSpec DomainName (Either DomainName FilePath) deriving Show | 253 | data VHostSpec = VHostSpec DomainName (Either DomainName FilePath) deriving Show |
254 | makeVHostSpec :: DomainName -> String -> VHostSpec | 254 | makeVHostSpec :: DomainName -> String -> VHostSpec |
255 | makeVHostSpec = make | 255 | makeVHostSpec parentDomain vhostSpecStr = VHostSpec (domainName' vhostName) (left domainName' spec) |
256 | where | 256 | where |
257 | make (domainToString -> parentDomain) (splitSpec -> (sub, spec)) = | 257 | vhostName = appendParent sub |
258 | VHostSpec (domainName' $ sub <..> parentDomain) (makeRef spec) | 258 | (sub, spec) = splitSpec vhostSpecStr |
259 | where | ||
260 | makeRef :: Either String FilePath -> Either DomainName FilePath | ||
261 | makeRef = left (\refSub -> domainName' $ refSub <..> parentDomain) | ||
262 | 259 | ||
263 | splitSpec :: String -> (String, Either String FilePath) | 260 | splitSpec :: String -> (String, Either String FilePath) |
264 | splitSpec (break (== '{') -> (a, b)) = (,) a $ | 261 | splitSpec (break (== '{') -> (a, b)) = (,) a $ |
265 | case b of | 262 | case b of |
266 | ('{':c@('/':_)) -> Right $ takeWhile (/= '}') c | 263 | ('{':c@('/':_)) -> Right $ takeWhile (/= '}') c |
267 | ('{':c) -> Left $ takeWhile (/= '}') c | 264 | ('{':c) -> Left $ takeWhile (/= '}') c & appendParent |
268 | _ -> Right $ "/srv" </> a </> "public_html" | 265 | _ -> Right $ "/srv" </> vhostName </> "public_html" |
266 | |||
267 | appendParent = (<..> domainToString parentDomain) | ||
269 | 268 | ||
270 | data TempRemover = TempRemover { removeTemp :: IO () } | 269 | data TempRemover = TempRemover { removeTemp :: IO () } |
271 | remoteTemp :: String -> FilePath -> String -> IO TempRemover | 270 | remoteTemp :: String -> FilePath -> String -> IO TempRemover |