• Stars
    star
    190
  • Rank 203,739 (Top 5 %)
  • Language
    Common Lisp
  • License
    Other
  • Created over 15 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

AllegroServe, a web server written in Common Lisp

The AllegroServe Webserver

Table of contents

Description

AllegroServe has these components:

  • HTTP/1.1 compliant web server capable of serving static and dynamic pages.
  • HTML generation facility that seamlessly merges html tag printing with computation of dynamic content. The HTML generator matches perfectly with the HTML parser (which is in another project) to allow web pages to be read, modifed in Lisp and then regenerated.
  • HTTP client functions to access web sites and retrieve data.
  • Secure Socket Layer (SSL) for both the server and client.
  • Web Proxy facility with a local cache.
  • Comprehensive regression test suite that verifies the functionality of the client, server, proxy and SSL.
  • High performance for static and dynamic web page delivery.
  • Licensed under terms that ensure that it will always be open source and that encourages its use in commercial settings.
  • A publish function that builds a page from static and dynamic data and handles caching of the result.
  • Access control mechanisms for publishing directories that gives the webmaster the ability to specify which files and directories in the tree should be visible.
  • The ability to run external CGI programs.
  • An improved virtual hosting system that supports different logging and error streams for each virtual host.

We've recently added these features:

  • The ability to compress and inflate files on the fly.
  • Support for chunking and HTTP/1.1.
  • Security up through TLS 1.0 (SSL 3.1).

See the latest Allegro CL Release Notes for more information on AllegroServe changes.

Author

John Foderaro, Franz Inc.

Author comments

The server part of AllegroServe can be used either as a standalone web server or a module loaded into an application to provide a user interface to the application. AllegroServe's proxy ability allows it to run on the gateway machine between a company's internal network and the internet. AllegroServe's client functions allow Lisp programs to explore the web.

AllegroServe was also written and open sourced as a way to demonstrate network programming in Allegro Common Lisp. AllegroServe was written according to a certain coding standard to demonstrate how Lisp programs are more readable if certain macros and special forms are avoided.

Platforms

AllegroServe works on all versions of Allegro Common Lisp since 6.0.

Dependencies

There are no dependences for AllegroServe. In order to run the allegroserve test suite you'll need to have the tester module (available at https://github.com/franzinc) loaded.

Installation

Start lisp

This should work in a lisp running in a :case-insensitive-upper or :case-sensitive-lower mode, although we do most of our running and testing in a :case-sensitive-lower lisp. The current case mode is the value of excl:*current-case-mode*

Load in the file load.cl

user(1):  :ld <path-to-aserve>/load.cl

it will compile and and load all of AllegroServe, and it will load in the examples file too.

Start the server

user(2):  (net.aserve:start :port 8000)

