                 yet another bulletin board system - yabbs                 
                    Copyright (c) 1993,1994 Alex Wetmore                     
                                                                          
                               6 rech ave
                           oreland, pa 19075
                            alex@phred.org
                                                                          
    This program is free software; you can redistribute it 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.

    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.  See the
    GNU General Public License for more details.

    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.

Warning: 
  Right now the documentation is unfinished and the code is going through
  a lot of changes.  I am giving out the current source because people have
  asked for copies of it.  If you change any part of it please send me
  your patches and what they do, and if they are useful I will patch them
  back into the distribution.

  If you are interested in a list of proposed changes please send me email.

Introduction: What is yabbs?
    Yabbs is a network server/client based bulletin board system.  This means
    that instead of having one program that handles the entire system (user
    interface and management) there are two programs, one is the client
    (the user interface) and the other is the server (which handles the
    messages and all of the low-level stuff in a bbs).  This means that users
    don't have to get a new client when the server changes (if the way 
    messages are handled change for instance), and that clients can have
    different interfaces (like a nice windowing interface for X Windows, the
    Macintosh, or Microsoft Windows).  This package includes the server and
    a unix-based text client.  There may be other clients available, if so
    they can probably be grabbed from ftp.phred.org in /pub/yabbs.

Features: What can it do and why would I want it?
    - Server/Client: Yabbs is pretty much a protocol with programs written
      around it.  It just specifies how a user interface (the client) can
      talk to a database-type program (the server) to get messages, text files,
      and do simple talking.  It doesn't specify how the messages are saved on
      the server's computer, or even that they are saved there, just how
      the client gets them from the server.  This allows for a layer of 
      abstraction that most systems don't allow.

    - Portability: Yabbs should work on any unix system that has BSD socket
      support.  There are a few perl programs that are distributed with it as
      well, but they aren't required for general use.

    - Messages: The protocol allows for up to 65535 public message bases.  
      The current server and client implementations are limited to 26, but
      this is likely to change in the near future.  There is also one
      private message base for personal email.  The sysop can choose whether
      he or she is allowed to read these messages or not.

    - Gfiles: Online text files for general reading.  A good place to keep
      general interest texts that people may just want to read online.  This
      is currently implemented using gopher, which allows for a wide range of
      files to be available to users without requiring that they are kept on
      the server's computer.

    - Yalk: A general talk sub that has private messages, paging of users
      in other sections of yabbs, and a few other small features.

Missing: What can't it do?
    - Files: There is no files base that supports download protocols such as
      xmodem. I have done a lot of the design of yabbs on the internet, and ftp
      does the job of file sections pretty well.

    - Doors: There is no way to access other unix programs from inside yabbs.
      Because of the server/client model of yabbs this couldn't be added
      very easily in a well designed way.

    - Usenet and STMP Mail: Yabbs only knows how to deal with its own mail
      format.  I would like to add support for usenet so expect this feature
      soon.

Installation: How can I get this thing working on my box?
   1) Untar all of the files into a directory.  I recommend something like
      /usr/yabbs.  Yabbs really won't care too much.
   2) Look through config.h.  This has general server configuration in it.
      Make sure that you set F_PATH to point to where you plan on keeping
      your yabbs data files (I use /usr/yabbs/data).
   3) Look through the Makefile.  At the top are default setups for various
      systems.  Try the one that is the closest to your system.  This also
      has other options that should be set as well.
   4) run make.  (this makes the yabbs binaries).
   5) run make dirs.  (this makes the directory tree that yabbs needs to run)
   6) run make install (this copies all of the binaries it just made to
      a directory called bin).
   7) run bin/usered and make a new user.
   8) run bin/baseed and make some message bases.  Base 0 (@) is private, and
      the rest are public.
   9) run bin/yabbsd.  The server is now online.
  10) run bin/yabbs.  Congradulations, you are on your bbs.

Upgrade: I already have an older version of yabbs, how do I get this one going?
   1) Use yshutdown to stop the old yabbs server.
   1) Untar all of the files into your yabbs directory.  You might want to make
      a backup of the directory first just in case anything breaks.
   2) Read the CHANGES file.  It contains a list of changes for each version
      of yabbs.  It will also have notes about incompatibilities between 
      various versions of yabbs.
   3) Make any changes that you need to config.h and the Makefile.  Pay special
      attention to any paths defined in either of them and make sure they
      are okay for you.
   4) run make.
   5) run make install.
   6) you should be ready to go.  Start the server up and see how it goes.

Security: What should I watch out for to make sure that my system is secure?
   1) Make sure that you have the line "lock (editor pager)" in the 
      .yabbsrc file for any insecure clients (ie, clients that connect
      via a telnet port or a bbs login).  Otherwise it is fairly trivial
      to get a shell account on a system.
   2) On insecure clients you should probably stick to the internal editor,
      because it is so stupid that it tends to be pretty secure.  If you
      really want to provide a full screen editor make sure that it is
      also secure (ie, users can't read or write any file on the system
      or get a shell).  There is a version of vi on ftp.phred.org in 
      /pub/yabbs/bbsvi.tar.Z called bbsvi with this functionality.
   3) Be similarily worried about using external pagers.  less can be
      made to be secure with an appropriate lesskeys file.

yes, the docs are incomplete...i still need to write most of them.  sorry if
this is a problem.  Send mail to alex@phred.org if you need any more 
information and i'll be glad to help out.  There is some documentation for 
the yabbs client and yahoo which is installed as man pages.

alex
