This file documents TeamSCOPE, Team Software for a Collaborative Project Environment. Copyright 1999, 2000, 2001 Michigan State Univernsity. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. Introduction ************ This manual documents the internals of TeamSCOPE, Team Software for Collaborative Project Environments. It is written for C programmers and database administrators. A basic familiarity with TeamSCOPE usage, as well as competence in ANSI C89, Java, and ANSI SQL92, is assumed. This manual was last updated for TeamSCOPE 0.9.21. It is now in need of significant updates, but may still be of interest. TeamSCOPE and its documentation were written by Ben Pfaff . Architecture ============ The TeamSCOPE system contains four programs: `scope.cgi' Main program, written in ANSI C89, called by the web server. Compliant with the CGI specification (http://www.ast.cam.ac.uk/~drtr/cgi-spec.html). *Note Introduction: (scope)Top, for more details on using TeamSCOPE's web interface. `scope-db' Utility, written in ANSI C89, used for installation, maintenance, and backup. *Note `scope-db': (install)`scope-db', for more details on `scope-db'. `scope-chat' Chat server, written in ANSI C89, for use with the Java chat client below. `ScopeChat' Chat client, written in Java, which is embedded in TeamSCOPE web pages automatically when two or more users on a team are both using the system at once. TeamSCOPE also makes use of programs which it does not contain. In the table below, the generic names of these programs are given, along with the specific product that TeamSCOPE has been tested with and a description of how TeamSCOPE uses the program. database server (PostgreSQL) Most TeamSCOPE data is kept in a relational database. web server (Apache) Needed for a web server alias and cgi-bin execution rights. TeamSCOPE also creates a per-team web server alias. ftp server (ProFTPd) File accesses should be logged, even if they come from outside the TeamSCOPE system. TeamSCOPE includes patches for a modified version of ProFTPd that logs FTP accesses to the TeamSCOPE database. mail server (Exim) For research purposes, TeamSCOPE can instruct the mail server to change the Reply-To: headers of team members. TeamSCOPE makes use of libgd to draw GIF graphics at runtime, using a patent-free run-length encoding compression algorithm. Database Schema *************** The TeamSCOPE database contains the following tables. For each table, its purpose and the type and purpose of each of its columns is described. See the source code to `scope-db' to see the exact database schema. Table: ACTIVITIES ================= Tracks changes in the filesystem, calendar, and message boards. Each row represents one activity. DATE (datetime) Date and time activity occurred. S1 (int4) Reference to STRINGS. See TYPE below for meaning. If not used for a particular activity, must be set to 0. USR (varchar(8)) Reference to USERS. User who performed activity. GRP (varchar(8)) Reference to GROUPS. Group in which user performed activity (users may belong to multiple groups). CAT (int2) Category of activity. One of the following: AC_CAT_FILE (1) Files and file-related message activities. AC_CAT_MSG_BOARD (2) Message board activities. AC_CAT_EVENT (3) Calendar activities. TYPE (int2) Activity type within a category. For file activities, these are: AC_FILE_DOWNLOAD (1) File download. S1 specifies the downloaded file. AC_FILE_DOWNLOAD_ARCHIVE (2) Directory download as an archive, in `.tar.gz' or `.zip' format. S1 specifies the directory downloaded. AC_FILE_UPLOAD (3) File upload. S1 specifies the file. AC_FILE_DELETE (4) File deletion. S1 is the file. AC_FILE_COPY (5) File copy. S1 is the destination file, S2 is the source file. AC_FILE_RENAME (6) File rename. S1 is the new filename, S2 is the original filename. AC_FILE_MKDIR (7) Make new directory. S1 is the name of the new directory. AC_FILE_RMDIR (8) Remove empty directory. S1 is the name of the removed directory. AC_FILE_CHMOD (9) Change file permissions. S1 is the name of the file whose permissions were changed. AC_FILE_MOVE (10) Move file between directories. S1 is the new filename, S2 is the original filename. AC_FILE_POST (11) Post a message about a file. S1 is the filename of the file commented on, S2 is the message title, REF_SEQ is the message posted. AC_FILE_POST_DELETE (12) Post about a file deleted by poster. Variables as AC_FILE_POST above. AC_FILE_POST_READ (13) Post about a file read by other user. Variables as AC_FILE_READ above. AC_FILE_POST_MAILED (14) User was mailed article. Variables as AC_FILE_READ above. For message board activities, the valid values are: AC_MSG_POST (1) Message board posting. S1 is `//WORKGROUP', where WORKGROUP is the poster's workgroup, for historical reasons. S2 is the message title, and REF_SEQ is the message posted. AC_MSG_DELETE (2) Message board post deleted by poster. Variables are as described in AC_MSG_POST above. AC_MSG_READ (3) Message board post read by other user. Variables are as described in AC_MSG_POST above. AC_MSG_MAILED (4) Message board post mailed to user. Variables are as described in AC_MSG_POST above. S2 (int4) Reference to STRINGS. See TYPE above for meaning. If not used for a particular activity, must be set to 0. REF_SEQ (int4) Reference sequence number. See TYPE above for meaning. If not used for a particular activity, must be set to 0 or null. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. Table: CATCHUP ============== This table records which messages the user has decided don't need to be shown to him again on a per-file basis. Records are updated when the user clicks on a message board `Reset' button. USR (varchar(8)) Reference to USERS. User in question. GRP (varchar(8)) Reference to GROUPS. Group in question. FILE (int4) Reference to STRINGS. Name of the file that the message applies to. For posts in the global message board, this is `//WORKGROUP', where WORKGROUP is the name of the user's workgroup. LAST_READ (int4) Reference to NOTES. Last message shown to the user for this file. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. In this table, (USR, GRP, FILE) form a unique tuple. Table: CONFLICTS ================ This table tracks resource conflicts between calendar events in table EVENTS. Its use is currently not fully defined since resource reservation is only partially implemented at the moment. SEQ1 (int4) Reference to EVENTS. First conflicting event. SEQ2 (int4) Reference to EVENTS. Second conflicting event. SEQ2 must be greater than SEQ1. REPORTED (bool) Set to true when the conflict has been reported to the user. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. In this table, (SEQ1, SEQ2) is a unique tuple. Table: EVENT_RESOURCE ===================== This table associates events with resources reserved for the event duration. EVENT (int4) Reference to EVENTS. RESOURCE (int4) Reference to RESOURCES. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. In this table, (EVENT, RESOURCE) is a unique tuple. Table: EVENTS ============= This table describes calendar events scheduled by each team. START (datetime) Event start date and time. FINISH (datetime) Event end date and time. TITLE (int4) Reference to STRINGS. Event title. NOTE (text) Any notes about event. OWNER (varchar(8)) Event "owner." Must be username of a user in GRP below, null, or the empty string. GRP (varchar(8)) Reference to GROUPS. Group event applies to. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. SOURCE (int4) Source of event. Currently, set to 0 for events entered via web form, 1 for events obtained via MS Project file import. Table: GROUPS ============= This table records information about TeamSCOPE workgroups. GRP (varchar(8)) (primary key) UNIX group name. NAME (text) Long form of group name for presentation purposes. SHAREDDIR (text) Name of shared directory for group. Must begin with `/', may not end with `/'. WEBDIR (text) Name of web directory for group. Must begin with `/', may not end with `/'. Normally this is `SHAREDDIR/www'. MD5 (text[]) Used to save md5sums of group files in order to tell whether they have been modified. (Not currently implemented.) Table: NOTES ============ This table contains all message board postings, whether they are associated with a file or not. FILE (int4) Reference to STRINGS. Associated file for comments on files, or `//WORKGROUP', where WORKGROUP is the workgroup name, for posts to the global message board. GRP (varchar(8)) Reference to GROUPS. Group this note applies to. USR (varchar(8)) Reference to USERS. User who posted this note. CONTENT (text) Note contents. TITLE (int4) Reference to STRINGS. Note title. DATE (datetime) Date and time note was posted. THREAD (int4[]) Sequence numbers of all notes above this note in this thread, including the note itself. For instance, if this note has sequence number 456, and this note is in reply to a note with sequence number 123, which began the thread, then THREAD will have value {123,456}. THREAD has a unique value within this table. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. Table: RESOURCES ================ This table records the name of each shared resource defined by the users. NAME (text) Name of the resource as supplied by the users. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. Table: STRINGS ============== This table stores strings, especially filenames, message titles, and calendar event titles. These are used by reference to sequence number in other tables to reduce redundancy and speed queries. STRING (text) String value. Unique within this table. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. GRP (varchar(8)) If STRING represents a filename and the filename is in the shared directory space of a workgroup, the name of that workgroup. Otherwise, this field must be null or the empty string. Table: SYNC_MAIL ================ This table tracks which articles in the NOTES table have been mailed to users who have EMAILBODY set to 2. It has a single column named SEQ, of type int4, and a single row whose value indicates the minimum sequence number at which to start mailing articles. Table: USELOG ============= This table tracks users' usage of the TeamSCOPE system. Each time a TeamSCOPE page is loaded by a logged-in user, a row is added to the table. USR (varchar(8)) Reference to USERS. Username. T (datetime) Date and time the TeamSCOPE page was loaded. LOC (text) The screen, or location, inside TeamSCOPE that was loaded. See function `dispatch_screen' in `src/main.c' for a list of possible locations. GRP (varchar(8)) Reference to GROUPS. Group that user was logged in as. QUERY (varchar(8)) Complete query string submitted (GET-type queries only). Table: USER_GROUP ================= This table tracks the membership of users in groups. It also stores the activities last shown to users through web and email interfaces. GRP (varchar(8)) Reference to GROUPS. Group name. USR (varchar(8)) Reference to USERS. Username. LAST_READ_WEB (int4) Reference to ACTIVITIES. Last activity shown to the user through the web interface, as confirmed by the user by clicking the *Reset* button. LAST_READ_EMAIL (int4) Reference to ACTIVITIES. Last activity shown to the user through the email interface. SEQ (int4) (primary key) Sequence number obtained from global sequence generator SEQ. SENT_EMAIL (bool) When a new user is added to TeamSCOPE, he is normally sent an email message explaining how the system works. However, this message can be sent at a different time from account creation, so this flag is used to record whether an email has been sent. MAY_ADMIN (bool) True if USR is allowed to act as a group administrator in GRP. In this table, (GRP, USR) form a unique tuple. Table: USERS ============ This table stores a list of usernames and their associated real names, as well as some other per-user settings. USR (varchar(8)) (primary key) Username. NAME (text) Full real-life name of user. EMAIL (text) Upstream email address of user, if any. RECORDABLE (bool) If this copy of TeamSCOPE has email recording enabled (for research purposes), a false value in this field will disable email recording for this user only. IDLE (int4) Stores the user-configurable number of seconds that the user's session may be idle (no page loads) before the user is required to re-authenticate. LAST_USAGE (datetime) Date and time of the last TeamSCOPE page load by this user. EMAILBODY (int4) Preference of USR for being mailed bodies of message board articles. Set to 0 to disable, 1 to enable, 2 to be mailed individual messages as they are posted rather than digests. PRIMARYGRP (varchar(8)) User's default login group. WELCOME (bool) True if user should be shown welcome screen at login time. Table: VERSION ============== This table stores exactly one record that specifies the version of the SCOPE database. This table is used by `scope-db' to decide what actions are necessary to upgrade the TeamSCOPE database from one version to another. This manual documents version 3.0 of the TeamSCOPE database format. MAJOR (int4) Major version number. MINOR (int4) Minor version number. Sequence generator: SEQ ======================= This sequence generator is used to generate a unique sequence for each record in almost every table in the TeamSCOPE database, as described above. Filesystem Layout ***************** The table below lists all the files and directories used by TeamSCOPE. Not listed are non-essential files, for instance documentation. The directories listed are those used under Debian GNU/Linux; you may be using a variant directory structure. `/etc/cron.d/teamscope' Schedules TeamSCOPE daily maintenance tasks. `/etc/init.d/teamscope' Used to start and stop the TeamSCOPE chat server. `/etc/scope/index.shtml.default' Skeleton file copied into new teams' www/index.shtml in their shared folder. `/etc/scope/htaccess.default' Skeleton file copied into new teams' www/.htaccess in their shared folder. `/etc/scope/new-user-mail' Skeleton file mailed to new users for introductory purposes. `/etc/scope/conf' Configuration file edited before compilation and used at runtime by some TeamSCOPE programs. `/etc/scope/reload' Script run by `scope-db update' to restart Apache and Exim. `/etc/scope/shut' When this file exists, TeamSCOPE is disabled. To re-enable access to TeamSCOPE, delete the file. The file's contents, if any, are shown to the user as an explanation of the break in service. *Please note:* Do not edit this file directly. Most settings must not be changed after compilation; to change these settings, you must recompile and reinstall. `/etc/scope/passwd' Password file for web authentication. Format is `USERNAME:PASSWORD', where USERNAME is a UNIX username and PASSWORD is an encrypted password in standard "crypt" format. `/etc/scope/apache.conf' Apache configuration file generated by `scope-db'. This should be included in the main Apache configuration with an include-file directive. `/usr/sbin/scope-chat' TeamSCOPE chat server. `/usr/sbin/scope-db' TeamSCOPE database configuration and maintenance tool. `/usr/lib/scope/' Directory containing TeamSCOPE programs meant to be used by other programs rather than executed directly. `/usr/lib/scope/www/' TeamSCOPE cgi-bin directory. Server alias `/scope' should point to this directory. `/usr/lib/scope/www/scope.cgi' TeamSCOPE cgi-bin executable. Must be setuid root and executable by the group that the webserver runs as, but not executable by other users (mode 4774). `/usr/lib/scope/www/ScopeChat.zip' TeamSCOPE Java chat client. `/usr/lib/scope/mod_auth_scope.so' Apache module implementing TeamSCOPE authentication. `/usr/lib/scope/_int4.o' PostgreSQL extension implementing various operations for arrays of integers. `/usr/lib/scope/text.o' PostgreSQL extension implementing various operations for text strings. `/usr/share/scope/timezones' Generated by `scope-db'. Lists time zones recognized by the local system. `/usr/share/scope/help/' Help files generated from `scope.texi', in mangled HTML format. `/usr/share/scope/www/' Directory containing architecture-invariant parts of the webpage. `/usr/share/scope/www/f/' Directory containing icons used by the file manager. `/usr/share/scope/www/pb/' Directory containing "powered-by icons" for advertising purposes. `/usr/share/scope/www/t/' Directory containing TeamSCOPE title graphic. `/var/lib/scope/trusted/' Directory that stores one file per active TeamSCOPE session. This is "trusted data," read and written as root. Non-root users must not be able to scan this directory or read or write files in it. Permissions 0700 are recommended. `/var/lib/scope/untrusted/' Directory that stores one file per active TeamSCOPE session. This is "untrusted data," read and written after root privileges have been dropped. Non-root users must not be able to see the list of files in this directory. This directory should have permissions 1733. Source Code Overview ******************** The source code to TeamSCOPE is written in GNU style published by the Free Software Foundation. *Note Writing C: (standards)Writing C, for information on GNU coding style. TeamSCOPE uses GNU Autoconf to configure itself for the local system. *Note Introduction: (autoconf)Top, for information on Autoconf. TeamSCOPE also uses GNU Automake to generate Makefiles. *Note Introduction: (automake)Top, for information on Automake. The TeamSCOPE source code is ANSI C89 compliant where possible. Where this is not possible, it attempts to be POSIX compliant. In places where system dependencies are unavoidable, the amount of dependent code has been minimized. As an introduction to the source code, each source file is given a short description in one of the sections below. Screen Managers =============== The files below each implement one or more screens of the TeamSCOPE user interface. They contain a great deal of HTML input-output. They tend to interact with the web library and support library modules a great deal. There is little interaction among these modules. `activity.c' `activity-cgi.c' `activity.h' `activityP.h' "Recent Activities" and activity search functionality. Some parts are useful to `scope-db'; the `scope.cgi'-specific parts are in `activity-cgi.c'. `admin.c' `admin.h' TeamSCOPE administration screen. `calendar.c' `calendar.h' Calendar screen. `files.c' `files.h' File manager. Interacts with message-board module to allow comments on files. `help.c' `help.h' Online help screen handler. `info.c' `info.h' Provides users information on patterns of TeamSCOPE usage by teammates. `messages.c' `messages.h' Message board. Implements both the global message board and per-file message boards in conjunction with file manager. `options.c' `options.h' Options screen. `resource.c' `resource.h' Resource reservation screen. Used by calendar, but separate. `search.c' `search.h' File search screen. Web Library =========== These modules perform functions useful in the context of an HTML-generating CGI-bin web-based program. `auth.c' `auth.h' Performs user authentication. `cgi.c' `cgi.h' Parses CGI parameters in both URL-style and form-data MIME formats in both GET and POST submission styles. Also supports an interactive input style for debugging. Modeled after `CGI.pm' from Perl 5. `cookie.c' `cookie.h' Parses cookies passed to TeamSCOPE by the web server according to the CGI specification. `html.c' `html-cgi.c' `html.h' Two major function families: `html_*()' HTML output helper functions. Especially useful for forms and lists. `url_*()' URL construction functions. Especially helpful with complex query strings. These functions are used throughout the screen manager modules. Parts are useful to `scope-db'; the rest are in `html-cgi.c'. `priv.c' `priv.h' Handles dropping root privileges. `session.c' `session.h' Maintains the illusion of a persistent browser session, in conjunction with the cookie manager, by issuing a session cookie to the client. Support Library =============== These modules provide useful unspecialized services. `alloc.c' `alloc.h' Memory allocation functions, copyright by Ben Pfaff . `avl.c' `avl.h' AVL tree manager code, written by Ben Pfaff , copyright by Free Software Foundation. *Note Introduction: (avl)Top. GNU libavl is also available separately from the GNU ftp site (ftp://ftp.gnu.org/pub/gnu/avl). `datetime.c' `datetime.h' Date and time parsing code. `db.c' `db.h' Database interface. `error.c' `error.h' Displays error messages. `id-list.c' `id-list.h' ADT for lists of alphanumeric IDs, intended for use with user IDs. `identity.c' `identity.h' Dumping ground for information about the current and other users; i.e., username, workgroup, uid, gid, .... `pool.c' `pool.h' Provides pool-based memory allocation layered on top of malloc() and family. Underused in the current TeamSCOPE code. Copyright by Free Software Foundation, written by Ben Pfaff . `std.c' `std.h' String dictionary abstract data type. String dictionaries are used for storing all types of session data. Implemented using AVL trees. `str.c' `str.h' Two important categories of function: string functions Miscellaneous functions for manipulating C-style null-terminated strings. st_*() String abstract data type. Heavily used by screen manager module to construct database queries, etc., and by HTML module to construct URLs. Contains some code copyright by Free Software Foundation. Configuration Files =================== These source files can be modified at compilation time to change runtime behavior. `pref.h' Configures miscellaneous behaviors that change between OS type. `paths.h' Sets paths and files used by TeamSCOPE at runtime. This file should eventually be eliminated in favor of automatic detection at configuration time. `scope.cgi' =========== This is the main source file for `scope.cgi'. It initializes each of the important libraries, passes execution to the appropriate screen manager, then closes down and exits. `scope.cgi' links with the object files from all the source files described above. `scope.cgi.c' Contains `main()' function and screen dispatcher for `scope.cgi'. `scope-db' ========== This is the code for `scope-db', the TeamSCOPE command-line administration tool. It uses several of the files above, but not all of them. `scope-db.c' `scope-db.h' Contains `main()' function and much of the other code for `scope-db'. `mail.c' `mail.h' Functions related to mail sending and receiving. Source Index ************ activity-cgi.c: See ``Screen Managers''. activity.c: See ``Screen Managers''. activity.h: See ``Screen Managers''. activityP.h: See ``Screen Managers''. admin.c: See ``Screen Managers''. admin.h: See ``Screen Managers''. alloc.c: See ``Support Library''. alloc.h: See ``Support Library''. auth.c: See ``Web Library''. auth.h: See ``Web Library''. avl.c: See ``Support Library''. avl.h: See ``Support Library''. calendar.c: See ``Screen Managers''. calendar.h: See ``Screen Managers''. cgi.c: See ``Web Library''. cgi.h: See ``Web Library''. cookie.c: See ``Web Library''. cookie.h: See ``Web Library''. datetime.c: See ``Support Library''. datetime.h: See ``Support Library''. db.c: See ``Support Library''. db.h: See ``Support Library''. error.c: See ``Support Library''. error.h: See ``Support Library''. files.c: See ``Screen Managers''. files.h: See ``Screen Managers''. help.c: See ``Screen Managers''. help.h: See ``Screen Managers''. html-cgi.c: See ``Web Library''. html.c: See ``Web Library''. html.h: See ``Web Library''. id-list.c: See ``Support Library''. id-list.h: See ``Support Library''. identity.c: See ``Support Library''. identity.h: See ``Support Library''. info.c: See ``Screen Managers''. info.h: See ``Screen Managers''. mail.c: See ```scope-db'''. mail.h: See ```scope-db'''. messages.c: See ``Screen Managers''. messages.h: See ``Screen Managers''. options.c: See ``Screen Managers''. options.h: See ``Screen Managers''. paths.h: See ``Configuration Files''. pool.c: See ``Support Library''. pool.h: See ``Support Library''. pref.h: See ``Configuration Files''. priv.c: See ``Web Library''. priv.h: See ``Web Library''. resource.c: See ``Screen Managers''. resource.h: See ``Screen Managers''. scope-db.c: See ```scope-db'''. scope-db.h: See ```scope-db'''. scope.cgi.c: See ```scope.cgi'''. search.c: See ``Screen Managers''. search.h: See ``Screen Managers''. session.c: See ``Web Library''. session.h: See ``Web Library''. std.c: See ``Support Library''. std.h: See ``Support Library''. str.c: See ``Support Library''. str.h: See ``Support Library''. Database Schema Index ********************* AC_CAT_EVENT: See ``Table: ACTIVITIES''. AC_CAT_FILE: See ``Table: ACTIVITIES''. AC_CAT_MSG_BOARD: See ``Table: ACTIVITIES''. AC_FILE_CHMOD (enumeral): See ``Table: ACTIVITIES''. AC_FILE_COPY (enumeral): See ``Table: ACTIVITIES''. AC_FILE_DELETE (enumeral): See ``Table: ACTIVITIES''. AC_FILE_DOWNLOAD (enumeral): See ``Table: ACTIVITIES''. AC_FILE_DOWNLOAD_ARCHIVE (enumeral): See ``Table: ACTIVITIES''. AC_FILE_MKDIR (enumeral): See ``Table: ACTIVITIES''. AC_FILE_MOVE (enumeral): See ``Table: ACTIVITIES''. AC_FILE_POST (enumeral): See ``Table: ACTIVITIES''. AC_FILE_POST_DELETE (enumeral): See ``Table: ACTIVITIES''. AC_FILE_POST_MAILED (enumeral): See ``Table: ACTIVITIES''. AC_FILE_POST_READ (enumeral): See ``Table: ACTIVITIES''. AC_FILE_RENAME (enumeral): See ``Table: ACTIVITIES''. AC_FILE_RMDIR (enumeral): See ``Table: ACTIVITIES''. AC_FILE_UPLOAD (enumeral): See ``Table: ACTIVITIES''. AC_MSG_DELETE (enumeral): See ``Table: ACTIVITIES''. AC_MSG_MAILED (enumeral): See ``Table: ACTIVITIES''. AC_MSG_POST (enumeral): See ``Table: ACTIVITIES''. AC_MSG_READ (enumeral): See ``Table: ACTIVITIES''. ACTIVITIES (table): See ``Table: ACTIVITIES''. CAT (field): See ``Table: ACTIVITIES''. CONTENT (field): See ``Table: NOTES''. DATE (field) <1>: See ``Table: NOTES''. DATE (field): See ``Table: ACTIVITIES''. EMAIL (field): See ``Table: USERS''. EMAILBODY (field): See ``Table: USERS''. EVENT (field): See ``Table: EVENT_RESOURCE''. FILE (field) <1>: See ``Table: NOTES''. FILE (field): See ``Table: CATCHUP''. FINISH (field): See ``Table: EVENTS''. GRP (field) <1>: See ``Table: USER_GROUP''. GRP (field) <2>: See ``Table: STRINGS''. GRP (field) <3>: See ``Table: NOTES''. GRP (field) <4>: See ``Table: GROUPS''. GRP (field) <5>: See ``Table: EVENTS''. GRP (field) <6>: See ``Table: CATCHUP''. GRP (field): See ``Table: ACTIVITIES''. IDLE (field): See ``Table: USERS''. LAST_READ (field): See ``Table: CATCHUP''. LAST_READ_EMAIL (field): See ``Table: USER_GROUP''. LAST_READ_WEB (field): See ``Table: USER_GROUP''. LAST_USAGE (field): See ``Table: USERS''. MAJOR (field): See ``Table: VERSION''. MD5 (field): See ``Table: GROUPS''. MINOR (field): See ``Table: VERSION''. NAME (field) <1>: See ``Table: USERS''. NAME (field) <2>: See ``Table: RESOURCES''. NAME (field): See ``Table: GROUPS''. NOTE (field): See ``Table: EVENTS''. OWNER (field): See ``Table: EVENTS''. PRIMARYGRP (field): See ``Table: USERS''. RECORDABLE (field): See ``Table: USERS''. REF_SEQ (field): See ``Table: ACTIVITIES''. REPORTED (field): See ``Table: CONFLICTS''. RESOURCE (field): See ``Table: EVENT_RESOURCE''. S1 (field): See ``Table: ACTIVITIES''. S2 (field): See ``Table: ACTIVITIES''. SEQ (field) <1>: See ``Table: USER_GROUP''. SEQ (field) <2>: See ``Table: SYNC_MAIL''. SEQ (field) <3>: See ``Table: STRINGS''. SEQ (field) <4>: See ``Table: RESOURCES''. SEQ (field) <5>: See ``Table: NOTES''. SEQ (field) <6>: See ``Table: EVENTS''. SEQ (field) <7>: See ``Table: EVENT_RESOURCE''. SEQ (field) <8>: See ``Table: CONFLICTS''. SEQ (field) <9>: See ``Table: CATCHUP''. SEQ (field): See ``Table: ACTIVITIES''. SEQ1 (field): See ``Table: CONFLICTS''. SEQ2 (field): See ``Table: CONFLICTS''. SHAREDDIR (field): See ``Table: GROUPS''. SOURCE (field): See ``Table: EVENTS''. START (field): See ``Table: EVENTS''. STRING (field): See ``Table: STRINGS''. THREAD (field): See ``Table: NOTES''. TITLE (field) <1>: See ``Table: NOTES''. TITLE (field): See ``Table: EVENTS''. TYPE (field): See ``Table: ACTIVITIES''. USR (field) <1>: See ``Table: USERS''. USR (field) <2>: See ``Table: USER_GROUP''. USR (field) <3>: See ``Table: NOTES''. USR (field) <4>: See ``Table: CATCHUP''. USR (field): See ``Table: ACTIVITIES''. WEBDIR (field): See ``Table: GROUPS''. WELCOME (field): See ``Table: USERS''. Concept Index ************* activities: See ``Table: ACTIVITIES''. ANSI C: See ``Source Code Overview''. Apache: See ``Architecture''. Autoconf: See ``Source Code Overview''. Automake: See ``Source Code Overview''. C89: See ``Source Code Overview''. calendar event: See ``Table: STRINGS''. calendar events: See ``Table: EVENTS''. changes: See ``Table: ACTIVITIES''. comments: See ``Table: NOTES''. conflicts: See ``Table: CONFLICTS''. database server: See ``Architecture''. Exim: See ``Architecture''. file activities: See ``Table: ACTIVITIES''. filenames: See ``Table: STRINGS''. files: See ``Filesystem Layout''. ftp server: See ``Architecture''. full names: See ``Table: USERS''. GIF: See ``Architecture''. GNU coding style: See ``Source Code Overview''. groups <1>: See ``Table: USER_GROUP''. groups: See ``Table: GROUPS''. GRP (field): See ``Table: USELOG''. HTML: See ``Screen Managers''. libgd: See ``Architecture''. LOC (field): See ``Table: USELOG''. log, usage: See ``Table: USELOG''. mail server: See ``Architecture''. Makefile: See ``Source Code Overview''. membership: See ``Table: USER_GROUP''. message board <1>: See ``Table: STRINGS''. message board: See ``Table: NOTES''. message board activities: See ``Table: ACTIVITIES''. names, full: See ``Table: USERS''. notes: See ``Table: NOTES''. POSIX: See ``Source Code Overview''. PostgreSQL <1>: See ``Filesystem Layout''. PostgreSQL: See ``Architecture''. posts: See ``Table: NOTES''. ProFTPd: See ``Architecture''. QUERY (field): See ``Table: USELOG''. real names: See ``Table: USERS''. resource reservation <1>: See ``Table: RESOURCES''. resource reservation <2>: See ``Table: EVENT_RESOURCE''. resource reservation: See ``Table: CONFLICTS''. run-length encoding: See ``Architecture''. scope-chat: See ``Architecture''. scope-db: See ``Architecture''. scope.cgi: See ``Architecture''. ScopeChat: See ``Architecture''. screen manager: See ``Screen Managers''. sequence generator: See ``Sequence generator: SEQ''. shared resource: See ``Table: RESOURCES''. strings: See ``Table: STRINGS''. synchronous mail table: See ``Table: SYNC_MAIL''. system dependency: See ``Source Code Overview''. teams <1>: See ``Table: USER_GROUP''. teams: See ``Table: GROUPS''. trusted data: See ``Filesystem Layout''. unique id: See ``Sequence generator: SEQ''. usage log: See ``Table: USELOG''. usernames: See ``Table: USERS''. USR (field): See ``Table: USELOG''. versioning: See ``Table: VERSION''. web server: See ``Architecture''. WHEN (field): See ``Table: USELOG''. workgroups <1>: See ``Table: USER_GROUP''. workgroups: See ``Table: GROUPS''. ...Table of Contents...