https://github.com/franzinc/aserve Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Copilot + Packages + Security + Code review + Issues + Discussions + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Skills + GitHub Sponsors + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} franzinc / aserve Public * Notifications * Fork 26 * Star 135 AllegroServe, a web server written in Common Lisp www.franz.com/support/documentation/current/doc/aserve/aserve.html License View license 135 stars 26 forks Star Notifications * Code * Issues 2 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights franzinc/aserve This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 20 branches 560 tags Code * Clone HTTPS GitHub CLI [https://github.com/f] Use Git or checkout with SVN using the web URL. [gh repo clone franzi] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @dklayer John Foderaro and dklayer Document the ssl-args argument to net.aserve:start ... 822d741 Apr 28, 2022 Document the ssl-args argument to net.aserve:start The ssl-args argument is the best way to specify the desired features of the ssl server stream as it is always up to date with the version of lisp on which AllegroServe is running. Change-Id: Ib7b780600b6e954e6be015bd1f0c31c08d2f5d89 Reviewed-on: https://gerrit.franz.com:9080/c/aserve/+/20500 Tested-by: Kevin Layer Reviewed-by: Kevin Layer 822d741 Git stats * 798 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time doc Document the ssl-args argument to net.aserve:start Apr 28, 2022 examples More tweaks to get 'stress' to work on all platforms May 20, 2021 htmlgen 1.3.83: remove redundant :title from last commit Apr 26, 2022 test rfe16840: 1.3.81: support restartable-function-input-stream Mar 31, 2022 webactions rfe16311: webactions 1.21: clp_include can take arguments Nov 11, 2019 .gitignore .gitingore: *.gz Feb 17, 2021 LICENSE rfe14185: update copyrights Aug 1, 2016 Makefile bug26559: set up SSL env, if not already Sep 20, 2021 README.md add release notes to doc/aserve.md May 18, 2021 aserve.asd rfe14185: update copyrights Aug 1, 2016 authorize.cl rfe15026: optimize the compile of aserve Jun 22, 2017 cache.cl bug25690: 1.3.71: cache reuses previous accept header Feb 5, 2019 cgi.cl v1.3.75: add support for PATCH HTTP method Sep 17, 2019 chunker.cl rfe16257: add HTTP-STREAM mixin for distinguishing aserve streams Sep 16, 2019 client.cl rfe16840: 1.3.81: support restartable-function-input-stream Mar 31, 2022 creq-stream.cl rfe16431: v1.3.76: do-http-request can return a stream to read the body Apr 7, 2020 decode.cl bug25696: fix line breaks in authentication hashes Feb 5, 2019 headers.cl 1.3.78 - rfe16687 - max header size now 16k May 14, 2021 license-lgpl.txt join from acl50 branch Mar 16, 2000 load.cl rfe16431: v1.3.76: do-http-request can return a stream to read the body Apr 7, 2020 loadonly.cl checkpoint Jun 29, 1999 log.cl rfe15026: optimize the compile of aserve Jun 22, 2017 macs.cl rfe15026: optimize the compile of aserve Jun 22, 2017 main.cl 1.3.83: remove redundant :title from last commit Apr 26, 2022 packages.cl rfe16840: 1.3.81: support restartable-function-input-stream Mar 31, 2022 parse.cl rfe15026: optimize the compile of aserve Jun 22, 2017 playback.cl rfe15026: optimize the compile of aserve Jun 22, 2017 proxy.cl v1.3.75: add support for PATCH HTTP method Sep 17, 2019 publish.cl Remove extra space in HTTP response Oct 21, 2021 queue.cl rfe15026: optimize the compile of aserve Jun 22, 2017 View code [ ] The AllegroServe Webserver Table of contents Description Author Author comments Platforms Dependencies Installation Start lisp Load in the file load.cl Start the server Try out the server Change lisp's current directory to the AllegroServe source Make a distribution Configuration Documentation Quick Start Documentation Load aserve.fasl Load the examples (either the compiled or source version) start the webserver View in a browser Usage notes License Notes Examples and Information Franz Inc. Open Source Info README.md The AllegroServe Webserver Table of contents * Description * Author * Author comments * Documentation * Platforms * Dependencies * Installation * Configuration * Licence * Notes * Examples * Open Source 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 /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 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: * Portable AllegroServe * Source to the if* macro * CL-HTTP 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 opensource@franz.com for these open source projects. We encourage you to take advantage by subscribing to the list. Once you're subscribed, email to opensource@franz.com with your questions, comments, suggestions, and patches. About AllegroServe, a web server written in Common Lisp www.franz.com/support/documentation/current/doc/aserve/aserve.html Resources Readme License View license Stars 135 stars Watchers 18 watching Forks 26 forks Releases 560 tags Packages 0 No packages published Contributors 9 * @dklayer * @marijnh * @rodentrabies * @xach * @antifuchs * @kidd * @melisgl * @tsznuk * @cox-charley Languages * Common Lisp 99.2% * Other 0.8% Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.