summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2016-04-10 17:27:31 -0400
committerAndrew Cady <d@jerkface.net>2016-04-10 17:27:31 -0400
commitc2dbb32adf34a9bcef54e913f9bc025d846f056e (patch)
tree2ae11aa46cae6ed7d76af59eeba19cae6d112e49
parentb059ac7e511c91a855d1bb56d0d7e2d2167d5d61 (diff)
fix bug where "." as subdomain was not substituted
-rw-r--r--acme-certify.hs15
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
253data VHostSpec = VHostSpec DomainName (Either DomainName FilePath) deriving Show 253data VHostSpec = VHostSpec DomainName (Either DomainName FilePath) deriving Show
254makeVHostSpec :: DomainName -> String -> VHostSpec 254makeVHostSpec :: DomainName -> String -> VHostSpec
255makeVHostSpec = make 255makeVHostSpec 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
270data TempRemover = TempRemover { removeTemp :: IO () } 269data TempRemover = TempRemover { removeTemp :: IO () }
271remoteTemp :: String -> FilePath -> String -> IO TempRemover 270remoteTemp :: String -> FilePath -> String -> IO TempRemover