aboutsummaryrefslogtreecommitdiff
path: root/src/Server.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Server.hs')
-rw-r--r--src/Server.hs33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/Server.hs b/src/Server.hs
index 40ae921..622b61b 100644
--- a/src/Server.hs
+++ b/src/Server.hs
@@ -3,27 +3,28 @@ module Server
server
) where
-import Control.Exception.Base (throwIO, catch, bracket)
+import Control.Exception.Base (bracket, catch, throwIO)
import Data.Bits ((.|.))
+import qualified Data.ByteString.Lazy as LBS
+import qualified Data.HashMap.Lazy as HM
import Data.List (find)
import Data.Maybe (fromJust)
import Data.Pool (createPool, destroyAllResources)
import Data.Text.Lazy (Text)
import Data.Text.Lazy.Encoding (decodeUtf8)
-import Database.MySQL.Base (ConnectInfo(connectOptions))
-import Database.MySQL.Base.Types (Option(ReadDefaultGroup))
-import Network.Socket (socket, setSocketOption, bind, listen, close,
- maxListenQueue, getSocketName, inet_addr, Family(AF_UNIX, AF_INET),
- SocketType(Stream), SocketOption(ReuseAddr), Socket, SockAddr(SockAddrUnix,
- SockAddrInet))
+import Database.MySQL.Base (ConnectInfo (connectOptions))
+import Database.MySQL.Base.Types (Option (ReadDefaultGroup))
+import qualified Database.MySQL.Simple as MySQL
+import Network.Socket (Family (AF_INET, AF_UNIX),
+ SockAddr (SockAddrInet, SockAddrUnix), Socket,
+ SocketOption (ReuseAddr), SocketType (Stream), bind,
+ close, getSocketName, inet_addr, listen, maxListenQueue,
+ setSocketOption, socket)
import Network.Wai.Handler.Warp (Port, defaultSettings, runSettingsSocket)
import System.IO (hPutStrLn, stderr)
import System.IO.Error (isDoesNotExistError)
-import System.Posix.Files (removeLink, setFileMode, socketMode, ownerReadMode,
- ownerWriteMode, groupReadMode, groupWriteMode)
-import qualified Data.ByteString.Lazy as LBS
-import qualified Data.HashMap.Lazy as HM
-import qualified Database.MySQL.Simple as MySQL
+import System.Posix.Files (groupReadMode, groupWriteMode, ownerReadMode,
+ ownerWriteMode, removeLink, setFileMode, socketMode)
import Application (app)
@@ -45,16 +46,16 @@ server socketSpec mysqlConnInfo dataDir =
( \(sock, mysql) -> do
listen sock maxListenQueue
hPutStrLn stderr $ "Static files from `" ++ dataDir ++ "'"
- runSettingsSocket defaultSettings sock =<< app mysql dataDir)
+ runSettingsSocket defaultSettings sock =<< app mysql dataDir )
getGroup :: ConnectInfo -> Text
getGroup = decodeUtf8 . getName . fromJust . find isGroup . connectOptions
where
isGroup (ReadDefaultGroup _) = True
- isGroup _ = False
+ isGroup _ = False
-- FIXME: Removing trailing zero added for buggy mysql in Main.hs.
getName (ReadDefaultGroup n) = LBS.takeWhile (0 /=) . LBS.fromStrict $ n
- getName _ = error "Cannot happen"
+ getName _ = error "Cannot happen"
createSocket :: Listen -> IO Socket
@@ -82,7 +83,7 @@ closeSocket sock = do
close sock
case name of
SockAddrUnix path -> removeIfExists path
- _ -> return ()
+ _ -> return ()
removeIfExists :: FilePath -> IO ()