				INSTALL
				=======

Upgrading?

    Whenever you upgrade I suggest you upgrade both the client and
    server.  Most times, however, you can get away without upgrading
    the client (it's usually a fairly static piece of code).  I'll
    document any dependencies here, but check the CHANGES file for any
    new features added to the client if you're considering *not*
    upgrading.

    Version 7.2.4

	- If SSL support is compiled into the code, older versions of
	  the client and server are, by default, incompatible because
	  encrypted connections are a requirement.  Use of the -E flag in
	  the client and/or server can work around this (but I discourage
	  this - please upgrade the clients and servers instead).

    Version 7.2.0

	- The code related to broadcast messages in the client (-b) has
	  changed.  If you want the username to come across properly in
	  the broadcast message, you'll need to make sure you upgrade
	  to the 7.2.0 client.

    Version 7.1.1

	- Both conserver.passwd and conserver.cf file parsing behaves
	  the same now.  Both use leading whitespace as a continuation
	  line indicator - if you have leading whitespace on a line
	  (aside from comments) you probably should remove it.

    Version 7.1.0

	- The client/server protocol has changed.  You *MUST* use a
	  7.1.0 client with a 7.1.0 and above server.  A 7.1.0 client
	  is *not* backward compatible with a pre-7.1.0 server.

	- Some of the flags in the client (-d, -D, and -r) and server
	  (-n) have been given new identities to make the client and
	  server flags more uniform.

	- The conserver.passwd file now uses the first username match
	  to determine access rights - if you have multiple instances
	  of a username in an existing password file, they must be
	  combined into one to continue to work.


Quickie Instructions

    - Download conserver (http://www.conserver.com/) and unpack

    - Run './configure'

    - If all is well, run 'make install'

    - Now set up config files, etc. (see below)


Detailed Instructions

    - First thing to do is determine if you want different defaults.  A
      './configure --help' will show you the basics.  If you like all
      the defaults shown, you're set.  If not, here are the conserver
      unique options:

	--with-port=PORT        Specify port number [conserver]
	--with-base=PORT        Base port for secondary channel [0]
	--with-master=MASTER    Specify master server hostname [console]
	--with-cffile=CFFILE    Specify config filename
	                        [SYSCONFDIR/conserver.cf]
	--with-pwdfile=PWDFILE  Specify password filename
	                        [SYSCONFDIR/conserver.passwd]
	--with-logfile=LOGFILE  Specify log filename [/var/log/conserver]
	--with-pidfile=PIDFILE  Specify PID filepath [/var/run/conserver.pid]
	--with-maxmemb=MAXMEMB  Specify maximum consoles per process [16]
	--with-timeout=TIMEOUT  Specify connect() timeout in seconds [10]
	--with-libwrap[=PATH]   Compile in libwrap (tcp_wrappers) support
	--with-openssl[=PATH]   Compile in openssl support
	--with-regex            Use regular expressions in conserver.passwd
	--with-pam              Enable PAM support

      Not surprisingly, some match the old conserver/cons.h items...here
      they are for reference:

	PORT or SERVICE		- Socket used to communicate
	HOST			- Hostname of console server
	CONFIG			- Config file path
	PASSWD_FILE		- Password file path
	MAXMEMB			- Number of consoles per child process

    - Run './configure'.  This will detect system specific
      information.  The --prefix option will redirect where things are
      installed.  Other options are available as well...try
      './configure --help'.

    - Now run 'make'.  Hopefully things will compile.

    - Once things build, you can run 'make install'.

    - If you'd like to build the autologin application, you'll need to
      run 'make autologin'.  If you'd like it installed, use 'make
      autologin.install'.

    - Now that the binaries are in place, we need to set up the
      configuration files and such.

      + Does your conserver master hostname exist?  This is the
	hostname specified with the --with-master option.  By default
	the hostname is "console", so make sure it's in DNS, hosts
	files, or whatever.

      + If you used a symbolic name for the --with-port option (by
	default it uses "conserver", so the answer would be yes),
	you'll need to enter a definition in your services file
	(directly, via NIS, or whatever).  Here's what we use:

	    console      782/tcp    conserver    # console server

	If you used a number, you shouldn't have to worry about this
	step.

      + Next, make sure conserver runs during boot.  The init script we
	use under Solaris is installed in <PREFIX>/etc/conserver.rc.
	Use that or some form of it for your own /etc/init.d script or
	an entry in startup files (/etc/rc, /etc/rc.local, or
	whatever).

      + Now for the fun stuff.  You need to create a conserver.cf and
	conserver.passwd file.  Those are defined with the
	--with-cffile and --with-pwdfile settings.  If you ever need to
	know what values were compiled into conserver, run 'conserver
	-V'.  See the conserver.cf/INSTALL file for instructions on
	setup of these files.

    - That's it!  Just start up the console server and enjoy!


Other Information And Gotchas

    - Debian Linux Distribution

	The Debian folks have conserver distributed with the package
	names of conserver-client and conserver-server.  They are in
	the distribution "sid" and the "non-free" part (because the
	Ohio State license doesn't explicitly allow for modification to
	the code, even though it's totally implied and the intention of
	the author - I've even got proof in email!  Oh well, can't
	blame the Debian folks for being cautious - they've been burned
	before, apparently).

    - Potential GCC bug

	Adam Morris <AMorris@providence.org> reported a problem with
	the following line in console/console.c:

	    if ((in_addr_t) (-1) == pPort->sin_addr.s_addr) {

	This tickles a GCC bug under HP-UX 11.11 using GCC 3.0.2 in
	64-bit mode with optimization enabled (-O).  The bug could
	possibly be provoked in other combinations as well.  His fix is
	to change the line to:

	    if ((in_addr_t) (-1) == inet_addr(pcToHost)) {

	It's also reported that newer versions of the compiler fix the
	issue, so if you happen to have problems with the client
	connecting to servers, you might be tickling this bug and you
	can upgrade the compiler, turn off the optimization, or apply
	this code change.


#
#  $Id: INSTALL,v 1.25 2002-10-12 20:23:58-07 bryan Exp $
#
