summaryrefslogtreecommitdiff
path: root/Biz/Que/Host.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Biz/Que/Host.hs')
-rw-r--r--Biz/Que/Host.hs15
1 files changed, 6 insertions, 9 deletions
diff --git a/Biz/Que/Host.hs b/Biz/Que/Host.hs
index 3668a29..f41c683 100644
--- a/Biz/Que/Host.hs
+++ b/Biz/Que/Host.hs
@@ -36,7 +36,6 @@ import Data.HashMap.Lazy (HashMap)
import qualified Data.HashMap.Lazy as HashMap
import qualified Data.Text.Encoding as Encoding
import qualified Data.Text.Lazy as Text.Lazy
-import qualified Data.Text.Lazy.IO as Text.Lazy.IO
import qualified Network.HTTP.Types.Status as Http
import qualified Network.Wai as Wai
import qualified Network.Wai.Handler.Warp as Warp
@@ -58,9 +57,9 @@ main = Exception.bracket startup shutdown <| uncurry Warp.run
let runActionToIO m = runReaderT (runApp m) sync
waiapp <- Scotty.scottyAppT runActionToIO <| routes c
putText "*"
- putText "Que.Host"
+ putText "que"
putText <| "port: " <> (show <| quePort c)
- putText <| "skey: " <> (show <| queSkey c)
+ putText <| "skey: " <> (Text.Lazy.toStrict <| queSkey c)
return (quePort c, waiapp)
shutdown :: a -> IO a
shutdown = pure <. identity
@@ -88,12 +87,12 @@ data Config = Config
{ -- | QUE_PORT
quePort :: Warp.Port,
-- | QUE_SKEY
- queSkey :: FilePath
+ queSkey :: Text.Lazy.Text
}
deriving (Generic, Show)
instance Envy.DefConfig Config where
- defConfig = Config 3000 "/run/skey/que-admin"
+ defConfig = Config 3000 "admin-key"
instance Envy.FromEnv Config
@@ -109,8 +108,7 @@ routes cfg = do
-- GET /_/dash
Scotty.get (Scotty.literal "/_/dash") <| do
authkey <- fromMaybe "" </ Scotty.header "Authorization"
- adminkey <- liftIO <| lchomp </ Text.Lazy.IO.readFile (queSkey cfg)
- if authkey == adminkey
+ if authkey == (Text.Lazy.strip <| queSkey cfg)
then do
d <- app <| gets ques
Scotty.json d
@@ -142,10 +140,9 @@ routes cfg = do
-- Put a value on a que. Returns immediately.
Scotty.post (Scotty.regex quepath) <| do
authkey <- fromMaybe "" </ Scotty.header "Authorization"
- adminkey <- liftIO <| lchomp </ Text.Lazy.IO.readFile (queSkey cfg)
(ns, qp) <- extract
-- Only allow my IP or localhost to publish to '_' namespace
- when ("_" == ns && authkey /= adminkey)
+ when ("_" == ns && authkey /= (Text.Lazy.strip <| queSkey cfg))
<| Scotty.status Http.methodNotAllowed405
>> Scotty.text "not allowed: _ is a reserved namespace"
>> Scotty.finish