XCept Version 2.2

Copyright (c) 1994, Department of Computer Science IV (Operating Systems), 
          University of Erlangen-Nrnberg, Germany.
Copyright (c) 1992, 1993 Arno Augustin, Frank Hoering, 
          University of Erlangen-Nrnberg, Germany.
All rights reserved.


Non-commercial, i.e. private and academic, redistribution and use in source
and binary forms, with or without modification, are permitted provided that
the following conditions are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
	This product includes software developed by the Department of
         Computer Science IV (Operating Systems), University of
	Erlangen-Nrnberg, Germany.
4. Neither the name of the University nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

All other kinds of redistribution and use, especially commercially, are
subject to license agreements, details of which are available on request
(contact: 
                Dipl.-Inf. Dirk Husemann
                Universitt Erlangen-Nrnberg
                IMMD IV
                Martensstrae 1
                D-91058 Erlangen
                
                Email:  husemann@informatik.uni-erlangen.de
                FAX:    +49 9131 858 732).

THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


WHAT IS XCEPT?

XCept is an X11 implementation of the CEPT videotext protocol terminal. It
has been extensively tested against the German Telekom's Datex-J/BTX
version of the CEPT videotext service.

This is the second major release of this software. We have done some bug
fixes, added support for ISDN access (tested with BinTec boards on a Sun
machine), sped up the X11 client, and more. As there already is a shareware
package called XBtx (running under MS-DOS) with which we are not connected
at all, we decided to rename our software `XCept', which is quite easy to
memorize for two reasons:

	o X CEPT decoder => xcept
	o We hope to have provided eXCeptionally software 8=)


WHAT ARE XCept's CAPABILITIES?

XCept supports

     o  color and black & white displays

     o  multiple server, multiple clients (though at any given time only
        one client can be served by one server)

     o  built-in script language

     o  accounting (connect time and user)

     o  allow files (users, machines, and user@machine)

     o  session logging & off-line playback

     o  saving CEPT pages as ASCII or PBM (even if in black & white mode
        with all the original color information preserved)

     o  background mode (i.e. no X11 display is opened or needed) for
        automated retrieval

     o  Perl interface

     o  modem configuration file

     o  access over modem or ISDN

     o	UUCP style locking

     o  Software downloading


STRUCTURE OF XCEPT

XCept utilizes the well-known client-server paradigm: The server deals with the
link layer protocol and takes care of 
     
     o  talking to the modem

     o  setting up and maintaining the connection to the videotext provider
        (e.g. the BTX-Zentrale of the German Telekom)

     o  dealing with the link layer protocol (OSI-2)

     o  closing down the connection once the videotext session is terminated

The client(s) talk(s) to the server via a TCP connection and take care of the
presentation layer protocol (OSI-6). At the same time the clients entertain the
user interface. Due to the single threaded nature of a CEPT videotext session
only one client can at any given time deal with one server (currently one
ceptd can only support one modem or ISDN interface --- although it is
possible to have multiple server using ISDN running on one host).


RESTRICTIONS

There are almost none, except those noted in the copyrights: If you want to
use this software commercially we require that you enter a license
agreement with us (see copyright notice above).

N.B. for German users: The German Bundesamt fr Zulassungen in der
Telekommunikation tells us that no BZT approval for software CEPT decoders is
necessary anymore.

You are free to use the software for any purpose you want PROVIDED YOU KEEP
ALL THE COPYRIGHT NOTICES AND THE DISCLAIMERS INTACT AND OBEY AND ADHERE TO
WHAT THEY TELL YOU AND ALLOW AND FORBID YOU TO DO.


HOW TO INSTALL

As of version 2.2 we have merged in a couple of patches supplied to us by 
various people for various Unix version and Unix look-a-likes (e.g. Linux).
The only makefile you should have a look at is ceptd/makefile. Depending on
what kind of Unix variant you're planning to use XCept you need to define
appropriate defines here. An example for Linux is provided. 
The xcept client should compile out of the box 8=) unless you want to set
the default XCept-Server to something different then localhost. But it
might be a good idea to look over xcept's makefile and make sure everything
is, where it's supposed to be.

XCept should compile and run on BSD systems (e.g. BSD/386), SunOS 4.1.x,
SysV Rel 4, SGI, Linux, and SCO Unix. A patch for Solaris might be
forthcoming.


Installing ceptd

Look at ceptd/makefile.shipped and copy it to ceptd/makefile. Then
change the following definitions

OWNER= cept
GROUP= cept	or	uucp
EXECMODE= 755

BINDIR= /local/cept/bin# 	directory for the executable ceptd-server
MANDIR= /local/cept/man/man8# 	directory for the ceptd-servers manpage 
ETCDIR= /local/cept/etc# 	directory for 'init file' and 'users file'

# defaults for the ceptd-server :

DEFAULTINITFILENAME= 	$(ETCDIR)/init.cept# 	modems default init file
DEFAULTUSERSFILENAME= 	$(ETCDIR)/users.cept# 	file with allowed users
DEFAULTLOGFILENAME= 	/local/btx/log/log.cept# logfile for user online times
DEFAULTMODEM= 		/dev/com0#		char. special file for modem
DEFAULTSPEED= 		2400# 			modem baud rate
DEFAULTSOCKETPORT= 	20005#			socket port for connections


Next look at xcept/makefile and change 

#define ceptd's hostname (Only used when not overridden by
#   environment variable XCEPTHOST or by command line optin '-h').
SERVERHOST = localhost

SERVERHOST should probably be left as `localhost' if you're running both
client and server on one machine only, and else to the name of the server
machine.  This can however be overridden at run time by either XCEPTHOST or
by the command line option -h servername.

