Skip to content

Commit

Permalink
Fixed rqUri to include query; proper escaping in urlForPage.
Browse files Browse the repository at this point in the history
  • Loading branch information
jgm committed May 10, 2009
1 parent c332b94 commit 851676b
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions Gitit/Framework.hs
Expand Up @@ -41,18 +41,16 @@ where
import Gitit.Server
import Gitit.State
import Gitit.Types
import Text.Pandoc.Shared (substitute)
import Data.Char (toLower)
import Data.Char (toLower, isAscii, isDigit, isLetter)
import Control.Monad.Trans (MonadIO)
import Control.Monad (msum, mzero)
import qualified Data.Map as M
import Data.ByteString.UTF8 (fromString, toString)
import Data.Maybe (fromJust)
import Data.List (intercalate, isSuffixOf, (\\))
import System.FilePath ((<.>), takeExtension, dropExtension)
import Codec.Binary.UTF8.String (decodeString, encodeString)
import Text.Highlighting.Kate
import Network.HTTP (urlEncode)
import Network.URL (decString, encString)

getLoggedInUser :: MonadIO m => Params -> m (Maybe String)
getLoggedInUser params = do
Expand Down Expand Up @@ -86,8 +84,8 @@ unlessNoDelete responder fallback =
handle :: (String -> Bool) -> Method -> (String -> Params -> Web Response) -> Handler
handle pathtest meth responder = do
req <- askRq
let uri = rqUri req
let path' = decodeString $ uriPath uri
let uri = rqUri req ++ rqQuery req
let path' = fromJust $ decString True $ uriPath uri
if pathtest path'
then do
cfg <- getConfig
Expand Down Expand Up @@ -142,8 +140,8 @@ isSourceCode path =
in not . null $ langs

urlForPage :: String -> String
urlForPage page = '/' : (substitute "%2f" "/" $ substitute "%3a" ":" $ urlEncode $ encodeString page)
-- this is needed so that browsers recognize relative URLs correctly
urlForPage page = '/' : encString True (\c -> isAscii c && (isLetter c || isDigit c || c `elem` "/:")) page
-- / and : are left unescaped so that browsers recognize relative URLs and talk pages correctly

pathForPage :: String -> FilePath
pathForPage page = page <.> "page"
Expand Down

0 comments on commit 851676b

Please sign in to comment.