Don't force SSL for tarballs (for cabal-install support)

This commit is contained in:
Michael Snoyman 2016-02-03 12:37:48 +00:00
parent 46c3364a19
commit 6a5a29672d

View File

@ -10,7 +10,7 @@ import Control.Exception (catch)
import Data.WebsiteContent import Data.WebsiteContent
import Import hiding (catch) import Import hiding (catch)
import Language.Haskell.TH.Syntax (Loc(..)) import Language.Haskell.TH.Syntax (Loc(..))
import Network.Wai (Middleware, responseLBS) import Network.Wai (Middleware, responseLBS, rawPathInfo)
import Network.Wai.Logger (clockDateCacher) import Network.Wai.Logger (clockDateCacher)
import Network.Wai.Middleware.ForceSSL (forceSSL) import Network.Wai.Middleware.ForceSSL (forceSSL)
import Network.Wai.Middleware.RequestLogger import Network.Wai.Middleware.RequestLogger
@ -89,9 +89,14 @@ makeApplication echo@False conf = do
return (middleware app, logFunc) return (middleware app, logFunc)
forceSSL' :: AppConfig DefaultEnv Extra -> Middleware forceSSL' :: AppConfig DefaultEnv Extra -> Middleware
forceSSL' app forceSSL' ac app
| extraForceSsl $ appExtra app = forceSSL | extraForceSsl $ appExtra ac = \req send ->
| otherwise = id -- Don't force SSL for tarballs, to provide 00-index.tar.gz and package
-- tarball access for cabal-install
if ".tar.gz" `isSuffixOf` rawPathInfo req
then app req send
else forceSSL app req send
| otherwise = app
nicerExceptions :: Middleware nicerExceptions :: Middleware
nicerExceptions app req send = catch (app req send) $ \e -> do nicerExceptions app req send = catch (app req send) $ \e -> do