Apache Rivet

The Rivet Team

The Apache Software Foundation


Table of Contents

Introduction to Apache Rivet
Apache Rivet Installation
Apache Child Processes Lifecycle and Request Processing
Rivet Apache Directives
Rivet Tcl Commands and Variables
<?= ... ?> — Shorthand construct for single strings output
abort_code — Returns the code passed to abort_page earlier during the request processing
abort_page — Stops outputting data to web page, similar in purpose to PHP's die command.
apache_log_error — log messages to the Apache error log
apache_table — access and manipulate Apache tables in the request structure.
clock_to_rfc850_gmt — create a rfc850 time from [clock seconds].
cookie — get, set and delete cookies.
debug — A command to print strings, arrays and the values of variables as specified by the arguments.
env — Loads a single "environmental variable" into a Tcl variable.
escape_sgml_chars — escape special SGML characters in a string.
escape_shell_command — escape shell metacharacters in a string.
escape_string — convert a string into escaped characters.
headers — set and parse HTTP headers.
html — construct html tagged text.
http_accept — Parse HTTP Accept header lines
import_keyvalue_pairs — Import an argument list into the named array
include — includes a file into the output stream without modification.
incr0 — increment a variable or set it to 1 if nonexistent.
inspect — Introspection command for Rivet configuration
lassign_array — Assign a list of values to array variables
lempty — Returns 1 if <list> is empty or 0 if it has any elements. This command emulates the TclX lempty command.
lmatch — Look for elements in <list> that match <pattern>
load_cookies — get any cookie variables sent by the client.
load_env — get the request's environment variables.
load_headers — get client request's headers.
load_response — load form variables into an array.
lremove — remove from a list elements matching one or more patterns
makeurl — construct url's based on hostname, port.
no_body — Prevents Rivet from sending any content.
parray — Tcl's parray with html formatting.
parse — parses a Rivet template file.
raw_post — get the unmodified body of a POST request sent by the client.
redirect — Interrupt processing and divert to a new URL
read_file — Read the entire contents of a file and return it as a string.
unescape_string — unescape escaped characters in a string.
upload — handle a file uploaded by a client.
var — get the value of a form variable.
wrap — Split a string on newlines.
wrapline — Split the line into multiple lines by splitting on space characters
xml — XML Fragments creation
Examples and Usage
Rivet Tcl Packages
DIO - Database Interface Objects
DIO — Database Interface Objects
DIODisplay - Database Interface Objects Display Class
DIODisplay — Database Interface Objects Display Class
Session Package
Preparing To Use It
Example Usage
Using Sessions From Your Code
Session Configuration Options
Session Methods
Getting Additional Randomness From The Entropy File
Form: An HTML Form Fields Generation Utility
form — a Tcl command object for creating HTML forms
Calendar Package
Calendar — Utility class the builds and prints a calendar table
XmlCalendar — Prints XML formatted calendar tables
HtmlCalendar — Concrete class derived from XmlCalendar
encode — encode a string replacing every occurrence of characters for which an SGML entity exists
decode — decode an SGML encoded string replacing every entity with the corresponding character
Resources - How to Get Help
Mailing Lists
Web Sites
Bug Tracking System
Editing Rivet Template Files
Rivet Internals
The global Command
Page Parsing, Execution and Caching
Extending Rivet by developing C procedures implementing new commands
Debugging Rivet and Apache
Upgrading from mod_dtcl or NeoWebScript

List of Examples

1. Hello World
2. Generate a Colorful Table
3. Variable Access
4. File Upload
5. File Download
6. XML Messages and Ajax
7. A Calendar Utility

Document revision: $Revision: 1650305 $, last modified 2015-12-04 10:52:09+01:00$ by $Author: mxmanghi $.

Introduction to Apache Rivet

Apache Rivet is a system for creating dynamic web content via a programming language integrated with Apache Web Server. It is designed to be fast, powerful and extensible, consume few system resources, be easy to learn, and to provide the user with a platform that can also be used for other programming tasks outside the web (GUI's, system administration tasks, text processing, database manipulation, XML, and so on). In order to meet these goals, we have chosen the Tcl programming language to combine with the Apache Web Server.

In this manual, we aim to help get you started, and then writing productive code as quickly as possible, as well as giving you ideas on how to best take advantage of Rivet's architecture to create different styles of web site.

This documentation is focused on the current version of Rivet, but still a work in progress, and, like everything else about Apache Rivet, it is Free Software. If you see something that needs improving, and have ideas or suggestions, don't hesitate to let us know. If you want to contribute directly, better yet!


Rivet 2.2 development took advantage from contributions from several users who provided whole new componenents, bug fixes and enhancements.

  • Damon Courtney (Apache Tcl Team member, he originally wrote mod_rivet) contributed with the new ::rivet::redirect command.
  • Harald Oehlmann (now member of the Apache Tcl Team) who wrote package RivetEntitites, command ::rivet::http_accept and filed several bug reports with relative patches
  • Cyril Shtumf filed several important bugfixes
  • Jeff Lawson who patched Rivet parser to add the shorthand syntax for string output and filed several bug reports