orchid-demo 0.0.5 → 0.0.6
raw patch · 2 files changed
+23/−23 lines, 2 filesdep +salvia-extrasdep ~Pipedep ~basedep ~extensible-exceptions
Dependencies added: salvia-extras
Dependency ranges changed: Pipe, base, extensible-exceptions, mtl, network, orchid, salvia, stm
Files
- orchid-demo.cabal +11/−9
- src/Demo.hs +12/−14
orchid-demo.cabal view
@@ -1,21 +1,23 @@ Name: orchid-demo-Version: 0.0.5+Version: 0.0.6 Description: Haskell Wiki Demo Synopsis: Haskell Wiki Demo Category: Network, Web+Cabal-version: >= 1.6 License: BSD3 License-file: LICENSE Author: Sebastiaan Visser Maintainer: sfvisser@cs.uu.nl Build-Type: Simple-Build-Depends: base,- network,- extensible-exceptions,- salvia ==0.0.5,- orchid ==0.0.7,- mtl ==1.1.0.2,- Pipe,- stm+Build-Depends: base ==3.0.*,+ salvia ==0.1.*,+ salvia-extras ==0.1.*,+ orchid ==0.0.*,+ mtl ==1.1.*,+ network ==2.2.*,+ extensible-exceptions ==0.1.*,+ Pipe ==2.1.*,+ stm ==2.1.* Data-Files: data.zip Executable: orchid-demo
src/Demo.hs view
@@ -2,15 +2,13 @@ import Control.Concurrent.STM import Control.Exception.Extensible-import Control.Monad (when)-import Network.Orchid.Wiki (hWiki, FileStoreType (..))-import Network.Protocol.Uri (jail)-import Network.Salvia.Advanced.ExtendedFileSystem (hExtendedFileSystem)-import Network.Salvia.Handlers.Default (hDefault)-import Network.Salvia.Handlers.Login (readUserDatabase, UserPayload)-import Network.Salvia.Handlers.Session (mkSessions, Sessions)-import Network.Salvia.Httpd (defaultConfig, start, listenAddr, listenPort)-import Network.Socket (PortNumber, inet_addr)+import Control.Monad+import Network.Orchid.Wiki+import Network.Protocol.Uri+import Network.Salvia.Handler.ExtendedFileSystem+import Network.Salvia.Handlers+import Network.Salvia.Httpd+import Network.Socket import Paths_orchid_demo import System.Console.GetOpt import System.Environment@@ -45,21 +43,21 @@ stringToFileStore kind = lookup kind [("Darcs", Darcs), ("Git", Git)] run :: Bool -> String -> String -> PortNumber -> FilePath -> FilePath -> IO ()-run serve sfs address port dir users = do+run serve sfs addr prt dir users = do -- Initialize global state. db <- readUserDatabase users ioconfig <- defaultConfig count <- atomically $ newTVar 0 sessions <- mkSessions :: IO (Sessions (UserPayload ()))- addr <- inet_addr address+ addr' <- inet_addr addr case stringToFileStore sfs of Nothing -> putStrLn $ "Error: No such filestore: " ++ sfs Just fs -> do -- Alter config and setup handler.- let config = ioconfig { listenAddr = addr, listenPort = port }+ let cfg = ioconfig { listenAddr = addr', listenPort = prt } let myHandler = if serve then const $ hExtendedFileSystem dir else hWiki fs dir dir db@@ -69,12 +67,12 @@ $ putStrLn "Warning: serving user database to the evil outside world." -- Print status messages and..- putStrLn $ concat ["Listening on ", address, ":", show (listenPort config), "."]+ putStrLn $ concat ["Listening on ", addr, ":", show (listenPort cfg), "."] putStrLn $ concat ["Using ", dir, " as wiki repository."] -- ..off we go! putStrLn "Server started."- start config $ hDefault count sessions myHandler+ start cfg $ hSessionEnv count sessions myHandler extractArchive :: FilePath -> FilePath -> IO () extractArchive from to = do