Community Profile Readme

The Community Profile is a Unix daemon written in Python that lets
UCSF affiliates prove their identity by providing secrets only they
should know.  The development of the daemon is the basis of the
January 1999 article in Dr Dobb's Journal tentatively titled "Writing
Dynamically Reconfigurable Servers with Python and Unix."  The core
engine should be useable as is although you will need to write
extension modules for your location and data.  An example module and
data feed have been provided.


Requirements:

In order run the code, you'll need Python 1.5.x installed
(http://www.python.org/) and at least one on disk hash compiled in (I
recommend Berkeley DB (http://www.sleepycat.com/) or gdbm
(ftp://prep.ai.mit.edu/pub/gnu/ or any other GNU mirror)).  You'll
also need Sam Rushing's Asynchronous Sockets Library
(http://www.nightmare.com/software.html).


Files:

cprofile - The core engine.  This implements the basic core logic of
the Community Profile.

student_type.py - An example of an extension module.  cprofile
requires the functions match() and description() the data fields
firstname and lastname.  Everything else is optional.

parsestudents - An example of a program that reads a data feed and
creates an extension module database from it.

rawstudentdata - An example data feed that parsestudents handles.

multishelve.py - A module that contains classes to implement logical
shelves created from multiple actual physical shelves.  It also
implements a logical database index created from multiple physical
database indices.

cphelp.py - A helper module for creating extension module databases.
It handles the logic of creating database indices (with various name
translations so that "De La Hoya", "De-La-Hoya" and other permutations
are interchangeable).  It also implements some basic transaction logic
so that if the parser fails, it doesn't affect the current database
files.

selectserver.py - This builds a "request" server on top of the
Asynchronous Sockets Library.  It recognizes a request as a line
terminated by \r\n and upcalls the handling class once for each
request it receives.

stringex.py - An extension string module.  Currently it only
implements a version of split that allows single and double quotes to
escape the seperator.

displaycount.py - A modules that prints an ongoing count without
needing to scroll.
