]> code.citadel.org Git - citadel.git/commitdiff
* Began reviewing, updating, and HTML-izing the documentation
authorArt Cancro <ajc@citadel.org>
Thu, 23 Jan 2003 04:42:35 +0000 (04:42 +0000)
committerArt Cancro <ajc@citadel.org>
Thu, 23 Jan 2003 04:42:35 +0000 (04:42 +0000)
citadel/ChangeLog
citadel/docs/citadel.html [new file with mode: 0644]

index 73d13cb0d21e20f8d37b1ba4cabff30f634d5965..ac2b2ac4c5b017702436e741cc7fd2334c8ee2ff 100644 (file)
@@ -1,4 +1,7 @@
  $Log$
+ Revision 601.124  2003/01/23 04:42:33  ajc
+ * Began reviewing, updating, and HTML-izing the documentation
+
  Revision 601.123  2003/01/22 03:53:24  ajc
  * More reliablility hacks for autologin mode, and better quarantine of
    autologin code when it's disabled.
@@ -4440,4 +4443,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
 
 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
        * Initial CVS import
-
diff --git a/citadel/docs/citadel.html b/citadel/docs/citadel.html
new file mode 100644 (file)
index 0000000..dc72787
--- /dev/null
@@ -0,0 +1,950 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title>Citadel/UX Documentation</title>
+                                         
+  <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+</head>
+<body>
+           
+<div align="center">      
+<h1>Citadel/UX</h1>
+           
+<h2>a messaging and collaboration platform for BBS and groupware applications</h2>
+      Copyright &copy;1987-2003 by the Citadel development team:<br>
+      <br>
+           
+<table cellpadding="2" cellspacing="2" border="0" align="center">
+        <tbody>
+          <tr>
+            <td valign="top">Steven M. Bellovin<br>
+            </td>
+            <td valign="top"><i>author of public domain 'parsedate' function<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Nathan Bryant<br>
+            </td>
+            <td valign="top"><i>build system, security, database access,
+and   others<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Art Cancro<br>
+            </td>
+            <td valign="top"><i>overall system design and lead developer<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Brian Costello<br>
+            </td>
+            <td valign="top"><i>cosmetics, additional commands<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Michael Hampton<br>
+            </td>
+            <td valign="top"><i>client software development<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Andru Luvisi<br>
+            </td>
+            <td valign="top"><i>troubleshooting and development assistance<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Daniel Malament<br>
+            </td>
+            <td valign="top"><i>string compare function for IMAP server<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Stu Mark<br>
+            </td>
+            <td valign="top"><i>additional client features, IGnet protocol
+ design<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Ben Mehlman<br>
+            </td>
+            <td valign="top"><i>additional client features<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Ari Samson<br>
+            </td>
+            <td valign="top"><i>assistance with project management<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">John Walker<br>
+            </td>
+            <td valign="top"><i>author of public domain base64 encoder/decoder<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Steve Williams<br>
+            </td>
+            <td valign="top"><i>documentation<br>
+            </i></td>
+          </tr>
+          <tr>
+            <td valign="top">Ethan Young<br>
+            </td>
+            <td valign="top"><i>IGnet protocol design<br>
+            </i></td>
+          </tr>
+                       
+  </tbody>      
+</table>
+      <br>
+           
+<div align="justify">The entire package is open source; you can redistribute
+   and/or modify it under the terms of the GNU General Public License as
+published    by the Free Software Foundation; either version 2 of the License,
+or (at   your option) any later version.<br>
+      <br>
+      This program is distributed in the hope that it will be useful, but 
+WITHOUT   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
+or FITNESS   FOR A PARTICULAR PURPOSE.&nbsp; See the GNU General Public License 
+for more   details.<br>
+      </div>
+      <br>
+           
+<div align="justify">You should have received a copy of the GNU General Public
+   License along with this program; if not, write to the Free Software Foundation,
+   Inc., 675 Mass Ave, Cambridge, MA 02139, USA.<br>
+      <br>
+      For more information, visit either of these locations on the web:<br>
+           
+<ul>
+        <li>The Citadel home page: <a href="http://www.citadel.org">http://www.citadel.org</a></li>
+        <li>UNCENSORED! BBS, the home of Citadel: <a
+ href="http://uncensored.citadel.org">http://uncensored.citadel.org</a></li>
+           
+</ul>
+           
+<hr width="100%" size="2">      
+<h2 align="center">Table of Contents</h2>
+         
+<ol>
+       <li><a href="#GPL">Warranty</a></li>
+       <li><a href="#Installation_Guide">Installation Guide</a></li>
+       <li> Baz</li>
+       <li> Eek</li>
+         
+</ol>
+      <br>
+           
+<hr width="100%" size="2"><br>
+           
+<h2 align="center"><a name="GPL"></a>GNU General Public License<br>
+     </h2>
+     </div>
+            
+<p>  Version 2, June 1991  </p>
+            
+<pre>Copyright (C) 1989, 1991 Free Software Foundation, Inc.  <br>59 Temple Place - Suite 330, Boston, MA  02111-1307, USA<br><br>Everyone is permitted to copy and distribute verbatim copies<br>of this license document, but changing it is not allowed.<br></pre>
+              
+<h3 align="justify">Preamble</h3>
+         
+<div align="justify">  </div>
+         
+<p align="justify">   The licenses for most software are designed to take 
+  away your freedom to share and change it.  By contrast, the GNU General 
+Public  License is intended to guarantee your freedom to share and change 
+free software--to  make sure the software is free for all its users.  This 
+General Public License  applies to most of the Free Software Foundation's 
+software and to any other  program whose authors commit to using it.  (Some 
+other Free Software Foundation  software is covered by the GNU Library General 
+Public License instead.)  You can apply it to your programs, too.  </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">    When we speak of free software, we are referring to 
+  freedom, not price.  Our General Public Licenses are designed to make sure 
+  that you have the freedom to distribute copies of free software (and charge 
+  for this service if you wish), that you receive source code or can get it
+  if you want it, that you can change the software or use pieces of it in
+new free programs; and that you know you can do these things.  </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">   To protect your rights, we need to make restrictions 
+  that forbid anyone to deny you these rights or to ask you to surrender the
+  rights. These restrictions translate to certain responsibilities for you
+ if you distribute copies of the software, or if you modify it.  </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">   For example, if you distribute copies of such a program, 
+  whether gratis or for a fee, you must give the recipients all the rights 
+ that you have.  You must make sure that they, too, receive or can get the 
+  source code.  And you must show them these terms so they know their rights. 
+   </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">   We protect your rights with two steps: (1) copyright 
+  the software, and (2) offer you this license which gives you legal permission 
+  to copy, distribute and/or modify the software.  </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">   Also, for each author's protection and ours, we want 
+  to make certain that everyone understands that there is no warranty for 
+this  free software.  If the software is modified by someone else and passed 
+on,  we want its recipients to know that what they have is not the original, 
+so  that any problems introduced by others will not reflect on the original
+  authors' reputations.   </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">   Finally, any free program is threatened constantly by
+software patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the program
+proprietary.  To prevent this, we have made it clear that any  patent must
+be licensed for everyone's free use or not licensed at all.  </p>
+         
+<div align="justify"> </div>
+         
+<p align="justify">   The precise terms and conditions for copying, distribution 
+  and modification follow.  </p>
+         
+<div align="justify">   </div>
+         
+<h3>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h3>
+         
+<div align="justify">   </div>
+         
+<p align="justify">  <strong>0.</strong>  This License applies to any program 
+  or other work which contains a notice placed by the copyright holder saying 
+  it may be distributed under the terms of this General Public License.  The
+  "Program", below, refers to any such program or work, and a "work based 
+on  the Program" means either the Program or any derivative work under copyright 
+  law: that is to say, a work containing the Program or a portion of it, either
+  verbatim or with modifications and/or translated into another language. 
+ (Hereinafter, translation is included without limitation in the term "modification".) 
+  Each licensee is addressed as "you". </p>
+         
+<p align="justify">  Activities other than copying, distribution and modification 
+  are not covered by this License; they are outside its scope.  The act of
+  running the Program is not restricted, and the output from the Program
+is   covered only if its contents constitute a work based on the Program
+(independent   of having been made by running the Program). Whether that
+is true depends   on what the Program does.  </p>
+         
+<p align="justify">  <strong>1.</strong>  You may copy and distribute verbatim 
+  copies of the Program's source code as you receive it, in any medium, provided 
+  that you conspicuously and appropriately publish on each copy an appropriate
+   copyright notice and disclaimer of warranty; keep intact all the notices 
+  that refer to this License and to the absence of any warranty; and give 
+any  other recipients of the Program a copy of this License along with the 
+Program.  </p>
+         
+<p align="justify">  You may charge a fee for the physical act of transferring 
+  a copy, and you may at your option offer warranty protection in exchange 
+ for a fee. </p>
+         
+<p align="justify">  <strong>2.</strong>  You may modify your copy or copies 
+  of the Program or any portion of it, thus forming a work based on the Program, 
+  and copy and distribute such modifications or work under the terms of Section 
+  1 above, provided that you also meet all of these conditions: </p>
+         
+<p align="justify">  </p>
+         
+<div align="justify">     
+<ul>
+       <li><strong>a)</strong>      You must cause the modified files to
+carry   prominent notices      stating that you changed the files and the
+date of   any change.                           
+    <p> </p>
+       </li>
+       <li><strong>b)</strong>      You must cause any work that you distribute 
+  or publish, that in      whole or in part contains or is derived from the 
+  Program or any      part thereof, to be licensed as a whole at no charge 
+ to all third      parties under the terms of this License.              
+             
+    <p> </p>
+       </li>
+       <li><strong>c)</strong>      If the modified program normally reads
+ commands  interactively      when run, you must cause it, when started running
+ for such      interactive use in the most ordinary way, to print or display
+ an       announcement including an appropriate copyright notice and a  
+   notice  that there is no warranty (or else, saying that you provide  
+   a warranty)  and that users may redistribute the program under      these
+ conditions, and telling the user how to view a copy of this      License.
+  (Exception: if the Program itself is interactive but      does not normally
+ print such an announcement, your work based on      the Program is not required
+ to print  an announcement.) </li>
+         
+</ul>
+       These requirements apply to the modified work as a whole.  If identifiable 
+  sections of that work are not derived from the Program, and can be reasonably 
+  considered independent and separate works in themselves, then this License, 
+  and its terms, do not apply to those sections when you distribute them as
+  separate works.  But when you distribute the same sections as part of a
+whole  which is a work based on the Program, the distribution of the whole 
+must be on the terms of this License, whose permissions for other licensees 
+extend  to the entire whole, and thus to each and every part regardless of 
+who wrote  it. </div>
+         
+<p align="justify">  Thus, it is not the intent of this section to claim rights
+or contest your rights to work written entirely by you; rather, the intent
+is to exercise the right to control the distribution of derivative or collective
+works based on the Program. </p>
+         
+<p align="justify">  In addition, mere aggregation of another work not based 
+  on the Program with the Program (or with a work based on the Program) on 
+ a volume of a storage or distribution medium does not bring the other work 
+ under the scope of this License.  </p>
+         
+<p align="justify">  <strong>3.</strong>   You may copy and distribute the 
+  Program (or a work based on it, under Section 2) in object code or executable 
+  form under the terms of Sections 1 and 2 above provided that you also do 
+ one of the following:   <!-- we use this doubled UL to get the sub-sections indented, -->
+   <!-- while making the bullets as unobvious as possible. --> </p>
+         
+<div align="justify">     
+<ul>
+       <li><strong>a)</strong>      Accompany it with the complete corresponding 
+  machine-readable      source code, which must be distributed under the terms
+  of Sections      1 and 2 above on a medium customarily used for software 
+ interchange; or,                           
+    <p> </p>
+       </li>
+       <li><strong>b)</strong>      Accompany it with a written offer, valid
+  for at least three      years, to give any third party, for a charge no
+more  than your      cost of physically performing source distribution, a
+complete        machine-readable copy of the corresponding source code, to
+be      distributed under the terms of Sections 1 and 2 above on a medium
+     customarily used for software interchange; or,                     
+     
+    <p> </p>
+       </li>
+       <li><strong>c)</strong>       Accompany it with the information you
+ received  as to the offer      to distribute corresponding source code.
+ (This alternative  is      allowed only for noncommercial distribution and
+only if you      received the program in object code or executable form with
+such      an offer, in accord with Subsection b above.) </li>
+         
+</ul>
+       The source code for a work means the preferred form of the work for
+ making  modifications to it.  For an executable work, complete source code
+ means all the source code for all modules it contains, plus any associated
+ interface  definition files, plus the scripts used to control compilation
+ and installation  of the executable.  However, as a special exception, the
+ source code distributed  need not include anything that is normally distributed
+ (in either source or binary form) with the major components (compiler, kernel,
+ and so on) of the operating system on which the executable runs, unless
+that  component itself  accompanies the executable. </div>
+         
+<p align="justify">  If distribution of executable or object code is made 
+  by offering access to copy from a designated place, then offering equivalent
+   access to copy the source code from the same place counts as distribution 
+  of the source code, even though third parties are not compelled to copy 
+the  source along with the object code. </p>
+         
+<p align="justify">  <strong>4.</strong>  You may not copy, modify, sublicense, 
+  or distribute the Program except as expressly provided under this License. 
+   Any attempt otherwise to copy, modify, sublicense or distribute the Program 
+  is void, and will automatically terminate your rights under this License.
+   However, parties who have received copies, or rights, from you under this 
+  License will not have their licenses terminated so long as such parties 
+remain  in full compliance.  </p>
+         
+<p align="justify">  <strong>5.</strong>   You are not required to accept 
+  this License, since you have not signed it.  However, nothing else grants 
+  you permission to modify or distribute the Program or its derivative works. 
+   These actions are prohibited by law if you do not accept this License. 
+ Therefore, by modifying or distributing the Program (or any work based on 
+ the Program), you indicate your acceptance of this License to do so, and 
+all its terms and conditions for copying, distributing or modifying the Program 
+ or works based on it.  </p>
+         
+<p align="justify">  <strong>6.</strong>  Each time you redistribute the Program
+(or any work based on the Program), the recipient automatically receives a
+license from the original licensor to copy, distribute or modify the Program 
+  subject to these terms and conditions.  You may not impose any further restrictions
+  on the recipients' exercise of the rights granted herein. You are not responsible
+  for enforcing compliance by third parties to this License.  </p>
+         
+<p align="justify">  <strong>7.</strong>  If, as a consequence of a court 
+  judgment or allegation of patent infringement or for any other reason (not 
+  limited to patent issues), conditions are imposed on you (whether by court 
+  order, agreement or otherwise) that contradict the conditions of this License, 
+  they do not excuse you from the conditions of this License.  If you cannot
+   distribute so as to satisfy simultaneously your obligations under this
+License  and any other pertinent obligations, then as a consequence you may
+not distribute  the Program at all.  For example, if a patent license would
+not permit royalty-free  redistribution of the Program by all those who receive
+copies directly or  indirectly through you, then the only way you could satisfy
+both it and this  License would be to refrain entirely from distribution
+of the Program. </p>
+         
+<p align="justify">  If any portion of this section is held invalid or unenforceable 
+  under any particular circumstance, the balance of the section is intended 
+  to apply and the section as a whole is intended to apply in other circumstances.
+    </p>
+         
+<p align="justify">  It is not the purpose of this section to induce you to
+infringe any patents or other property right claims or to contest validity 
+  of any such claims; this section has the sole purpose of protecting the 
+integrity  of the free software distribution system, which is implemented 
+by public license practices.  Many people have made generous contributions 
+to the wide range of software distributed through that system in reliance 
+on consistent application of that system; it is up to the author/donor to 
+decide if he or she is willing to distribute software through any other system 
+and a licensee cannot impose that choice. </p>
+         
+<p align="justify">  This section is intended to make thoroughly clear what 
+  is believed to be a consequence of the rest of this License.  </p>
+         
+<p align="justify">  <strong>8.</strong>  If the distribution and/or use of
+the Program is restricted in certain countries either by patents or by copyrighted
+interfaces, the original copyright holder who places the Program under this
+License may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among  countries
+not thus excluded.  In such case, this License incorporates the limitation
+as if written in the body of this License.  </p>
+         
+<p align="justify">  <strong>9.</strong>  The Free Software Foundation may 
+  publish revised and/or new versions of the General Public License from time
+  to time.  Such new versions will be similar in spirit to the present version,
+  but may differ in detail to address new problems or concerns.  </p>
+         
+<p align="justify">  Each version is given a distinguishing version number. 
+   If the Program specifies a version number of this License which applies 
+ to it and "any later version", you have the option of following the terms 
+ and conditions either of that version or of any later version published by
+ the Free Software Foundation.  If the Program does not specify a version 
+number of this License, you may choose any version ever published by the Free
+Software Foundation.  </p>
+         
+<p align="justify">   <strong>10.</strong>  If you wish to incorporate parts 
+  of the Program into other free programs whose distribution conditions are 
+  different, write to the author to ask for permission.  For software which 
+  is copyrighted by the Free Software Foundation, write to the Free Software 
+  Foundation; we sometimes make exceptions for this.  Our decision will be 
+ guided by the two goals of preserving the free status of all derivatives 
+of our free software and of promoting the sharing and reuse of software generally.
+      </p>
+         
+<p align="justify"><strong>NO WARRANTY</strong></p>
+         
+<div align="justify">  </div>
+         
+<p align="justify">  <strong>11.</strong>   BECAUSE THE PROGRAM IS LICENSED 
+  FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED 
+  BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 
+  HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 
+  OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
+   THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH 
+  YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY 
+  SERVICING, REPAIR OR CORRECTION.  </p>
+         
+<p align="justify">  <strong>12.</strong>  IN NO EVENT UNLESS REQUIRED BY 
+  APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY 
+ OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE,
+ BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL 
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM 
+  (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE 
+  OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM 
+TO  OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  </p>
+         
+<p align="justify">   </p>
+         
+<h3>END OF TERMS AND CONDITIONS</h3>
+      <br>
+           
+<hr width="100%" size="2"><br>
+         
+<h2><a name="Installation_Guide"></a>Installation Guide</h2>
+       
+<div align="justify">     
+<h3>Overview</h3>
+       
+<p>Citadel/UX is an advanced, multiuser, client/server, room-based BBS program. 
+  It is designed to handle the needs of both small dialup systems and large-scale 
+ Internet-connected systems.  It was originally developed on an Altos system 
+ running Xenix, and has been installed and tested on various Unix and Unix-like 
+ platforms.  The author's current development environment (and BBS) is an 
+ordinary Linux system.  The current distribution includes: </p>
+     
+<ul>
+    <li>The Citadel/UX server (this is the back end that does all processing)
+    </li>
+     <li>A text-based client program designed with the traditional Citadel
+ "look  and feel" (room prompts, dot commands, and the like) </li>
+     <li>Setup programs </li>
+     <li>A set of utilities for system administration and maintenance </li>
+     <li>Documentation </li>
+     
+</ul>
+        
+<p>Some knowledge of the Unix system is necessary to install and manage the
+  system. It is mandatory that the sysop have "root" access to the operating
+  system. The following are required to install Citadel/UX: </p>
+     
+<ul>
+    <li>A Unix operating system (Linux, BSD, Solaris, Tru64, HP/UX) </li>
+     <li>C compiler (such as gcc or egcs) and "make" </li>
+     <li>POSIX threads (the "pthreads" library) </li>
+     <li>TCP/IP </li>
+     <li><a href="http://www.sleepycat.com">Berkeley DB</a> v4.1 or newer 
+(GDBM  also works, but its use is officially depracated.  If you are building 
+a new system, do <i>not</i> use GDBM.  If you have an existing system which 
+uses GDBM, you should migrate it to Berkeley DB as soon as possible.) </li>
+     <li>Enough disk space to hold all of the programs and data </li>
+     
+</ul>
+         
+<p>If you are running Citadel/UX on a Linux system, it is STRONGLY recommended
+  that you run it on a recent distribution (such as  <a
+ href="http://www.redhat.com">Red Hat</a> 7.3 or newer).  A new-ish distribution 
+ will have most or all of the prerequisite tools and libraries already integrated 
+ for you.</p>
+             
+<h3>Now available:</h3>
+        
+<ul>
+    <li>"WebCit", a gateway program to allow full access to Citadel via the
+ World Wide Web.  Interactive access through any Web browser. </li>
+     <li>Access to Citadel via *any* standards-compliant e-mail program,
+thanks  to Citadel's built-in SMTP, POP, and IMAP services. </li>
+     
+</ul>
+         
+<h3>Coming soon:</h3>
+       
+<ul>
+    <li>Newer and better GUI-based clients. </li>
+     
+</ul>
+      
+<h3>Everything in its place...</h3>
+      
+<p>Hopefully you've unpacked the distribution archive into its own directory.
+ This is the directory in which all Citadel files are located and in which
+ all activity will take place.  Several subdirectories have already been
+created  during the unpacking process, and others may be created by the software
+if  needed.  Make sure you have Berkeley DB installed on your system, and
+that  you have all the development libraries and headers in place so that
+you can  compile against them.  If you don't, you can get the latest Berkeley
+DB at  <a href="http://www.sleepycat.com">http://www.sleepycat.com</a>. 
+If your  operating system uses a separate library to support POSIX threads
+(pthreads),  make sure that library is installed as well.  This is almost
+never the case  with Linux, but some commercial Unix flavors might need it.</p>
+  
+<h3>The BBS Login</h3>
+  
+<p>As with many Unix programs, Citadel wants to run under its own user ID. 
+Unlike other programs, however, this user ID will do double-duty as a public 
+login for your system if you are running a BBS.  This account is typically 
+called "bbs" or "citadel" or something to that effect. You will tell Citadel
+what the user-id of that account is, and when someone logs in under that
+account, Citadel will prompt for a user name.</p>
+  
+<p>The Citadel user should have a unique uid. The home directory should be
+the one your Citadel installation resides in (in this example we will use
+/usr/local/citadel) and the shell should be either "citadel" in that directory,
+or a script that will start up citadel (you may wish to set up an external
+text editor; see below). Example:</p>
+  
+<pre>bbs::100:1:BBS Login:/usr/local/citadel:/usr/local/citadel/citadel<br></pre>
+  
+<p>When you run setup later, you will be required to tell it what the Citadel 
+user's numeric user ID is, so it knows what user to run as.  If you create 
+an account called <tt>bbs</tt>, <tt>guest</tt>, or <tt>citadel</tt>, the
+setup program will automatically pick up the user ID by default.</p>
+  
+<p>For all other users in /etc/passwd, Citadel will automatically set up
+an account using the full name (or 'gecos' in Unixspeak) of the user.  It'll
+also ignore any password you supply, because it uses the user's password
+on the host system.  This allows a 'single sign on' type of environment. Note
+that this does have to be enabled at compile time -- it's the configure option
+called <tt>--enable-autologin</tt>.  Keep in mind that these users can use
+*either* their Citadel login name or their login name on the host computer,
+and their password on the host computer.</p>
+  
+<h3>Bypassing the <tt>login:</tt> prompt</h3>
+  
+<p>If you normally log in to your host system using some method other than 
+telnet (such as ssh), you might want the telnet service to go straight to 
+the Citadel BBS, instead of displaying the <tt>login:</tt> prompt first.
+ You can do this by having telnetd start citadel directly instead of <tt>/bin/login</tt>. 
+This is actually very simple to implement; all you need to do is make a simple
+change to your <tt>inetd</tt> or <tt>xinetd</tt> configuration.  Here are
+some configuration examples.</p>
+  
+<p>An example for <tt>inetd</tt> (put the following line in <tt>/etc/inetd.conf<tt>, 
+replacing any existing telnet configuration line already there):</p>
+  
+<pre>
+telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -L /usr/local/citadel/citadel
+</pre>
+  
+<p>An example for <tt>xinetd</tt> (if you have a file called <tt>/etc/xinetd.d/telnet</tt> 
+then simply replace that file with this one):</p>
+  
+<pre>service telnet
+{
+       flags           = REUSE
+       socket_type     = stream
+       wait            = no
+       user            = root
+       server          = /usr/sbin/in.telnetd
+       server_args     = -L /usr/local/citadel/citadel
+       log_on_failure  += USERID
+       disable         = no
+}
+</pre>
+  
+<p>Please make sure you know what you're doing before you install
+this!  If you are going to put Citadel somewhere other than <tt>/usr/local/citadel</tt>
+then change the directory name accordingly.  If you know of any other local
+peculiarities which need to be observed, edit the above configuration accordingly
+as well.  And, of course, if you're working remotely, make sure you can successfully
+log in using SSH before you start changing your telnet configuration, otherwise
+you could lock yourself out of your system (ask any networking specialist
+about the dangers of "working inline" -- then pull up a chair and get a fresh
+cup of coffee, because you're going to hear some war stories).</p>
+  
+<h3>Compiling the programs</h3>
+  
+<p>You can easily compile the Citadel system with the following commands:</p>
+  
+<pre>
+./configure<br>make
+make install
+</pre>
+  
+<p>The 'configure' script will generate a Makefile from the Makefile.in,
+and it will also write the file "sysdep.h" to your Citadel directory.  Please
+do not edit sysdep.h or Makefile.in yourself.  The configure script will
+figure out your system dependencies and set everything correctly.</p>
+  
+<p>Mac OS X 10.1 and later are now supported.  (Sorry, 10.0 cannot
+be supported, now or in the future.)  You need to install the Developer Tools
+CD, which you can purchase or download for free from
+<a href="http://developer.apple.com">http://developer.apple.com</a>. Then run
+configure like this:</p>
+
+<pre>
+env CC=/usr/bin/cc ./configure (options - see below)
+</pre>
+
+<p>By default, the Citadel system will install in <tt>/usr/local/citadel</tt>.
+If you wish to place it in a different directory, you can instead do:</p>
+  
+<pre>
+./configure --prefix=/export/home/citadel      (or whatever)
+</pre>
+  
+<p>If you've got Berkeley DB installed in a non-standard location,
+you can help the configure script find it by doing something like this:</p>
+  
+<pre>
+./configure --with-db=/usr/local/BerkeleyDB-4.1
+</pre>
+  
+<p>The configure script prefers Berkeley DB if it is available, but
+will fall back to GDBM if it has to.</p>
+  
+<p>File permissions are always a bother to work with. You don't want
+Citadel to crash because someone couldn't access a file, but you also don't 
+want shell users peeking into the binaries to do things like reading others' 
+mail, finding private rooms, etc.  The Citadel server needs to be started 
+as root in order to bind to privileged ports, but as soon as its initialization
+is finished, it changes its user ID to your BBS user ID in order to avoid
+security holes.</p>
+  
+<h3>Upgrading</h3>
+
+<p>Upgrading to a new version uses the same build procedure as compiling
+the program for a fresh install, except that you want to do <tt>make install-exec</tt> 
+instead of <tt>make install</tt>.  This will overwrite the programs but not
+your data.  <b>Be sure to shut down citserver during this process!</b>  If
+Citadel is running while you upgrade, you may face data corruption issues.</p>
+
+<h3>The <tt>citadel.rc</tt> file</h3>
+  
+<p>The text-based client included with Citadel is suitable for BBS
+applications.  Much of its command set and other behavior is configurable
+through a Run Control (RC) file. The standard client looks for this file
+in the following locations:
+<ul>
+<li><tt>$HOME/.citadelrc</tt></li>
+<li><tt>/usr/local/lib/citadel.rc</tt></li>
+<li><i>your-Citadel-directory</i><tt>/citadel.rc</tt></li>
+</ul>
+The next couple of sections deal with client-side configuration.</p>
+<h3>Using an external editor for message composition</h3>
+  
+<p>Citadel/UX has a built-in message editor.  However, you can also
+use your favorite text editor to write messages.  To do this you simply put
+a line in your citadel.rc file like this:</p>
+  
+<pre>
+editor=/usr/bin/vi
+</pre>
+
+<p>The above example would make Citadel call the vi editor when using 
+the <tt><b>.E</b>nter <b>E</b>ditor</tt> command. You can also make it the
+default editor for the <tt><b>E</b>nter</tt> command by editing the <tt>citadel.rc</tt>
+file.  <b>But be warned:</b> external editors on public systems can be a
+security hole, because they usually provide users with the ability to drop
+into a shell on the host system, or save files using names other than the
+name of the temporary file they are editing.  If you intend to use an external
+editor on a public BBS, make sure you use one that has been hardened for
+such a purpose -- one which has had the 'shell' and 'save as' commands disabled,
+as well as any other functions which a destructive user could use to gain
+unauthorized access to your host system.</p>
+  
+<h3>Printing messages</h3>
+  
+<p>Citadel/UX can send messages to a printer, or just about anywhere
+else in your system.  The variable <tt>PRINTCMD</tt> in <tt>citadel.rc</tt>
+specifies what command you use to print.  Text is sent to the standard input
+(stdin) of the print command.</p>
+  
+<p>So if you did this:</p>
+  
+<pre>
+printcmd="nl|pr|lpr -Plocal"
+</pre>
+  
+<p>...that would add line numbers, then paginate, then print on the
+printer named "local".  There's tons of stuff you can do with this feature.
+ For example, you could use a command like <tt>cat &lt;&lt;$HOME/archive</tt>
+to save copies of important messages in a textfile.  Again, this is probably
+something you don't want to configure for a public BBS host -- most system
+administrators don't want remote users sending arbitrary things to local
+printers.</p>
+  
+<h3>URL viewing</h3>
+  
+<p>This is one more feature which is appropriate for local users.
+ While reading a message that has Internet URL's in it, you can select the
+<tt><b>U</b>RL-view</tt> command, and it will perform some pre-defined action
+(usually, this is to open up the URL in a web browser).  For example:</p>
+  
+<pre>
+urlcmd=netscape -remote "openURL(%s)"
+</pre>
+  
+<p>In the above example, it would open up the URL in an open
+<a href="http://www.netscape.com/download">Netscape</a> window.</p>
+  
+<h3>Setup and login</h3>
+  
+<p>Before logging in for the first time, you must run the setup program. 
+To begin this procedure, enter the following commands:</p>
+  
+<pre>
+cd /usr/local/citadel
+./setup
+</pre>
+  
+<p>The setup program will guide you through a simple configuration
+procedure. It will ask you what directory to place your data files in --
+the default is the current directory, which is usually the sensible thing
+to select.  If you want to run more than one instance of Citadel on the same
+host, however, you can specify a different directory here -- just remember
+to specify the directory name again when you start up the server later on.</p>
+  
+<p><tt>setup</tt> will then shut down the Citadel service if it is
+found to be running.</p>
+  
+<p>You will then be prompted for the name of the system administrator.
+This is not merely a cosmetic option -- when you log in to your system a
+little while from now, you'll log in with this name, and it will automatically
+assign your account the highest access level.</p>
+  
+<p>Next, you will be prompted for the User ID of the Citadel account
+on your host system.  If you have an account called <tt>bbs</tt>, <tt>guest</tt>,
+or <tt>citadel</tt>, that account's UID will be the default.  If you are
+upgrading or reconfiguring an existing system, the existing value will be
+preserved.</p>
+  
+<p>Then you will be prompted for a server port number.  This is the
+TCP port which Citadel clients use to connect to your Citadel server.  In
+almost all cases, you want to use the default -- port 504, which is the official
+port number assigned by the IANA for Citadel implementations.</p>
+  
+<p>The Citadel service will then be started, and you will see the
+following message:</p>
+  
+<pre>
+Setup is finished.  You may now log in.
+</pre>
+  
+<p>Setup is now complete, on most systems, anyway.  Please see below
+to find out if you need to do anything else:</p>
+  
+<h3>Configuring your host system to start the service</h3>
+  
+<p><b>Please note:</b> this topic involves modifications made to
+<tt>/etc/services</tt> and <tt>/etc/inittab</tt> in order to configure your
+host system to automatically start the Citadel service.  <tt>setup</tt> will
+automatically perform these steps if it can, and if you allow it to -- just
+answer 'Yes' when prompted, and everything will be taken care of for you.
+ If you answer 'No' -- or if your system is a little bit odd (for example,
+BSD systems don't have <tt>/etc/inittab</tt>) -- read this section and do
+what you need to in order to get things configured.</p>
+   
+<p>Before you can use Citadel, you must define the "citadel" service
+to your  system.  This is accomplished by adding a line to your /etc/services
+file that looks something like this:</p>
+  
+<pre>citadel           504/tcp                 # Citadel/UX Server<br></pre>
+  
+<p>504 is the port number officially designated by the IANA for use
+by Citadel.  There should not be any need to use a different port number,
+unless you are  running multiple Citadels on the same computer and therefore
+need a different port for each one.</p>
+  
+<p>The next step is to arrange for the server to start.  The <tt>citserver</tt> 
+program is the main Citadel server.  Before we cover the recommended method
+of starting the server, let's examine its usage options:</p>
+  
+<pre>citserver [-hHomeDir] [-xDebugLevel] [-tTraceFile] [-d] [-f]<br></pre>
+  
+<p>The options are as follows:</p>
+  
+<p><tt>-hHomeDir</tt> - the directory your BBS data files live in.
+ This should, of course, be a directory that you've run the <tt>setup</tt>
+program against to set up some data files.  If a directory is not specified,
+the directory name which was specified in the <tt>Makefile</tt> will be used.</p>
+  
+<p><tt>-xDebugLevel</tt> - Set the verbosity of trace messages printed.
+ The available  debugging levels are: </p>
+<ul>
+ <li>1 - Internal errors (failed thread creation, malloc problems,
+etc.) </li>
+  <li>2 - Network errors (broken sockets, failed socket creation) 
+    </li>
+  <li>3 - Begin and end of sessions, startup/shutdown of server </li>
+  <li>5 - Server commands being sent from clients </li>
+  <li>7 - Entry and exit of various functions  </li>
+  <li>8 - Entry and exit of critical sections </li>
+  <li>9 - Various debugging checkpoints (insanely verbose) </li>
+</ul>
+  
+<p><tt>-tTraceFile</tt> - Tell the server where to send its debug/trace
+output.   Normally it is sent to stdout.</p>
+  
+<p><tt>-d</tt> - Run as a daemon; i.e. in the background.  This switch
+would be necessary if you were  starting the Citadel server, for example,
+from an rc.local script (which is  not recommended, because this won't allow
+the server to automatically restart when it is shut down).</p>
+  
+<p><tt>-f</tt> - Defragment all the databases upon startup.  This
+isn't normally necessary due to the nature of the data stored in Citadel,
+but the option is provided in case you need it.  (Note that this only applies
+to GDBM installations; if you are using Berkeley DB it has no effect.)</p>
+  
+<p>The preferred method of starting the Citadel server is to place
+an entry in your /etc/inittab file.  This will conveniently bring the server
+up when your  system is up, and terminate it gracefully when your system
+is shutting down.   The exact syntax for your system may vary, but here's
+an entry that could be used on a Linux system:</p>
+  
+<pre>
+cit:2345:respawn:/usr/local/citadel/citserver -h/usr/local/citadel -t/dev/tty9 -x3
+</pre>
+  
+<p>In this example, we've chosen debugging level 3, and have the
+trace stuff output to one of the virtual consoles.  It's important to remember
+to turn off any getty that is set up on that virtual console, if you do this.
+ After making this change, the command <tt>init q</tt> works on most systems
+to tell init to re-read the file.  If in doubt, just reboot the computer.</p>
+  
+<h3>Logging in for the first time</h3>
+  
+<p>At this point, your system is ready to run. Run the <tt>citadel</tt>
+program from the shell and log in as a new user.  NOTE: the first user account
+to be created will automatically be set to access level 6 (Aide).  This overcomes
+some obvious logistical problems - normally, Aide access is given by another
+Aide, but since there aren't any on your system yet, this isn't possible.</p>
+  
+<h3>Welcoming new users</h3>
+  
+<p>Sometimes you might decide that you want a welcome message (or
+several different messages) automatically mailed to new users upon their
+first login. Now there is a way to do this.  If you create a room called <tt>New
+User Greetings</tt>, and it is a <i>private</i> room (invitation-only probably 
+makes the most sense), any messages you enter into that room will automatically 
+be delivered to all new users upon registration.</p>
+  
+<p>You can put anything you want there: a welcome message, system
+policies, special information, etc.  You can also put as many messages there
+as you want to (although it really doesn't make sense to clutter new users'
+mailboxes with lots of junk).</p>
+  
+<p>Don't worry about wasting disk space, either.  Citadel has a single-instance 
+message store, so all the new users are actually looking at the same copy
+of the message on disk.</p>
+    
+<h3>Space for adding your own client features (doors)</h3>
+  
+<p><b>Please take note!</b>  This function really represents the
+"old" way of doing things, and it doesn't fit in well with the client/server 
+paradigm.  Please consider it "deprecated" because it may be removed someday.</p>
+  
+<p>The "doorway" feature is just a generic way to add features to
+the system. I called it "Doorway" to make it resemble the doors on non-Unix
+boards, but as we all know, us Unix types don't have to write special code
+to access the modem. :-)  Anyway, when a user hits the <tt><b>*</b></tt>
+(doorway) command, Citadel does...</p>
+  
+<pre>
+USERNAME=(username); export USERNAME
+./subsystem (user-number) (screen-width) (access level)
+</pre>
+  
+<p>...so you can put whatever you want in there.  I suggest putting
+in a menu program to allow the users to pick one of a number of programs,
+etc.  Do be aware that door programs will only be available when the client
+and server programs are running on the <i>same</i> computer, and when the
+user is running the text-mode client.  Because of these restrictions, Door
+programs are being utilized less and less every day.</p>
+  
+<h3>Troubleshooting and getting help</h3>
+  
+<p>That's just about all the information you need to install the
+system.  But if you get stuck, you can visit UNCENSORED! BBS and report a
+problem or ask for help.  But if you intend to report a problem getting the
+Citadel server to run, <i>please</i> double-check the following things first: 
+</p>
+<ul>
+ <li>Did you do <tt>./configure &amp;&amp; make &amp;&amp; make install</tt>
+ ?? </li>
+  <li>Did you run setup? </li>
+  <li>Did you start the server? </li>
+</ul>
+  
+<p>To report a problem, you can log on to UNCENSORED! or any other
+BBS on the Citadel network which carries the <tt>Citadel/UX&gt;</tt> room.
+ Please DO NOT e-mail the developers directly.  Post a request for help on
+the BBS, with all of the following information: </p>
+<ul>
+ <li>The exact nature of your difficulty </li>
+  <li>A transcript of the error message(s) if possible </li>
+  <li>The version of Citadel you are running </li>
+  <li>The version of Berkeley DB present on your system </li>
+  <li>Which operating system you are running, and what version </li>
+  <li>If you are running a Linux system, we need to know which distribution,
+and the version of the kernel, libc, and pthreads you are using (it would
+help to post the output of a <tt>ldd ./citserver</tt> command). </li>
+</ul>
+  </div>
+ </div>
+</body>
+</html>