#define directory pathname where the scripts are located which
#   should be displayed in the scripts menu. (Only used when not
#   overridden by enironment variable XCEPTSCRIPTS or by command line
#   option '-S').
SCRIPTSDIR = /local/cept/lib

Our setup is

    /local/cept/
                bin     - here live ceptd and/or xcept
                etc     - here live init.cept and users.cept (only needed 
                	  for the server) 
                lib     - here live the script files and xcept.pl
                man     - here live the man pages for ceptd and xcept.


#define compiler and X11 include+library pathes 
CC	= cc
XINC	= -I/usr/include/X11
XLIB	= -L/usr/X11/lib
#WARN	= -Wunused -Wswitch -Wcomment -Wshadow -Wpointer-arith -Wcast-qual


#define location of the xcept binary and online manual (for 'make install').
OWNER	= cept
GROUP	= cept
MODE	= 755
BINDIR	= /local/cept/bin
MANDIR	= /local/cept/man/man1

Next go into ceptd and do

     % make
     % make install

and the same in the xcept directory.

Finally create the lib directory (in our example /local/cept/lib), change the
DEST definition in lib/makefile, go into lib and do a

     % make install

TAKE CARE TO FOLLOW THE INSTRUCTIONS THAT THE VARIOUS MAKEFILES MIGHT ADVISE
YOU TO PERFORM.


ADVICE

        o  Some modems need to be told to NOT use the internal buffer
           (AT&M2, or something appropriate for your modem)!
	o  Some modems need to be told to NOT try and connect with compression,
	   use AT&K0 (or something appropriate for your modem),
        o  If using Ceptd and XCept on the same machine, make sure the name
           you're using for the XCept-Server (e.g. 'localhost') is known to
           your machine (i.e. entered into /etc/hosts or DNS)           

ENVIRONMENT VARS

Xcept pays attention to

     XCEPTHOST       which server to use
     XCEPTSCRIPTS    path(s) where scripts might live --- xbtx will look at all
                     the files it finds along the path and if they contain
                     the token `#XCEPT' as the first characters include
                     them in its list of known scripts (which it knows how
                     to locate and which will be included in the `Scripts'
                     menu)

WHAT ELSE?

Have fun, take a look at the scripts in lib, enjoy your life, send in bug fixes
and improvements, spread the source, send us money, chocolate, ...



WHERE TO SEND BUGFIXES AND IMPROVEMENTS

I'll be happy to accept improvements and bug fixes. --- and `yes' if you really
don't get along you might try and send me a mail, too (although I certainly don't
guarantee same day response 8=) --- I can't even guarantee that to my PhD
thesis 8=(:

          husemann@informatik.uni-erlangen.de

Going were no man has gone before ...

        Dirk Husemann

Dirk Husemann
University of Erlangen-Nuremberg
Department of Computer Science IV
Martenstrasse 1 	   
D-W 8520 Erlangen, Germany

Dirk.Husemann@informatik.uni-erlangen.de
/C=de/A=d400/P=uni-erlangen/OU=informatik/S=husemann/G=dirk/