You can omit the port argument on Windows where any process can allocate port 80 (as long as it's unused).

Try out the server

Go to a web browser and try http://your-machine-name:8000/. If the web browser is on the same machine as AllegroServe is running you can use http://localhost:8000/ as well. Now that you've verified that it works, you'll want to create an aserve.fasl that you can load into your application.

Change lisp's current directory to the AllegroServe source

user(3): :cd  <path-to-aserve>

Make a distribution

user(4): (make-aserve.fasl)

Now you'll find aserve.fasl in the aserve source directory.

Configuration

See the doc/aserve.md file that is part of this project for more information on configuring AllegroServe.

Documentation

For complete documentation see the contents of the doc directory, which is part of this project or visit the online version of the AllegroServe documentation.

Quick Start Documentation

cd to the directory containing the distribution and start Allegro cl (or start Allegro and use the toplevel :cd command to cd to the directory containing the aserve).

Load aserve.fasl

user(1): :ld aserve.fasl

Load the examples (either the compiled or source version)

user(2): :ld examples/examples

start the webserver

user(3):  (net.aserve:start :port 8010)

View in a browser

http://localhost:8010/

Usage notes

  • The steps to load the examples and start the server are interchangeable.
  • If you're running on a PC (or running as root on Unix) you can allocate port 80, so you don't have to specify a port when running the net.aserve:start function.
  • See the doc directory that is part of this project for more detailed usage documenation.

License

The aserve source code is licensed under the terms of the Lisp Lesser GNU Public License, known as the LLGPL. The LLGPL consists of a preamble and the LGPL. Where these conflict, the preamble takes precedence. This project is referenced in the preamble as the LIBRARY.

Notes

Webactions is a session-based framework for building web sites mixing static and dynamic content that builds upon AllegroServe and is part of this project.

See the webactions/doc/webactions.md file for more information.

For other links that may be of interest are:

Examples and Information

See the doc/tutorial.md file and the contents under the examples directory that are part of this project for more examples on how to work with AllegroServe.

Franz Inc. Open Source Info

This project's homepage is https://github.com/franzinc/aserve. There is an informal community support and development mailing list [email protected] for these open source projects. We encourage you to take advantage by subscribing to the list. Once you're subscribed, email to [email protected] with your questions, comments, suggestions, and patches.

More Repositories

1

clim2

The Common Lisp Interface Manager
Common Lisp
125
star
2

imap

POP, IMAP and SMTP client support for Common Lisp
Common Lisp
46
star
3

nfs

Allegro NFS Server for Microsoft Windows, written in Common Lisp
Common Lisp
46
star
4

agraph-python

AllegroGraph Python client
Python
38
star
5

agraph-java-client

The AllegroGraph client interface
Java
38
star
6

uri

Uniform Resource Locators for Common Lisp
Common Lisp
20
star
7

docker-agraph

Run AllegroGraph in a Docker container
Shell
19
star
8

agraph-examples

Examples and support files for using AllegroGraph in advanced scenarios
Jupyter Notebook
19
star
9

net-xml-generator

A Pretty Printing XML Generator for Common Lisp
Common Lisp
18
star
10

clx

Common Lisp X11 interface
Common Lisp
16
star
11

solr

Allegro Common Lisp interface to Solr
XSLT
15
star
12

maild

Allegro Maild, an SMTP server written in Common Lisp
Common Lisp
15
star
13

zlib

Compression library for Common Lisp
C
13
star
14

eli

Allegro Common Lisp-GNU Emacs Interface
Emacs Lisp
12
star
15

cl-imagemagick

A Common Lisp layer for ImageMagick
C
11
star
16

cl-honeycomb

Allegro CL Interface to Honeycomb
Common Lisp
10
star
17

cl-env

Portable compiler environments for Common Lisp
Common Lisp
8
star
18

xmlutils

XML/HTML parsers for Common Lisp
Common Lisp
8
star
19

aftpd

Allegro FTP, an FTP daemon written in Common Lisp
Common Lisp
8
star
20

cl-typesetting

A fork of cl-typesetting and cl-pdf that run better in Allegro Common Lisp
Common Lisp
7
star
21

cl-faq

Allegro Common Lisp FAQ
7
star
22

st-json

Common Lisp
6
star
23

loop

The Allegro Common Lisp LOOP macro
Common Lisp
6
star
24

ntservice

Run Common Lisp programs as a service on Windows
Common Lisp
6
star
25

tester

Tester framework for Common Lisp
Common Lisp
5
star
26

agraph-tutorials

AllegroGraph tutorials
Jupyter Notebook
4
star
27

acl-examples

Allegro Common Lisp example code
Common Lisp
3
star
28

acl-llm

Common Lisp
2
star
29

openssl-build

Script to build OpenSSL on Windows.
Shell
2
star
30

sftp

SFTP API for Allegro Common Lisp
C
2
star
31

telent-clx

A git mirror of the darcs telent CLX repository
Common Lisp
2
star
32

trivial-ldap

fork of https://github.com/rwiker/trivial-ldap
Common Lisp
2
star
33

emacsinstaller

NSIS wrapper for the standard GNU Emacs for Windows binaries
NSIS
2
star
34

gtk

GTK2 layer for Allegro Common Lisp
Common Lisp
2
star
35

pgsql

A PostgreSQL database interface for ACL contributed by Barton Gawboy
C
1
star
36

mailfilter

Mail client filtering for MH/nmh
Common Lisp
1
star
37

franzinc.github.com

The repo for http://franzinc.github.com.. see http://pages.github.com/ for more info.
HTML
1
star