mighttpd2 3.0.1 → 3.0.3
raw patch · 2 files changed
+11/−9 lines, 2 filesdep ~wai-logger
Dependency ranges changed: wai-logger
Files
- mighttpd2.cabal +2/−2
- src/WaiApp.hs +9/−7
mighttpd2.cabal view
@@ -1,5 +1,5 @@ Name: mighttpd2-Version: 3.0.1+Version: 3.0.3 Author: Kazu Yamamoto <kazu@iij.ad.jp> Maintainer: Kazu Yamamoto <kazu@iij.ad.jp> License: BSD3@@ -79,7 +79,7 @@ , unix , wai >= 2.0 , wai-app-file-cgi >= 2.0- , wai-logger >= 2.0+ , wai-logger >= 2.1 , warp >= 2.0 if flag(tls) Build-Depends: tls
src/WaiApp.hs view
@@ -5,7 +5,7 @@ import Control.Monad.IO.Class (liftIO) import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS (isPrefixOf, length)-import Network.HTTP.Types (preconditionFailed412, movedPermanently301)+import Network.HTTP.Types (preconditionFailed412, movedPermanently301, urlDecode) import Network.Wai (Application, responseLBS) import Network.Wai.Internal import Network.Wai.Application.Classic@@ -19,29 +19,31 @@ fileCgiApp cspec filespec cgispec revproxyspec um req = case mmp of Fail -> do let st = preconditionFailed412- liftIO $ logger cspec req st Nothing+ liftIO $ logger cspec req' st Nothing fastResponse st defaultHeader "Precondition Failed\r\n" Redirect -> do let st = movedPermanently301- hdr = defaultHeader ++ redirectHeader req+ hdr = defaultHeader ++ redirectHeader req' liftIO $ logger cspec req st Nothing fastResponse st hdr "Moved Permanently\r\n" Found (RouteFile src dst) ->- fileApp cspec filespec (FileRoute src dst) req+ fileApp cspec filespec (FileRoute src dst) req' Found (RouteRedirect src dst) ->- redirectApp cspec (RedirectRoute src dst) req+ redirectApp cspec (RedirectRoute src dst) req' Found (RouteCGI src dst) ->- cgiApp cspec cgispec (CgiRoute src dst) req+ cgiApp cspec cgispec (CgiRoute src dst) req' Found (RouteRevProxy src dst dom prt) -> revProxyApp cspec revproxyspec (RevProxyRoute src dst dom prt) req where (host, _) = hostPort req+ path = urlDecode False $ rawPathInfo req mmp = case getBlock host um of Nothing -> Fail- Just blk -> getRoute (rawPathInfo req) blk+ Just blk -> getRoute path blk fastResponse st hdr body = return $ responseLBS st hdr body defaultHeader = [("Content-Type", "text/plain") ,("Server", softwareName cspec)]+ req' = req { rawPathInfo = path } -- FIXME getBlock :: ByteString -> RouteDB -> Maybe [Route] getBlock _ [] = Nothing