forked from GitHub/gf-core
gf -server: add a GF version info request
GF version info can now be obtained from http://localhost:41926/version Also removed some unused imports.
This commit is contained in:
@@ -1,15 +1,14 @@
|
|||||||
-- | GF server mode
|
-- | GF server mode
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
module GFServer(server) where
|
module GFServer(server) where
|
||||||
import Data.List(partition,stripPrefix,tails,isInfixOf)
|
import Data.List(partition,stripPrefix,isInfixOf)
|
||||||
import Data.Maybe(mapMaybe)
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import Control.Monad(when)
|
import Control.Monad(when)
|
||||||
import Control.Monad.State(StateT(..),get,gets,put)
|
import Control.Monad.State(StateT(..),get,gets,put)
|
||||||
import Control.Monad.Error(ErrorT(..),Error(..))
|
import Control.Monad.Error(ErrorT(..),Error(..))
|
||||||
import System.Random(randomRIO)
|
import System.Random(randomRIO)
|
||||||
import System.IO(stdout,stderr,hPutStrLn)
|
import System.IO(stderr,hPutStrLn)
|
||||||
import System.IO.Error(try,ioError,isAlreadyExistsError)
|
import System.IO.Error(try,isAlreadyExistsError)
|
||||||
import System.Directory(doesDirectoryExist,doesFileExist,createDirectory,
|
import System.Directory(doesDirectoryExist,doesFileExist,createDirectory,
|
||||||
setCurrentDirectory,getCurrentDirectory,
|
setCurrentDirectory,getCurrentDirectory,
|
||||||
getDirectoryContents,removeFile,removeDirectory)
|
getDirectoryContents,removeFile,removeDirectory)
|
||||||
@@ -19,13 +18,13 @@ import System.FilePath(dropExtension,takeExtension,takeFileName,takeDirectory,
|
|||||||
import System.Posix.Files(getSymbolicLinkStatus,isSymbolicLink,removeLink,
|
import System.Posix.Files(getSymbolicLinkStatus,isSymbolicLink,removeLink,
|
||||||
createSymbolicLink)
|
createSymbolicLink)
|
||||||
#endif
|
#endif
|
||||||
import Control.Concurrent(newMVar,modifyMVar,forkIO)
|
import Control.Concurrent(newMVar,modifyMVar)
|
||||||
import Network.URI(URI(..),parseURI)
|
import Network.URI(URI(..))
|
||||||
import Network.Shed.Httpd(initServer,Request(..),Response(..),queryToArguments,
|
import Network.Shed.Httpd(initServer,Request(..),Response(..),queryToArguments,
|
||||||
noCache)
|
noCache)
|
||||||
--import qualified Network.FastCGI as FCGI -- from hackage direct-fastcgi
|
--import qualified Network.FastCGI as FCGI -- from hackage direct-fastcgi
|
||||||
import Network.CGI(handleErrors,liftIO)
|
import Network.CGI(handleErrors,liftIO)
|
||||||
import FastCGIUtils(outputJSONP,handleCGIErrors,stderrToFile)
|
import FastCGIUtils(handleCGIErrors)--,outputJSONP,stderrToFile
|
||||||
import Text.JSON(encode,showJSON,makeObj)
|
import Text.JSON(encode,showJSON,makeObj)
|
||||||
--import System.IO.Silently(hCapture)
|
--import System.IO.Silently(hCapture)
|
||||||
import System.Process(readProcessWithExitCode)
|
import System.Process(readProcessWithExitCode)
|
||||||
@@ -61,13 +60,14 @@ server port execute1 state0 =
|
|||||||
where
|
where
|
||||||
-- | HTTP server
|
-- | HTTP server
|
||||||
http_server execute1 state0 state cache root =
|
http_server execute1 state0 state cache root =
|
||||||
do putStrLn $ "This is GF version "++showVersion version++"."
|
do putStrLn gf_version
|
||||||
putStrLn buildInfo
|
|
||||||
putStrLn $ "Document root = "++root
|
putStrLn $ "Document root = "++root
|
||||||
putStrLn $ "Starting HTTP server, open http://localhost:"
|
putStrLn $ "Starting HTTP server, open http://localhost:"
|
||||||
++show port++"/ in your web browser."
|
++show port++"/ in your web browser."
|
||||||
initServer port (modifyMVar state . handle state0 cache execute1)
|
initServer port (modifyMVar state . handle state0 cache execute1)
|
||||||
|
|
||||||
|
gf_version = "This is GF version "++showVersion version++".\n"++buildInfo
|
||||||
|
|
||||||
{-
|
{-
|
||||||
-- | FastCGI request handler
|
-- | FastCGI request handler
|
||||||
handle_fcgi execute1 state0 stateM cache =
|
handle_fcgi execute1 state0 stateM cache =
|
||||||
@@ -139,6 +139,7 @@ handle state0 cache execute1
|
|||||||
"/gfshell" -> inDir command
|
"/gfshell" -> inDir command
|
||||||
"/parse" -> parse (decoded qs)
|
"/parse" -> parse (decoded qs)
|
||||||
"/cloud" -> inDir cloud
|
"/cloud" -> inDir cloud
|
||||||
|
"/version" -> return (ok200 gf_version)
|
||||||
'/':rpath ->
|
'/':rpath ->
|
||||||
case (takeDirectory path,takeFileName path,takeExtension path) of
|
case (takeDirectory path,takeFileName path,takeExtension path) of
|
||||||
(_ ,_ ,".pgf") -> wrapCGI $ PS.cgiMain' cache path
|
(_ ,_ ,".pgf") -> wrapCGI $ PS.cgiMain' cache path
|
||||||
|
|||||||
Reference in New Issue
Block a user