wai-middleware-crowd 0.1.2.1 → 0.1.3
raw patch · 5 files changed
+38/−3 lines, 5 filesdep +wai-extradep ~bytestringdep ~http-typesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: wai-extra
Dependency ranges changed: bytestring, http-types
API changes (from Hackage documentation)
- Network.Wai.Middleware.Crowd: instance Binary CrowdState
- Network.Wai.Middleware.Crowd: instance Constructor C1_0CrowdState
- Network.Wai.Middleware.Crowd: instance Constructor C1_1CrowdState
- Network.Wai.Middleware.Crowd: instance Datatype D1CrowdState
- Network.Wai.Middleware.Crowd: instance Generic CrowdState
- Network.Wai.Middleware.Crowd: instance Show CrowdState
+ Network.Wai.Middleware.Crowd: instance Data.Binary.Class.Binary Network.Wai.Middleware.Crowd.CrowdState
+ Network.Wai.Middleware.Crowd: instance GHC.Generics.Generic Network.Wai.Middleware.Crowd.CrowdState
+ Network.Wai.Middleware.Crowd: instance GHC.Show.Show Network.Wai.Middleware.Crowd.CrowdState
Files
- ChangeLog.md +5/−0
- app/Rdr2tls.hs +19/−0
- app/wai-crowd.hs +9/−1
- src/Network/Wai/Middleware/Crowd.hs +0/−1
- wai-middleware-crowd.cabal +5/−1
ChangeLog.md view
@@ -1,3 +1,8 @@+## 0.1.3++* --require-tls command line option+* SECURITY FIX: Don't run the app when redirecting for login+ ## 0.1.2 * --skip-auth command line option
+ app/Rdr2tls.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE OverloadedStrings #-}+-- | rdr2tls as a middleware+module Rdr2tls (rdr2tls) where++import Network.HTTP.Types (status307)+import Network.Wai+import Network.Wai.Request+import qualified Data.ByteString as S++rdr2tls :: Middleware+rdr2tls app req send+ | appearsSecure req = app req send+ | otherwise =+ let dest = S.concat+ [ guessApproot req { isSecure = True }+ , rawPathInfo req+ , rawQueryString req+ ]+ in send $ responseLBS status307 [("Location", dest)] "Redirecting"
app/wai-crowd.hs view
@@ -14,6 +14,7 @@ import Network.Wai.Middleware.Crowd import SimpleOptions import Web.ClientSession (getKey)+import Rdr2tls data BasicSettings = BasicSettings { warpPort :: Int@@ -21,6 +22,7 @@ , crowdRoot :: T.Text , age :: Int , skipAuth :: Bool+ , requireTls :: Bool } deriving Show @@ -52,6 +54,10 @@ ( long "skip-auth" <> help "Turn off Crowd authentication, useful for testing" )+ <*> switch+ ( long "require-tls"+ <> help "Require requests come in over a secure connection (determined via headers)"+ ) data Service = ServiceFiles FileServer | ServiceProxy ReverseProxy@@ -101,4 +107,6 @@ crowdMiddleware <- mkCrowdMiddleware cs app <- serviceToApp manager service putStrLn $ "Listening on port " ++ show warpPort- run warpPort $ if skipAuth then app else crowdMiddleware app+ run warpPort+ $ (if requireTls then rdr2tls else id)+ (if skipAuth then app else crowdMiddleware app)
src/Network/Wai/Middleware/Crowd.hs view
@@ -192,7 +192,6 @@ , cookie ] "Logging in"- app req respond -- | Current version --
wai-middleware-crowd.cabal view
@@ -1,5 +1,5 @@ name: wai-middleware-crowd-version: 0.1.2.1+version: 0.1.3 synopsis: Middleware and utilities for using Atlassian Crowd authentication description: See README license: MIT@@ -44,18 +44,22 @@ hs-source-dirs: app main-is: wai-crowd.hs other-modules: SimpleOptions+ Rdr2tls build-depends: base+ , bytestring , clientsession , gitrev >= 1.0 , http-client , http-client-tls , http-reverse-proxy >= 0.4+ , http-types , optparse-applicative >= 0.11 && < 0.13 , template-haskell , text , transformers , wai , wai-app-static+ , wai-extra , wai-middleware-crowd , warp ghc-options: -threaded -rtsopts -with-rtsopts=-N