summaryrefslogtreecommitdiffhomepage
path: root/HTTP/Server.hs
diff options
context:
space:
mode:
Diffstat (limited to 'HTTP/Server.hs')
-rw-r--r--HTTP/Server.hs21
1 files changed, 13 insertions, 8 deletions
diff --git a/HTTP/Server.hs b/HTTP/Server.hs
index aab3dab..e2165eb 100644
--- a/HTTP/Server.hs
+++ b/HTTP/Server.hs
@@ -10,6 +10,7 @@ module HTTP.Server (runServer) where
import HTTP
import HTTP.ProofOfWork
import HTTP.RateLimit
+import HTTP.Logger
import Types
import Types.Storage
import Tunables
@@ -30,13 +31,17 @@ data ServerState = ServerState
{ obscurerRequest :: TMVar ()
, storageDirectory :: Maybe LocalStorageDirectory
, rateLimiter :: RateLimiter
+ , logger :: Logger
}
newServerState :: Maybe LocalStorageDirectory -> ServerConfig -> IO ServerState
-newServerState d cfg = ServerState
- <$> newEmptyTMVarIO
- <*> pure d
- <*> newRateLimiter cfg d
+newServerState d cfg = do
+ l <- newLogger
+ ServerState
+ <$> newEmptyTMVarIO
+ <*> pure d
+ <*> newRateLimiter cfg d l
+ <*> pure l
runServer :: Maybe LocalStorageDirectory -> ServerConfig -> IO ()
runServer d cfg = do
@@ -66,7 +71,7 @@ motd :: Handler Motd
motd = return $ Motd "Hello World!"
getObject :: ServerState -> StorableObjectIdent -> Maybe ProofOfWork -> Handler (POWGuarded StorableObject)
-getObject st i pow = rateLimit (rateLimiter st) pow i $ do
+getObject st i pow = rateLimit (rateLimiter st) (logger st) pow i $ do
r <- liftIO $ retrieveShare (serverStorage st) dummyShareNum i
liftIO $ requestObscure st
case r of
@@ -74,7 +79,7 @@ getObject st i pow = rateLimit (rateLimiter st) pow i $ do
RetrieveFailure _ -> throwError err404
putObject :: ServerState -> StorableObjectIdent -> Maybe ProofOfWork -> StorableObject -> Handler (POWGuarded StoreResult)
-putObject st i pow o = rateLimit (rateLimiter st) pow i $ do
+putObject st i pow o = rateLimit (rateLimiter st) (logger st) pow i $ do
if validObjectsize o
then do
r <- liftIO $ storeShare (serverStorage st) i (Share dummyShareNum o)
@@ -88,7 +93,7 @@ validObjectsize o = any (sz ==) knownObjectSizes
sz = B.length (fromStorableObject o)
countObjects :: ServerState -> Maybe ProofOfWork -> Handler (POWGuarded CountResult)
-countObjects st pow = rateLimit (rateLimiter st) pow NoPOWIdent $
+countObjects st pow = rateLimit (rateLimiter st) (logger st) pow NoPOWIdent $
liftIO $ countShares $ serverStorage st
-- | 1 is a dummy value; the server does not know the actual share numbers.
@@ -101,7 +106,7 @@ dummyShareNum = 1
obscurerThread :: ServerState -> IO ()
obscurerThread st = do
_ <- obscureShares (serverStorage st)
- putStrLn "obscured shares"
+ logStdout (logger st) "obscured shares"
delay (1000000*60*30)
_ <- atomically $ takeTMVar (obscurerRequest st)
obscurerThread st