Crow-HTTPd

Crow-HTTPd Logo

An interactively developed server in Common Lisp

This page, forms and server code may change anytime without interruption; a live SWANK connection can be maintained from Emacs and SLIME to the server, and the system is developed interactively as spare time permits. A particularity of Common Lisp is that it can be used as a scripting language interactively, with wanted modified code blocks reapplied in the live image. These code blocks may be reapplied as compiled bytecode for interpretation (or in this case, using ECL, be recompiled efficiently to C, linked as a dynamic loadable module and reloaded immediately, which typing C-c C-c on a code block in Emacs automates).

Incremental, iterative development is possible, with the possibility of later profiling and optimizing by adding type annotations, etc. Because Common Lisp also allows to decide what is executed at compile or run time, templates can be compiled rather than only interpreted. A feature of this particular HTTPd is that it can also be provided as an unix-OS friendly standalone application that even embeds inside the dynamic code and media files needed for a particular web application it is configured and distributed to run (access to external files can be completely disabled).

Crow-HTTPd also comes with store.lisp, a persistent objects store database with recovery log support. This is implemented around CLOS and MOP (the powerful Common-Lisp Object System and the Meta-Objects Protocol), to make the interface as transparent and integrated as possible. Another embedded utility is a text-mode "captcha" that may help to reduce the success of massive automatic operations like form spamming.

Related links


POST test forms

application/x-www-form-urlencoded

First name:
Last name:
Box 01Box 02Box 03Box 04Box 05Box 06Box 07Box 08Box 09Box 10

multipart/form-data

POST size limit is 20971520 bytes for vhost




Client information

Originator

216.73.216.8:1734

Browser request

GET /test HTTP/1.1
Accept: */*
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Accept-Encoding: gzip, br, zstd, deflate
Host: mmondor.pulsar-zone.net
Via: 1.1 squid-proxy-5b5d847c96-68qpg (squid/6.10)
X-Forwarded-For: 10.3.191.162
Cache-Control: max-age=259200
Connection: keep-alive

Request state information

Method, Path and VHost

GET on "/test" on "mmondor.pulsar-zone.net"

HEADER variables

connection = "keep-alive"
cache-control = "max-age=259200"
x-forwarded-for = "10.3.191.162"
via = "1.1 squid-proxy-5b5d847c96-68qpg (squid/6.10)"
host = "mmondor.pulsar-zone.net"
accept-encoding = "gzip, br, zstd, deflate"
user-agent = "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
accept = "*/*"

Captcha test

                                                                    
                                                                    
                                                                    
       -                                                            
    ------| |             ----             ----                     
   -       |          |---             |---               |         
   |      ||          |               |                  /|         
   |     |  |        --               |                   |         
   |    |   |          ----          -----                |         
   |    |   |              --             ----/           |         
   |   |   |                ---              /             |        
   |  |  /--             ---           --   /              |        
    -|- /             ---                ---             ---        
       -            --                                     |--      
                                                                    
                                                                    
                                                                    

Server information

Crow/0.2.0-7428d4c (Source available here).

HTTP server uptime: 31 days, 23 hours, 22 minutes, 36 seconds

ECL 16.1.2 (NetBSD)

Valid XHTML 1.0 Transitional