[Haskell-cafe] CGI test
Andrew Coppin
andrewcoppin at btinternet.com
Thu Jul 12 13:59:41 EDT 2007
Hugh Perkins wrote:
> Here you go:
>
> module SimpleCgiServer
> where
>
> import IO
> import Char
> import Network
> import Control.Monad
> import System.Process
>
> listensocket = 2000
>
> main = withSocketsDo $ do socket <- listenOn (PortNumber listensocket)
> mapM_ (\_ -> handleconnection socket)
> (iterate (id) ())
> sClose socket
>
> handleconnection socket = do (handle,hostname,portnumber) <- accept socket
> putStrLn (show(hostname) ++ " " ++
> show(portnumber))
> hSetBuffering handle LineBuffering
> line <- hGetLine handle
> let filename = drop( length("GET /") ) line
> htmltoreturn <- runprocess filename
> hPutStr handle htmltoreturn
>
> runprocess filename = do (stdin,stdout,stderr,processhandle) <-
> runInteractiveCommand filename
> waitForProcess processhandle
> contents <- hGetContents stdout
> return contents
Thanks for trying - but that doesn't actually work. (For starters, you
need to prepend the HTTP status code to the data from the CGI script...)
Actually, as it turns out, the script I want to test needs to accept
POST data, and the parsing is really quite complicated, and I want it to
not crash out if I type the URL wrong, and...
Basically, the more I look at this, the more I realise that it really
truely *is* going to be faster to just use a real web server. I thought
I could just implement a tiny subset of it to get a working system, but
it turns out the subset I need isn't so tiny...
Sorry guys.
More information about the Haskell-Cafe
mailing list