mirror of
https://github.com/bstansell/conserver.git
synced 2025-02-20 17:02:47 +00:00
Imported from conserver-8.1.17.tar.gz
This commit is contained in:
parent
019277a041
commit
0c74cb3ece
22
CHANGES
22
CHANGES
@ -1,6 +1,26 @@
|
||||
CHANGES
|
||||
=======
|
||||
|
||||
version 8.1.17 (Sep 29, 2009):
|
||||
- fix for interface detection when HAVE_SA_LEN is defined - first
|
||||
detected on NetBSD 5.0 and patched by Chris Ross
|
||||
<cross+conserver@distal.com>
|
||||
- first person to connect to a console wanting read/write now gets it
|
||||
once the active user drops read/write - suggested by Thomas Gardner
|
||||
<tmg@pobox.com>
|
||||
- fix typo when setting nonblocking socket for client connections,
|
||||
fixing stall issues - patch by Eric Biederman
|
||||
<ebiederm@aristanetworks.com>
|
||||
- GSS-API patch (--with-gssapi) to help with Kerberos tokens - patch by
|
||||
Nate Straz <nstraz@redhat.com>
|
||||
- authenticate username without @REALM when using GSS-API
|
||||
(--with-striprealm) - based on patch by Andras Horvath
|
||||
<Andras.Horvath@cern.ch>
|
||||
- various contrib/redhat-rpm fixes - patch by Fabien Wernli
|
||||
<wernli@in2p3.fr>
|
||||
- fix handling of read(stdin) returning -1 in console client - patch by
|
||||
Ed Swierk <eswierk@arastra.com>
|
||||
|
||||
version 8.1.16 (Apr 10, 2007):
|
||||
- added 'replstring' substitution option - inspired by
|
||||
conversation with Owen DeLong <owen@c2company.com>
|
||||
@ -874,5 +894,5 @@ before version 6.05:
|
||||
and enhancements of various types were applied.
|
||||
|
||||
#
|
||||
# $Id: CHANGES,v 1.218 2007/04/10 21:35:45 bryan Exp $
|
||||
# $Id: CHANGES,v 1.222 2009/09/29 06:24:53 bryan Exp $
|
||||
#
|
||||
|
36
config.guess
vendored
36
config.guess
vendored
@ -1,10 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
# Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2007-03-06'
|
||||
timestamp='2008-01-23'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@ -56,8 +56,8 @@ version="\
|
||||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@ -330,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
|
||||
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit ;;
|
||||
i86pc:SunOS:5.*:*)
|
||||
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
|
||||
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit ;;
|
||||
sun4*:SunOS:6*:*)
|
||||
@ -532,7 +532,7 @@ EOF
|
||||
echo rs6000-ibm-aix3.2
|
||||
fi
|
||||
exit ;;
|
||||
*:AIX:*:[45])
|
||||
*:AIX:*:[456])
|
||||
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
|
||||
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
|
||||
IBM_ARCH=rs6000
|
||||
@ -793,12 +793,15 @@ EOF
|
||||
exit ;;
|
||||
*:Interix*:[3456]*)
|
||||
case ${UNAME_MACHINE} in
|
||||
x86)
|
||||
x86)
|
||||
echo i586-pc-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
EM64T | authenticamd)
|
||||
echo x86_64-unknown-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
IA64)
|
||||
echo ia64-unknown-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
esac ;;
|
||||
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
||||
echo i${UNAME_MACHINE}-pc-mks
|
||||
@ -833,7 +836,14 @@ EOF
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
arm*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
||||
fi
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
@ -954,8 +964,8 @@ EOF
|
||||
x86_64:Linux:*:*)
|
||||
echo x86_64-unknown-linux-gnu
|
||||
exit ;;
|
||||
xtensa:Linux:*:*)
|
||||
echo xtensa-unknown-linux-gnu
|
||||
xtensa*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
@ -1474,9 +1484,9 @@ This script, last modified $timestamp, has failed to recognize
|
||||
the operating system you are using. It is advised that you
|
||||
download the most up to date version of the config scripts from
|
||||
|
||||
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||
and
|
||||
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||
|
||||
If the version you run ($0) is already up to date, please
|
||||
send the following data and any information you think might be
|
||||
|
45
config.h.in
45
config.h.in
@ -75,6 +75,9 @@
|
||||
/* Define to 1 if you have the `grantpt' function. */
|
||||
#undef HAVE_GRANTPT
|
||||
|
||||
/* have gss-api support */
|
||||
#undef HAVE_GSSAPI
|
||||
|
||||
/* Define to 1 if you have the <hpsecurity.h> header file. */
|
||||
#undef HAVE_HPSECURITY_H
|
||||
|
||||
@ -333,6 +336,9 @@
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* retry username without @REALM with gss-api authentication */
|
||||
#undef STRIP_REALM
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
@ -348,15 +354,40 @@
|
||||
/* use tcp_wrappers libwrap */
|
||||
#undef USE_LIBWRAP
|
||||
|
||||
/* Defined if we use Unix domain sockets */
|
||||
#undef USE_UNIX_DOMAIN_SOCKETS
|
||||
|
||||
/* Define to 1 if on AIX 3.
|
||||
System headers sometimes define this.
|
||||
We just want to avoid a redefinition error message. */
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
#endif
|
||||
/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# undef _GNU_SOURCE
|
||||
#endif
|
||||
/* Enable threading extensions on Solaris. */
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
# undef _POSIX_PTHREAD_SEMANTICS
|
||||
#endif
|
||||
/* Enable extensions on HP NonStop. */
|
||||
#ifndef _TANDEM_SOURCE
|
||||
# undef _TANDEM_SOURCE
|
||||
#endif
|
||||
/* Enable general extensions on Solaris. */
|
||||
#ifndef __EXTENSIONS__
|
||||
# undef __EXTENSIONS__
|
||||
#endif
|
||||
|
||||
|
||||
/* Defined if we use Unix domain sockets */
|
||||
#undef USE_UNIX_DOMAIN_SOCKETS
|
||||
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Define like PROTOTYPES; this can be used by system headers. */
|
||||
#undef __PROTOTYPES
|
||||
@ -376,7 +407,7 @@
|
||||
/* Define if <signal.h> does not define sig_atomic_t */
|
||||
#undef sig_atomic_t
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
|
52
config.sub
vendored
52
config.sub
vendored
@ -1,10 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
# Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2007-01-18'
|
||||
timestamp='2008-01-16'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@ -72,8 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@ -369,10 +369,14 @@ case $basic_machine in
|
||||
| v850-* | v850e-* | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||
| xstormy16-* | xtensa-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
| ymp-* \
|
||||
| z8k-*)
|
||||
;;
|
||||
# Recognize the basic CPU types without company name, with glob match.
|
||||
xtensa*)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
386bsd)
|
||||
@ -443,6 +447,14 @@ case $basic_machine in
|
||||
basic_machine=ns32k-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
blackfin)
|
||||
basic_machine=bfin-unknown
|
||||
os=-linux
|
||||
;;
|
||||
blackfin-*)
|
||||
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
c90)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
@ -475,8 +487,8 @@ case $basic_machine in
|
||||
basic_machine=craynv-cray
|
||||
os=-unicosmp
|
||||
;;
|
||||
cr16c)
|
||||
basic_machine=cr16c-unknown
|
||||
cr16)
|
||||
basic_machine=cr16-unknown
|
||||
os=-elf
|
||||
;;
|
||||
crds | unos)
|
||||
@ -668,6 +680,14 @@ case $basic_machine in
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
m68knommu)
|
||||
basic_machine=m68k-unknown
|
||||
os=-linux
|
||||
;;
|
||||
m68knommu-*)
|
||||
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
@ -683,6 +703,10 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
basic_machine=arm-unknown
|
||||
os=-mingw32ce
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
@ -809,6 +833,14 @@ case $basic_machine in
|
||||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
parisc)
|
||||
basic_machine=hppa-unknown
|
||||
os=-linux
|
||||
;;
|
||||
parisc-*)
|
||||
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
@ -1017,6 +1049,10 @@ case $basic_machine in
|
||||
basic_machine=tic6x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tile*)
|
||||
basic_machine=tile-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
|
93
configure.in
93
configure.in
@ -14,6 +14,8 @@ AH_TEMPLATE([USE_LIBWRAP], [use tcp_wrappers libwrap])
|
||||
dnl AH_TEMPLATE([HAVE_POSIX_REGCOMP], [have POSIX regcomp])
|
||||
AH_TEMPLATE([HAVE_PAM], [have PAM support])
|
||||
AH_TEMPLATE([HAVE_OPENSSL], [have openssl support])
|
||||
AH_TEMPLATE([HAVE_GSSAPI], [have gss-api support])
|
||||
AH_TEMPLATE([STRIP_REALM], [retry username without @REALM with gss-api authentication])
|
||||
AH_TEMPLATE([HAVE_DMALLOC], [have dmalloc support])
|
||||
AH_TEMPLATE([HAVE_SA_LEN],[Defined if sa_len member exists in struct sockaddr])
|
||||
AH_TEMPLATE([TRUST_REVERSE_DNS],[Defined if we trust reverse DNS])
|
||||
@ -499,6 +501,83 @@ AC_ARG_WITH(openssl,
|
||||
fi]
|
||||
)
|
||||
|
||||
cons_with_gssapi="NO"
|
||||
cons_strip_realm="NO"
|
||||
AC_ARG_WITH(gssapi,
|
||||
AS_HELP_STRING([--with-gssapi@<:@=PATH@:>@],
|
||||
[Compile in GSS-API support]),
|
||||
[if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
GSSAPICPPFLAGS="-I$withval/include"
|
||||
if test "$use_dash_r" != "yes"; then
|
||||
GSSAPILDFLAGS="-L$withval/lib"
|
||||
else
|
||||
GSSAPILDFLAGS="-L$withval/lib -R$withval/lib"
|
||||
fi
|
||||
else
|
||||
GSSAPICPPFLAGS=""
|
||||
GSSAPILDFLAGS=""
|
||||
fi
|
||||
|
||||
oCPPFLAGS="$CPPFLAGS"
|
||||
oLDFLAGS="$LDFLAGS"
|
||||
oLIBS="$LIBS"
|
||||
have_gssapi=no
|
||||
|
||||
CPPFLAGS="$CPPFLAGS $GSSAPICPPFLAGS"
|
||||
LDFLAGS="$LDFLAGS $GSSAPILDFLAGS"
|
||||
|
||||
AC_CHECK_HEADER([gssapi/gssapi.h],
|
||||
[LIBS="$oLIBS -lgssapi"
|
||||
AC_MSG_CHECKING(for gssapi library -lgssapi)
|
||||
AC_TRY_LINK([#include <gssapi/gssapi.h>
|
||||
],[gss_create_empty_oid_set(NULL, NULL)],
|
||||
[AC_MSG_RESULT(yes)
|
||||
cons_with_gssapi="YES"
|
||||
AC_DEFINE(HAVE_GSSAPI)
|
||||
have_gssapi=yes],
|
||||
[AC_MSG_RESULT(no)
|
||||
LIBS="$oLIBS -lgssglue"
|
||||
AC_MSG_CHECKING(for gssapi library -lgssglue)
|
||||
AC_TRY_LINK([#include <gssapi/gssapi.h>
|
||||
],[gss_create_empty_oid_set(NULL, NULL)],
|
||||
[AC_MSG_RESULT(yes)
|
||||
cons_with_gssapi="YES"
|
||||
AC_DEFINE(HAVE_GSSAPI)
|
||||
have_gssapi=yes],
|
||||
[AC_MSG_RESULT(no)
|
||||
LIBS="$oLIBS -lgss"
|
||||
AC_MSG_CHECKING(for gssapi library -lgss)
|
||||
AC_TRY_LINK([#include <gssapi/gssapi.h>
|
||||
],[gss_create_empty_oid_set(NULL, NULL)],
|
||||
[AC_MSG_RESULT(yes)
|
||||
cons_with_gssapi="YES"
|
||||
AC_DEFINE(HAVE_GSSAPI)
|
||||
have_gssapi=yes],
|
||||
[AC_MSG_RESULT(no)])])])],)
|
||||
|
||||
if test $have_gssapi = no; then
|
||||
LIBS="$oLIBS"
|
||||
CPPFLAGS="$oCPPFLAGS"
|
||||
LDFLAGS="$oLDFLAGS"
|
||||
else
|
||||
AC_MSG_CHECKING(whether to fallback to username without @REALM)
|
||||
AC_ARG_WITH(striprealm,
|
||||
AS_HELP_STRING([--with-striprealm],[retry username without @REALM with gss-api authentication]),
|
||||
[case "$withval" in
|
||||
yes)
|
||||
AC_DEFINE(STRIP_REALM)
|
||||
AC_MSG_RESULT(yes)
|
||||
cons_strip_realm="YES"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
esac],[AC_MSG_RESULT(no)])
|
||||
fi
|
||||
fi]
|
||||
)
|
||||
|
||||
cons_with_dmalloc="NO"
|
||||
AC_ARG_WITH(dmalloc,
|
||||
AS_HELP_STRING([--with-dmalloc@<:@=PATH@:>@],
|
||||
@ -654,11 +733,15 @@ AC_OUTPUT
|
||||
echo "=============================================================="
|
||||
echo " Feature Summary"
|
||||
echo ""
|
||||
echo " Unix domain sockets (--with-uds) : $cons_with_uds"
|
||||
echo " TCP wrappers (--with-libwrap): $cons_with_libwrap"
|
||||
echo " OpenSSL (--with-openssl): $cons_with_openssl"
|
||||
echo " dmalloc (--with-dmalloc): $cons_with_dmalloc"
|
||||
echo " PAM support (--with-pam) : $cons_with_pam"
|
||||
echo " Unix domain sockets (--with-uds) : $cons_with_uds"
|
||||
echo " TCP wrappers (--with-libwrap) : $cons_with_libwrap"
|
||||
echo " OpenSSL (--with-openssl) : $cons_with_openssl"
|
||||
echo " GSS-API (--with-gssapi) : $cons_with_gssapi"
|
||||
if [ $cons_with_gssapi = "YES" ]; then
|
||||
echo " strip @REALM (--with-striprealm): $cons_strip_realm"
|
||||
fi
|
||||
echo " dmalloc (--with-dmalloc) : $cons_with_dmalloc"
|
||||
echo " PAM support (--with-pam) : $cons_with_pam"
|
||||
echo ""
|
||||
echo "=============================================================="
|
||||
]
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $Id: conserver.cf.man,v 1.78 2007/04/02 17:59:16 bryan Exp $
|
||||
.TH CONSERVER.CF 5 "2007/04/02" "conserver-8.1.16" "conserver"
|
||||
.TH CONSERVER.CF 5 "2007/04/02" "conserver-8.1.17" "conserver"
|
||||
.SH NAME
|
||||
conserver.cf \- console configuration file for
|
||||
.BR conserver (8)
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $Id: conserver.passwd.man,v 1.10 2004/01/08 16:12:33 bryan Exp $
|
||||
.TH CONSERVER.PASSWD 5 "2004/01/08" "conserver-8.1.16" "conserver"
|
||||
.TH CONSERVER.PASSWD 5 "2004/01/08" "conserver-8.1.17" "conserver"
|
||||
.SH NAME
|
||||
conserver.passwd \- user access information for
|
||||
.BR conserver (8)
|
||||
|
463
conserver.html
463
conserver.html
@ -1,289 +1,288 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META name="generator" content=
|
||||
"HTML Tidy for Solaris (vers 1st May 2002), see www.w3.org">
|
||||
<META name="keywords" content=
|
||||
"conserver,serial,console,serial console,unix,tty,ttya,ttyb, rs-232,rs232,bryan stansell,stansell,console server,terminal server,headless">
|
||||
<META name="author" content=
|
||||
"Bryan Stansell <bryan@conserver.com>">
|
||||
<LINK rel="SHORTCUT ICON" href="conserver.ico">
|
||||
<LINK rel="icon" href="conserver.ico">
|
||||
<HEAD>
|
||||
<META name="generator" content=
|
||||
"HTML Tidy for Solaris (vers 7 December 2008), see www.w3.org">
|
||||
<META name="keywords" content=
|
||||
"conserver,serial,console,serial console,unix,tty,ttya,ttyb, rs-232,rs232,bryan stansell,stansell,console server,terminal server,headless">
|
||||
<META name="author" content=
|
||||
"Bryan Stansell <bryan@conserver.com>">
|
||||
<LINK rel="SHORTCUT ICON" href="conserver.ico">
|
||||
<LINK rel="icon" href="conserver.ico">
|
||||
|
||||
<TITLE>Conserver</TITLE>
|
||||
|
||||
<STYLE type="text/css">
|
||||
body {
|
||||
<TITLE>Conserver</TITLE>
|
||||
<STYLE type="text/css">
|
||||
body {
|
||||
background-color: #EEEEEE;
|
||||
color: black;
|
||||
}
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
}
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY>
|
||||
<TABLE summary="Logo" bgcolor="black" width="100%" align=
|
||||
"center">
|
||||
<TR>
|
||||
<TD align="center"><IMG src="conserver.jpg" alt=
|
||||
"Conserver"><BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<BODY>
|
||||
<TABLE summary="Logo" bgcolor="black" width="100%" align=
|
||||
"center">
|
||||
<TR>
|
||||
<TD align="center"><IMG src="conserver.jpg" alt=
|
||||
"Conserver"><BR></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<TABLE summary="Conserver Page" width="80%" align="center">
|
||||
<TR>
|
||||
<TD colspan="2" align="center">Please pick your closest
|
||||
mirror: <A href=
|
||||
"http://planetmirror.com/pub/conserver/">Australia</A>
|
||||
<A href=
|
||||
"http://conserver.linux-mirror.org/">Germany</A>
|
||||
<A href=
|
||||
"http://conserver.webdesign-zdg.de/">Germany</A>
|
||||
<A href=
|
||||
"http://conserver.cybermirror.org/">Germany</A>
|
||||
<A href=
|
||||
"http://conserver.oss-mirror.org/">Ireland</A>
|
||||
<A href="http://conserver.rinet.ru/">Russia</A>
|
||||
<A href="http://www.conserver.com/">US-West
|
||||
(Primary)</A><BR>
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
<TABLE summary="Conserver Page" width="80%" align="center">
|
||||
<TR>
|
||||
<TD colspan="2" align="center">Please pick your closest
|
||||
mirror: <A href=
|
||||
"http://planetmirror.com/pub/conserver/">Australia</A>
|
||||
<A href=
|
||||
"http://conserver.linux-mirror.org/">Germany</A>
|
||||
<A href=
|
||||
"http://conserver.webdesign-zdg.de/">Germany</A>
|
||||
<A href=
|
||||
"http://conserver.cybermirror.org/">Germany</A>
|
||||
<A href=
|
||||
"http://conserver.oss-mirror.org/">Ireland</A>
|
||||
<A href="http://conserver.rinet.ru/">Russia</A>
|
||||
<A href="http://www.conserver.com/">US-West
|
||||
(Primary)</A><BR>
|
||||
<BR></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>
|
||||
<!-- empty cell here, then search box on right spans two rows,
|
||||
then we have the text that appears on the left, so things
|
||||
appear in the right order so they look right in lynx
|
||||
-->
|
||||
</TD>
|
||||
<TR>
|
||||
<TD>
|
||||
<!-- empty cell here, then search box on right spans two rows,
|
||||
then we have the text that appears on the left, so things
|
||||
appear in the right order so they look right in lynx
|
||||
--></TD>
|
||||
|
||||
<TD rowspan="2" align="right">
|
||||
<FORM method="post" action=
|
||||
"http://www.conserver.com/cgi-bin/htsearch">
|
||||
<INPUT type="HIDDEN" name="method" value="and"> <INPUT
|
||||
type="HIDDEN" name="format" value="builtin-long">
|
||||
<INPUT type="HIDDEN" name="sort" value="score"> <INPUT
|
||||
type="HIDDEN" name="config" value="conserver.com">
|
||||
<INPUT type="HIDDEN" name="restrict" value=""> <INPUT
|
||||
type="HIDDEN" name="exclude" value=""> <INPUT type=
|
||||
"TEXT" size="20" name="words" value=""> <INPUT type=
|
||||
"SUBMIT" value="Search">
|
||||
</FORM>
|
||||
</TD>
|
||||
</TR>
|
||||
<TD rowspan="2" align="right">
|
||||
<FORM method="post" action=
|
||||
"http://www.conserver.com/cgi-bin/htsearch">
|
||||
<INPUT type="hidden" name="method" value="and">
|
||||
<INPUT type="hidden" name="format" value="builtin-long">
|
||||
<INPUT type="hidden" name="sort" value="score">
|
||||
<INPUT type="hidden" name="config" value=""> <INPUT type=
|
||||
"hidden" name="restrict" value=""> <INPUT type="hidden"
|
||||
name="exclude" value=""> <INPUT type="text" size="20"
|
||||
name="words" value=""> <INPUT type="submit" value=
|
||||
"Search">
|
||||
</FORM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD>
|
||||
<H3>What is conserver?</H3>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<H3>What is conserver?</H3>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD colspan="2">
|
||||
<P>From an email I once sent...</P>
|
||||
<TR>
|
||||
<TD colspan="2">
|
||||
<P>From an email I once sent...</P>
|
||||
|
||||
<P>Conserver is an application that allows multiple users
|
||||
to watch a serial console at the same time. It can log
|
||||
the data, allows users to take write-access of a console
|
||||
(one at a time), and has a variety of bells and whistles
|
||||
to accentuate that basic functionality. The idea is that
|
||||
conserver will log all your serial traffic so you can go
|
||||
back and review why something crashed, look at changes
|
||||
(if done on the console), or tie the console logs into a
|
||||
monitoring system (just watch the logfiles it creates).
|
||||
With multi-user capabilities you can work on equipment
|
||||
with others, mentor, train, etc. It also does all that
|
||||
client-server stuff so that, assuming you have a network
|
||||
connection, you can interact with any of the equipment
|
||||
from home or wherever.</P>
|
||||
<P>Conserver is an application that allows multiple users
|
||||
to watch a serial console at the same time. It can log the
|
||||
data, allows users to take write-access of a console (one
|
||||
at a time), and has a variety of bells and whistles to
|
||||
accentuate that basic functionality. The idea is that
|
||||
conserver will log all your serial traffic so you can go
|
||||
back and review why something crashed, look at changes (if
|
||||
done on the console), or tie the console logs into a
|
||||
monitoring system (just watch the logfiles it creates).
|
||||
With multi-user capabilities you can work on equipment with
|
||||
others, mentor, train, etc. It also does all that
|
||||
client-server stuff so that, assuming you have a network
|
||||
connection, you can interact with any of the equipment from
|
||||
home or wherever.</P>
|
||||
|
||||
<H3>The FAQ</H3>
|
||||
Here's the conserver <A href="FAQ">FAQ</A>. Got any
|
||||
additions? Let me know.
|
||||
<H3>The FAQ</H3>Here's the conserver <A href="FAQ">FAQ</A>.
|
||||
Got any additions? Let me know.
|
||||
|
||||
<H3>Mailing Lists</H3>
|
||||
<H3>Mailing Lists</H3>
|
||||
|
||||
<P>There are currently two mailing lists available. <A
|
||||
href=
|
||||
"mailto:announce@conserver.com">announce@conserver.com</A>
|
||||
is an announcement-only mailing list for informing of new
|
||||
versions, major developments, etc. <A href=
|
||||
"mailto:users@conserver.com">users@conserver.com</A> is
|
||||
for general Q&A, discussions, ideas, etc. for
|
||||
conserver users. You can sign up by sending a message to
|
||||
<A href=
|
||||
"mailto:announce-request@conserver.com">announce-request@conserver.com</A>
|
||||
or <A href=
|
||||
"mailto:users-request@conserver.com">users-request@conserver.com</A>
|
||||
with a subject of "subscribe" or head over to the online
|
||||
<A href="https://www.conserver.com/mailman/listinfo">web
|
||||
pages</A>.</P>
|
||||
<P>There are currently two mailing lists available.
|
||||
<A href="mailto:announce@conserver.com">announce@conserver.com</A>
|
||||
is an announcement-only mailing list for informing of new
|
||||
versions, major developments, etc. <A href=
|
||||
"mailto:users@conserver.com">users@conserver.com</A> is for
|
||||
general Q&A, discussions, ideas, etc. for conserver
|
||||
users. You can sign up by sending a message to <A href=
|
||||
"mailto:announce-request@conserver.com">announce-request@conserver.com</A>
|
||||
or <A href=
|
||||
"mailto:users-request@conserver.com">users-request@conserver.com</A>
|
||||
with a subject of "subscribe" or head over to the online
|
||||
<A href="https://www.conserver.com/mailman/listinfo">web
|
||||
pages</A>.</P>
|
||||
|
||||
<H3>Origin</H3>
|
||||
<H3>Origin</H3>
|
||||
|
||||
<P>The console server software found here is a heavily
|
||||
modified version originally written by <A href=
|
||||
"http://hea-www.harvard.edu/~fine/">Tom Fine</A> (<A
|
||||
href=
|
||||
"mailto:fine@head-cfa.harvard.edu">fine@head-cfa.harvard.edu</A>)
|
||||
at <A href="http://www.ohio-state.edu/">Ohio State</A>
|
||||
and then Kevin S Braunsdorf (<A href=
|
||||
"mailto:ksb+conserver@sa.fedex.com">ksb+conserver@sa.fedex.com</A>)
|
||||
at <A href="http://www.purdue.edu/">Purdue
|
||||
University</A>. Patches from Robert Olson (<A href=
|
||||
"mailto:olson@mcs.anl.gov">olson@mcs.anl.gov</A>) at <A
|
||||
href="http://www.anl.gov/">Argonne National
|
||||
Laboratory</A> were then applied to get network console
|
||||
support.</P>
|
||||
<P>The console server software found here is a heavily
|
||||
modified version originally written by <A href=
|
||||
"http://hea-www.harvard.edu/~fine/">Tom Fine</A> (<A href=
|
||||
"mailto:fine@head-cfa.harvard.edu">fine@head-cfa.harvard.edu</A>)
|
||||
at <A href="http://www.ohio-state.edu/">Ohio State</A> and
|
||||
then Kevin S Braunsdorf (<A href=
|
||||
"mailto:ksb+conserver@sa.fedex.com">ksb+conserver@sa.fedex.com</A>)
|
||||
at <A href="http://www.purdue.edu/">Purdue University</A>.
|
||||
Patches from Robert Olson (<A href=
|
||||
"mailto:olson@mcs.anl.gov">olson@mcs.anl.gov</A>) at
|
||||
<A href="http://www.anl.gov/">Argonne National
|
||||
Laboratory</A> were then applied to get network console
|
||||
support.</P>
|
||||
|
||||
<P>Arnold de Leon (<A href=
|
||||
"mailto:arnold@corp.webtv.net">arnold@corp.webtv.net</A>)
|
||||
then fixed various bugs and added enhancements while at
|
||||
<A href="http://www.synopsys.com/">Synopsys</A>. I then
|
||||
took the result, continued fixing things, and added
|
||||
features we found useful.</P>
|
||||
<P>Arnold de Leon (<A href=
|
||||
"mailto:arnold@corp.webtv.net">arnold@corp.webtv.net</A>)
|
||||
then fixed various bugs and added enhancements while at
|
||||
<A href="http://www.synopsys.com/">Synopsys</A>. I then
|
||||
took the result, continued fixing things, and added
|
||||
features we found useful.</P>
|
||||
|
||||
<P><A href="http://www.gnac.com/">GNAC</A> (Global
|
||||
Networking and Computing - currently <A href=
|
||||
"http://www.certaintysolutions.com/">Certainty
|
||||
Solutions</A>) has been supporting my coding efforts (in
|
||||
too many ways to list) since 1996.</P>
|
||||
<P><A href="http://www.gnac.com/">GNAC</A> (Global
|
||||
Networking and Computing - currently <A href=
|
||||
"http://www.certaintysolutions.com/">Certainty
|
||||
Solutions</A>) has been supporting my coding efforts (in
|
||||
too many ways to list) since 1996.</P>
|
||||
|
||||
<H3>The conserver.com Distribution</H3>
|
||||
<H3>The conserver.com Distribution</H3>
|
||||
|
||||
<P>The result is a combination of many people's work.
|
||||
This version is being released in hopes that it will help
|
||||
others. There is no warranty or support implied by the
|
||||
distribution of the software.</P>
|
||||
<P>The result is a combination of many people's work. This
|
||||
version is being released in hopes that it will help
|
||||
others. There is no warranty or support implied by the
|
||||
distribution of the software.</P>
|
||||
|
||||
<P>So, what the heck is up with all the different
|
||||
conserver versions? Well, the original authors are
|
||||
continuing to distribute their own threads of the
|
||||
software so you have three main threads (as far as I
|
||||
know). First, there's Tom Fine's thread at <A href=
|
||||
"http://hea-www.harvard.edu/~fine/Tech/console-server.html">
|
||||
http://hea-www.harvard.edu/~fine/Tech/console-server.html</A>.
|
||||
He isn't actively developing it, however, according to
|
||||
the website. Next, there's Kevin Braunsdorf's version at
|
||||
<A href=
|
||||
"http://www.npcguild.org/software/pundits/">http://www.npcguild.org/software/pundits/</A>.
|
||||
It doesn't look like Kevin is working on his thread ony
|
||||
more either. No new versions have been out since August
|
||||
2000 (version 8.5), but maybe this info will be out of
|
||||
date by the time you read this (I last checked Feb 10,
|
||||
2004). Lastly, the conserver.com version is based on
|
||||
Kevin's "5.21-Beta" distribution, but since
|
||||
<B>HEAVILY</B> modified and enhanced (more details in the
|
||||
"Origin" section above).</P>
|
||||
<P>So, what the heck is up with all the different conserver
|
||||
versions? Well, the original authors are continuing to
|
||||
distribute their own threads of the software so you have
|
||||
three main threads (as far as I know). First, there's Tom
|
||||
Fine's thread at <A href=
|
||||
"http://hea-www.harvard.edu/~fine/Tech/console-server.html">
|
||||
http://hea-www.harvard.edu/~fine/Tech/console-server.html</A>.
|
||||
He isn't actively developing it, however, according to the
|
||||
website. Next, there's Kevin Braunsdorf's version at
|
||||
<A href=
|
||||
"http://www.npcguild.org/software/pundits/">http://www.npcguild.org/software/pundits/</A>.
|
||||
It doesn't look like Kevin is working on his thread ony
|
||||
more either. No new versions have been out since August
|
||||
2000 (version 8.5), but maybe this info will be out of date
|
||||
by the time you read this (I last checked Feb 10, 2004).
|
||||
Lastly, the conserver.com version is based on Kevin's
|
||||
"5.21-Beta" distribution, but since <B>HEAVILY</B> modified
|
||||
and enhanced (more details in the "Origin" section
|
||||
above).</P>
|
||||
|
||||
<P>If I were looking for a conserver package I would
|
||||
definitely use the conserver.com distribution. Why? It's
|
||||
actively maintained, has many more features than the
|
||||
other versions (see <A href="CHANGES">CHANGES</A> for a
|
||||
semi-scary history), and has an active user community.
|
||||
Kevin's version does have UPS support (basic serial port
|
||||
line toggling bits) which is missing in the conserver.com
|
||||
version, but no one has asked me for it, so does anyone
|
||||
actually need it?</P>
|
||||
<P>If I were looking for a conserver package I would
|
||||
definitely use the conserver.com distribution. Why? It's
|
||||
actively maintained, has many more features than the other
|
||||
versions (see <A href="CHANGES">CHANGES</A> for a
|
||||
semi-scary history), and has an active user community.
|
||||
Kevin's version does have UPS support (basic serial port
|
||||
line toggling bits) which is missing in the conserver.com
|
||||
version, but no one has asked me for it, so does anyone
|
||||
actually need it?</P>
|
||||
|
||||
<H3>Downloading</H3>
|
||||
<H3>Downloading</H3>
|
||||
|
||||
<P>The current version, released on Apr 10, 2007, is <A
|
||||
href="8.1.16.tar.gz">8.1.16.tar.gz</A>. You can get it
|
||||
via <A href=
|
||||
"ftp://ftp.conserver.com/conserver/8.1.16.tar.gz">FTP</A>
|
||||
or <A href="8.1.16.tar.gz">HTTP</A>. See the <A href=
|
||||
"CHANGES">CHANGES</A> file for information on the latest
|
||||
updates.</P>
|
||||
<P>The current version, released on Sep 29, 2009, is
|
||||
<A href="8.1.17.tar.gz">8.1.17.tar.gz</A>. You can get it
|
||||
via <A href=
|
||||
"ftp://ftp.conserver.com/conserver/8.1.17.tar.gz">FTP</A>
|
||||
or <A href="8.1.17.tar.gz">HTTP</A>. See the <A href=
|
||||
"CHANGES">CHANGES</A> file for information on the latest
|
||||
updates.</P>
|
||||
|
||||
<P>As of version 6.1.7, the packaging and numbering
|
||||
scheme has changed. I used to package conserver as
|
||||
conserver-GNAC-v.vv. Since <A href=
|
||||
"http://www.gnac.com/">GNAC</A> (now <A href=
|
||||
"http://www.certaintysolutions.com/">Certainty
|
||||
Solutions</A>) has changed its name I've decided to drop
|
||||
the GNAC portion and use a three-digit version number
|
||||
(conserver-v.v.v). Why change the version numbering? I
|
||||
need to differentiate this thread of the code from the
|
||||
original authors' and I couldn't come up with a good
|
||||
replacement for the GNAC name - sad, but true.</P>
|
||||
<P>For those worried about legal issues, the <A href=
|
||||
"LICENSE">LICENSE</A> file should help show it's
|
||||
distributed under a <A href=
|
||||
"http://www.opensource.org/licenses/bsd-license.php">BSD
|
||||
license.</A></P>
|
||||
|
||||
<H3>Installation</H3>
|
||||
<P>As of version 6.1.7, the packaging and numbering scheme
|
||||
has changed. I used to package conserver as
|
||||
conserver-GNAC-v.vv. Since <A href=
|
||||
"http://www.gnac.com/">GNAC</A> (now <A href=
|
||||
"http://www.certaintysolutions.com/">Certainty
|
||||
Solutions</A>) has changed its name I've decided to drop
|
||||
the GNAC portion and use a three-digit version number
|
||||
(conserver-v.v.v). Why change the version numbering? I need
|
||||
to differentiate this thread of the code from the original
|
||||
authors' and I couldn't come up with a good replacement for
|
||||
the GNAC name - sad, but true.</P>
|
||||
|
||||
<P>Check the <A href="INSTALL">INSTALL</A> file for
|
||||
instructions.</P>
|
||||
<H3>Installation</H3>
|
||||
|
||||
<H3>Online Documentation</H3>
|
||||
<P>Check the <A href="INSTALL">INSTALL</A> file for
|
||||
instructions.</P>
|
||||
|
||||
<P>I've put a small set of documentation <A href=
|
||||
"docs/">here</A>. I'm hoping to expand it over time.</P>
|
||||
<H3>Online Documentation</H3>
|
||||
|
||||
<H3>Systems Tested</H3>
|
||||
<P>I've put a small set of documentation <A href=
|
||||
"docs/">here</A>. I'm hoping to expand it over time.</P>
|
||||
|
||||
<P>Here's a list of systems that I've been told can
|
||||
successfully compile conserver. If anyone has more to add
|
||||
to this list (or something on the list doesn't work any
|
||||
more), please let me know.</P>
|
||||
<H3>Systems Tested</H3>
|
||||
|
||||
<UL>
|
||||
<LI>AIX 4.3.3/5.1/5.2, native cc</LI>
|
||||
<P>Here's a list of systems that I've been told can
|
||||
successfully compile conserver. If anyone has more to add
|
||||
to this list (or something on the list doesn't work any
|
||||
more), please let me know.</P>
|
||||
|
||||
<LI>BSDI BSD/OS 3.X, gcc</LI>
|
||||
<UL>
|
||||
<LI>AIX 4.3.3/5.1/5.2, native cc</LI>
|
||||
|
||||
<LI>Cygwin (w2k),gcc 2.95.3</LI>
|
||||
<LI>BSDI BSD/OS 3.X, gcc</LI>
|
||||
|
||||
<LI>DEC Tru64 4.0, gcc</LI>
|
||||
<LI>Cygwin (w2k),gcc 2.95.3</LI>
|
||||
|
||||
<LI>DEC Tru64 4.0/5.1, native cc</LI>
|
||||
<LI>DEC Tru64 4.0, gcc</LI>
|
||||
|
||||
<LI>FreeBSD 4.x (i386) gcc</LI>
|
||||
<LI>DEC Tru64 4.0/5.1, native cc</LI>
|
||||
|
||||
<LI>FreeBSD 5.x (i386/amd64/sparc64) gcc</LI>
|
||||
<LI>FreeBSD 4.x (i386) gcc</LI>
|
||||
|
||||
<LI>FreeBSD 6.x/7.x (i386/amd64/sparc64/ia64) gcc</LI>
|
||||
<LI>FreeBSD 5.x (i386/amd64/sparc64) gcc</LI>
|
||||
|
||||
<LI>HP-UX 10.20, gcc</LI>
|
||||
<LI>FreeBSD 6.x/7.x (i386/amd64/sparc64/ia64) gcc</LI>
|
||||
|
||||
<LI>HP-UX 11.10 parisc and ia64, native cc</LI>
|
||||
<LI>HP-UX 10.20, gcc</LI>
|
||||
|
||||
<LI>Irix 6.15, native cc</LI>
|
||||
<LI>HP-UX 11.10 parisc and ia64, native cc</LI>
|
||||
|
||||
<LI>Linux 2.2.18 (x86), gcc</LI>
|
||||
<LI>Irix 6.15, native cc</LI>
|
||||
|
||||
<LI>Linux 2.4.2 (x86), gcc</LI>
|
||||
<LI>Linux 2.2.18 (x86), gcc</LI>
|
||||
|
||||
<LI>Linux ia64, native gcc</LI>
|
||||
<LI>Linux 2.4.2 (x86), gcc</LI>
|
||||
|
||||
<LI>Linux RedHat 6.2 and 7.2 (x86), native gcc</LI>
|
||||
<LI>Linux ia64, native gcc</LI>
|
||||
|
||||
<LI>MacOS X, native gcc</LI>
|
||||
<LI>Linux RedHat 6.2 and 7.2 (x86), native gcc</LI>
|
||||
|
||||
<LI>Solaris 2.5.1 thru 9 (sparc/x86), gcc</LI>
|
||||
<LI>MacOS X, native gcc</LI>
|
||||
|
||||
<LI>Solaris 7/8, native cc</LI>
|
||||
<LI>Solaris 2.5.1 thru 9 (sparc/x86), gcc</LI>
|
||||
|
||||
<LI>Solaris 10 and Solaris Express (build 33) (x86),
|
||||
gcc and native cc</LI>
|
||||
</UL>
|
||||
<LI>Solaris 7/8, native cc</LI>
|
||||
|
||||
<H3>Other Good Information</H3>
|
||||
<LI>Solaris 10 and Solaris Express (build 33) (x86), gcc
|
||||
and native cc</LI>
|
||||
</UL>
|
||||
|
||||
<P>Zonker Harris has fabulous documents regarding the
|
||||
hookup of consoles to terminal servers and other such
|
||||
devices. His <A href="consoles/">Greater Scroll of
|
||||
Console Knowledge</A> is a great place to start.</P>
|
||||
<HR noshade>
|
||||
<H3>Other Good Information</H3>
|
||||
|
||||
<ADDRESS>
|
||||
Bryan Stansell (<A href=
|
||||
"mailto:bryan@conserver.com">bryan@conserver.com</A>)<BR>
|
||||
<P>Zonker Harris has fabulous documents regarding the
|
||||
hookup of consoles to terminal servers and other such
|
||||
devices. His <A href="consoles/">Greater Scroll of Console
|
||||
Knowledge</A> is a great place to start.</P>
|
||||
|
||||
</ADDRESS>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</BODY>
|
||||
<P>User community <A href="contrib/">contributions</A>
|
||||
contain a variety of helpful items.</P>
|
||||
<HR noshade>
|
||||
|
||||
<ADDRESS>
|
||||
Bryan Stansell (<A href=
|
||||
"mailto:bryan@conserver.com">bryan@conserver.com</A>)<BR>
|
||||
</ADDRESS>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: client.c,v 5.91 2007/04/02 18:18:58 bryan Exp $
|
||||
* $Id: client.c,v 5.93 2009/09/26 09:20:15 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -61,30 +61,32 @@ FindWrite(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
CONSCLIENT *pCLfound = (CONSCLIENT *)0;
|
||||
CONSCLIENT *pCL;
|
||||
|
||||
/* make the first guy to have the `want write' bit set the writer
|
||||
* (tell him of the promotion, too) we could look for the
|
||||
* most recent or some such... I guess it doesn't matter that
|
||||
* much.
|
||||
/* make the first guy (last on the list) to have the `want write' bit set
|
||||
* the writer (tell him of the promotion, too) we could look for the most
|
||||
* recent or some such... I guess it doesn't matter that much.
|
||||
*/
|
||||
if (pCE->pCLwr != (CONSCLIENT *)0 || pCE->fronly)
|
||||
return;
|
||||
|
||||
for (pCL = pCE->pCLon; (CONSCLIENT *)0 != pCL; pCL = pCL->pCLnext) {
|
||||
if (!pCL->fwantwr || pCL->fro)
|
||||
continue;
|
||||
pCL->fwantwr = 0;
|
||||
pCL->fwr = 1;
|
||||
if (pCL->fwantwr && !pCL->fro)
|
||||
pCLfound = pCL;
|
||||
}
|
||||
|
||||
if (pCLfound != (CONSCLIENT *)0) {
|
||||
pCLfound->fwantwr = 0;
|
||||
pCLfound->fwr = 1;
|
||||
if (pCE->nolog) {
|
||||
FileWrite(pCL->fd, FLAGFALSE, "\r\n[attached (nologging)]\r\n",
|
||||
-1);
|
||||
FileWrite(pCLfound->fd, FLAGFALSE,
|
||||
"\r\n[attached (nologging)]\r\n", -1);
|
||||
} else {
|
||||
FileWrite(pCL->fd, FLAGFALSE, "\r\n[attached]\r\n", -1);
|
||||
FileWrite(pCLfound->fd, FLAGFALSE, "\r\n[attached]\r\n", -1);
|
||||
}
|
||||
TagLogfileAct(pCE, "%s attached", pCL->acid->string);
|
||||
pCE->pCLwr = pCL;
|
||||
return;
|
||||
TagLogfileAct(pCE, "%s attached", pCLfound->acid->string);
|
||||
pCE->pCLwr = pCLfound;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
.\" @(#)conserver.8 01/06/91 OSU CIS; Thomas A. Fine
|
||||
.\" $Id: conserver.man,v 1.54 2006/12/31 02:02:48 bryan Exp $
|
||||
.TH CONSERVER 8 "2006/12/31" "conserver-8.1.16" "conserver"
|
||||
.TH CONSERVER 8 "2006/12/31" "conserver-8.1.17" "conserver"
|
||||
.SH NAME
|
||||
conserver \- console server daemon
|
||||
.SH SYNOPSIS
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: cutil.c,v 1.131 2006/12/26 07:27:34 bryan Exp $
|
||||
* $Id: cutil.c,v 1.133 2009/09/26 09:20:29 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -2283,7 +2283,7 @@ ProbeInterfaces(bindAddr)
|
||||
if ((ifc.ifc_len - r) < sizeof(*ifr))
|
||||
break;
|
||||
#ifdef HAVE_SA_LEN
|
||||
if (sa->sa_len > sizeof(ifr->ifr_addr))
|
||||
if (sa->sa_len > sizeof(ifr->ifr_irfu))
|
||||
r += sizeof(ifr->ifr_name) + sa->sa_len;
|
||||
else
|
||||
#endif
|
||||
@ -2745,11 +2745,7 @@ GetWord(fp, line, spaceok, word)
|
||||
if (c == '\n') {
|
||||
if (fname->used > 0) {
|
||||
while (fname->used > 1 && isspace((int)
|
||||
(fname->
|
||||
string
|
||||
[fname->
|
||||
used -
|
||||
2])))
|
||||
(fname->string[fname->used - 2])))
|
||||
fname->used--;
|
||||
if (fname->used > 0)
|
||||
fname->string[fname->used - 1] = '\000';
|
||||
@ -3039,8 +3035,8 @@ ParseFile(filename, fp, level)
|
||||
case VALUE:
|
||||
switch (token) {
|
||||
case WORD:
|
||||
(*sections[secIndex].items[keyIndex].
|
||||
reg) (word->string);
|
||||
(*sections[secIndex].
|
||||
items[keyIndex].reg) (word->string);
|
||||
state = SEMI;
|
||||
break;
|
||||
case SEMICOLON:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: cutil.h,v 1.68 2006/04/07 15:47:20 bryan Exp $
|
||||
* $Id: cutil.h,v 1.69 2009/09/26 09:23:04 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -15,6 +15,9 @@
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/err.h>
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
#include <gssapi/gssapi.h>
|
||||
#endif
|
||||
|
||||
/* communication constants
|
||||
*/
|
||||
@ -45,6 +48,9 @@ typedef enum IOState {
|
||||
#if HAVE_OPENSSL
|
||||
INSSLACCEPT,
|
||||
INSSLSHUTDOWN,
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
INGSSACCEPT,
|
||||
#endif
|
||||
ISFLUSHING
|
||||
} IOSTATE;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: group.c,v 5.329 2007/04/02 18:18:59 bryan Exp $
|
||||
* $Id: group.c,v 5.332 2009/09/26 09:58:05 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -151,7 +151,7 @@ SendCertainClientsMsg(pGE, who, message)
|
||||
return;
|
||||
}
|
||||
|
||||
if ((console = strchr(who, '@')) != (char *)0) {
|
||||
if ((console = strrchr(who, '@')) != (char *)0) {
|
||||
*console++ = '\000';
|
||||
if (*console == '\000')
|
||||
console = (char *)0;
|
||||
@ -352,7 +352,7 @@ DisconnectCertainClients(pGE, admin, who)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((console = strchr(who, '@')) != (char *)0) {
|
||||
if ((console = strrchr(who, '@')) != (char *)0) {
|
||||
*console++ = '\000';
|
||||
if (*console == '\000')
|
||||
console = (char *)0;
|
||||
@ -519,10 +519,39 @@ ClientAccess(pCE, user)
|
||||
char *user;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ClientAccess(): Authenticating user %s", user));
|
||||
|
||||
if (ConsentUserOk(pCE->rw, user) == 1)
|
||||
return 0;
|
||||
if (ConsentUserOk(pCE->ro, user) == 1)
|
||||
return 1;
|
||||
#if STRIP_REALM
|
||||
{
|
||||
/* try the username without @REALM against the ACL
|
||||
* this allows for falling back to PAM from kerberos5/gssapi
|
||||
* as the latter uses 'user@REALM' and the former only 'user'
|
||||
*/
|
||||
char *at;
|
||||
char *shortname;
|
||||
int ret = -1;
|
||||
|
||||
if ((at = strrchr(user, '@')) != (char *)0) {
|
||||
shortname = StrDup(user);
|
||||
*(shortname + (at - user)) = '\000';
|
||||
|
||||
CONDDEBUG((1,
|
||||
"ClientAccess(): Shortname computed from %s is %s",
|
||||
user, shortname));
|
||||
if (ConsentUserOk(pCE->rw, shortname) == 1) {
|
||||
ret = 0;
|
||||
} else if (ConsentUserOk(pCE->ro, shortname) == 1) {
|
||||
ret = 1;
|
||||
}
|
||||
free(shortname);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1869,6 +1898,65 @@ AttemptSSL(pCL)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_GSSAPI
|
||||
int
|
||||
#if PROTOTYPES
|
||||
AttemptGSSAPI(CONSCLIENT *pCL)
|
||||
#else
|
||||
AttemptGSSAPI(pCL)
|
||||
CONSCLIENT *pCL;
|
||||
#endif
|
||||
{
|
||||
int nr, ret = 0;
|
||||
char buf[1024];
|
||||
gss_buffer_desc sendtok, recvtok, dbuf;
|
||||
gss_ctx_id_t gssctx = GSS_C_NO_CONTEXT;
|
||||
OM_uint32 stmaj, stmin, mctx, dmin;
|
||||
gss_name_t user = 0;
|
||||
|
||||
if ((nr = FileRead(pCL->fd, buf, sizeof(buf))) <= 0) {
|
||||
return nr;
|
||||
}
|
||||
recvtok.value = buf;
|
||||
recvtok.length = nr;
|
||||
|
||||
stmaj =
|
||||
gss_accept_sec_context(&stmin, &gssctx, gss_mycreds, &recvtok,
|
||||
NULL, &user, NULL, &sendtok, NULL, NULL,
|
||||
NULL);
|
||||
switch (stmaj) {
|
||||
case GSS_S_COMPLETE:
|
||||
FileSetQuoteIAC(pCL->fd, FLAGFALSE);
|
||||
FileWrite(pCL->fd, FLAGFALSE, sendtok.value, sendtok.length);
|
||||
FileSetQuoteIAC(pCL->fd, FLAGTRUE);
|
||||
pCL->iState = S_NORMAL;
|
||||
gss_release_buffer(NULL, &sendtok);
|
||||
BuildString((char *)0, pCL->username);
|
||||
BuildString((char *)0, pCL->acid);
|
||||
stmaj = gss_display_name(&stmin, user, &dbuf, NULL);
|
||||
|
||||
BuildStringN(dbuf.value, dbuf.length, pCL->username);
|
||||
BuildStringN(dbuf.value, dbuf.length, pCL->acid);
|
||||
BuildStringChar('@', pCL->acid);
|
||||
BuildString(pCL->peername->string, pCL->acid);
|
||||
gss_release_name(&stmin, &user);
|
||||
gss_release_buffer(NULL, &dbuf);
|
||||
ret = 1;
|
||||
break;
|
||||
case GSS_S_CREDENTIALS_EXPIRED:
|
||||
/* reacquire creds and try again */
|
||||
Error("Credentials expired");
|
||||
break;
|
||||
default:
|
||||
gss_display_status(&dmin, stmaj, GSS_C_GSS_CODE,
|
||||
GSS_C_NULL_OID, &mctx, &dbuf);
|
||||
Error("GSSAPI didn't work, %*s", dbuf.length, dbuf.value);
|
||||
ret = -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
CONSENT *
|
||||
#if PROTOTYPES
|
||||
HuntForConsole(GRPENT *pGE, char *name)
|
||||
@ -2226,15 +2314,11 @@ CommandHosts(pGE, pCLServing, pCEServing, tyme, args)
|
||||
FilePrint(pCLServing->fd, FLAGFALSE,
|
||||
" %-24.24s %c %-4.4s %-.40s\r\n", pCE->server,
|
||||
pCE == pCEServing ? '*' : ' ', (pCE->fup &&
|
||||
pCE->ioState ==
|
||||
ISNORMAL) ? (pCE->
|
||||
initfile ==
|
||||
(CONSFILE *)
|
||||
0 ? "up" :
|
||||
"init") :
|
||||
"down",
|
||||
pCE->pCLwr ? pCE->pCLwr->acid->string : pCE->
|
||||
pCLon ? "<spies>" : "<none>");
|
||||
pCE->ioState == ISNORMAL)
|
||||
? (pCE->initfile == (CONSFILE *)
|
||||
0 ? "up" : "init") : "down",
|
||||
pCE->pCLwr ? pCE->pCLwr->acid->
|
||||
string : pCE->pCLon ? "<spies>" : "<none>");
|
||||
if (args != (char *)0)
|
||||
break;
|
||||
}
|
||||
@ -2945,6 +3029,7 @@ DoClientRead(pGE, pCLServing)
|
||||
static char *pcArgs;
|
||||
static char *pcCmd;
|
||||
|
||||
CONDDEBUG((1, "state = %d", pCLServing->iState));
|
||||
if ('\n' != acIn[i]) {
|
||||
BuildStringChar(acIn[i], pCLServing->accmd);
|
||||
continue;
|
||||
@ -2992,6 +3077,9 @@ DoClientRead(pGE, pCLServing)
|
||||
"login log in\r\n",
|
||||
#if HAVE_OPENSSL
|
||||
"ssl start ssl session\r\n",
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
"gssapi log in with gssapi\r\n",
|
||||
#endif
|
||||
(char *)0
|
||||
};
|
||||
@ -3032,6 +3120,14 @@ DoClientRead(pGE, pCLServing)
|
||||
FLAGFALSE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
} else if (pCLServing->iState == S_IDENT &&
|
||||
strcmp(pcCmd, "gssapi") == 0) {
|
||||
FileWrite(pCLServing->fd, FLAGFALSE, "ok\r\n", -1);
|
||||
/* Change the I/O mode right away, we'll do the read
|
||||
* and accept when the select gets back to us */
|
||||
pCLServing->ioState = INGSSACCEPT;
|
||||
#endif
|
||||
} else if (pCLServing->iState == S_IDENT &&
|
||||
strcmp(pcCmd, "login") == 0) {
|
||||
@ -3252,8 +3348,9 @@ DoClientRead(pGE, pCLServing)
|
||||
pcArgs, pCLServing->acid->string);
|
||||
num =
|
||||
DisconnectCertainClients(pGE,
|
||||
pCLServing->acid->
|
||||
string, pcArgs);
|
||||
pCLServing->
|
||||
acid->string,
|
||||
pcArgs);
|
||||
/* client expects this string to be formatted
|
||||
* in this way only.
|
||||
*/
|
||||
@ -3267,6 +3364,8 @@ DoClientRead(pGE, pCLServing)
|
||||
} else {
|
||||
FileWrite(pCLServing->fd, FLAGFALSE,
|
||||
"unknown command\r\n", -1);
|
||||
CONDDEBUG((1, "command %s state %d", pcCmd,
|
||||
pCLServing->iState));
|
||||
}
|
||||
BuildString((char *)0, pCLServing->accmd);
|
||||
} else
|
||||
@ -3279,7 +3378,7 @@ DoClientRead(pGE, pCLServing)
|
||||
case S_NOTE:
|
||||
if (GatherLine(acIn[i], 0, G_TEXT, pCLServing)) {
|
||||
FileWrite(pCLServing->fd, FLAGFALSE, "]\r\n",
|
||||
3);
|
||||
3);
|
||||
BuildString((char *)0, bcast);
|
||||
BuildString("NOTE -- ", bcast);
|
||||
BuildString(pCLServing->acid->string, bcast);
|
||||
@ -3320,8 +3419,8 @@ DoClientRead(pGE, pCLServing)
|
||||
|
||||
if (pCLServing->accmd->used > 1) {
|
||||
unsigned short u;
|
||||
u = (unsigned short)atoi(pCLServing->
|
||||
accmd->string);
|
||||
u = (unsigned short)
|
||||
atoi(pCLServing->accmd->string);
|
||||
/* i'm limiting the value here to 10000 for a couple
|
||||
* of reasons:
|
||||
*
|
||||
@ -3680,14 +3779,16 @@ DoClientRead(pGE, pCLServing)
|
||||
pCEServing->motd);
|
||||
break;
|
||||
|
||||
case 'n': /* note message to log file */
|
||||
case 'n': /* note message to log file */
|
||||
if (pCEServing->fdlog == (CONSFILE *)0) {
|
||||
FileWrite(pCLServing->fd, FLAGFALSE,
|
||||
"no log file on this console]\r\n", -1);
|
||||
"no log file on this console]\r\n",
|
||||
-1);
|
||||
} else {
|
||||
FileWrite(pCLServing->fd, FLAGFALSE,
|
||||
"Enter note: ", -1);
|
||||
BuildString((char *)0, pCLServing->accmd);
|
||||
"Enter note: ", -1);
|
||||
BuildString((char *)0,
|
||||
pCLServing->accmd);
|
||||
pCLServing->iState = S_NOTE;
|
||||
}
|
||||
break;
|
||||
@ -3793,8 +3894,8 @@ DoClientRead(pGE, pCLServing)
|
||||
BumpClient(pCEServing, (char *)0);
|
||||
TagLogfileAct(pCEServing,
|
||||
"%s detached",
|
||||
pCLServing->acid->
|
||||
string);
|
||||
pCLServing->
|
||||
acid->string);
|
||||
FindWrite(pCEServing);
|
||||
}
|
||||
break;
|
||||
@ -4650,6 +4751,18 @@ Kiddie(pGE, sfd)
|
||||
pCLServing->ioState = ISNORMAL;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
case INGSSACCEPT:
|
||||
{
|
||||
int r;
|
||||
if ((r = AttemptGSSAPI(pCLServing)) < 0)
|
||||
DisconnectClient(pGE, pCLServing, (char *)0,
|
||||
FLAGFALSE);
|
||||
else if (r == 1)
|
||||
pCLServing->ioState = ISNORMAL;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case ISNORMAL:
|
||||
if (FileCanRead(pCLServing->fd, &rmask, &wmask))
|
||||
@ -4688,7 +4801,7 @@ Kiddie(pGE, sfd)
|
||||
* send more than 1-byte payloads, if we get more than 1-byte
|
||||
* of data from a client connection. here we flush that buffer,
|
||||
* possibly putting it into the write buffer (but we don't really
|
||||
* need to worry about that here.
|
||||
* need to worry about that here).
|
||||
*/
|
||||
for (pCEServing = pGE->pCElist; pCEServing != (CONSENT *)0;
|
||||
pCEServing = pCEServing->pCEnext)
|
||||
@ -4716,7 +4829,7 @@ Kiddie(pGE, sfd)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (SetFlags(sfd, O_NONBLOCK, 0)) {
|
||||
if (SetFlags(fd, O_NONBLOCK, 0)) {
|
||||
pGE->pCLfree->fd = FileOpenFD(fd, simpleSocket);
|
||||
FileSetQuoteIAC(pGE->pCLfree->fd, FLAGTRUE);
|
||||
} else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: main.c,v 5.201 2007/04/02 17:59:16 bryan Exp $
|
||||
* $Id: main.c,v 5.202 2009/09/26 09:23:04 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -44,6 +44,9 @@
|
||||
#if HAVE_OPENSSL
|
||||
# include <openssl/opensslv.h>
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
# include <gssapi/gssapi.h>
|
||||
#endif
|
||||
|
||||
|
||||
int fAll = 0, fNoinit = 0, fVersion = 0, fStrip = 0, fReopen =
|
||||
@ -378,6 +381,42 @@ SetupSSL()
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_GSSAPI
|
||||
gss_name_t gss_myname = GSS_C_NO_NAME;
|
||||
gss_cred_id_t gss_mycreds = GSS_C_NO_CREDENTIAL;
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SetupGSSAPI(void)
|
||||
#else
|
||||
SetupGSSAPI()
|
||||
#endif
|
||||
{
|
||||
OM_uint32 stmaj, stmin;
|
||||
char namestr[128];
|
||||
gss_buffer_desc namebuf;
|
||||
|
||||
snprintf(namestr, 128, "host@%s", myHostname);
|
||||
namebuf.value = namestr;
|
||||
namebuf.length = strlen(namestr) + 1;
|
||||
stmaj =
|
||||
gss_import_name(&stmin, &namebuf, GSS_C_NT_HOSTBASED_SERVICE,
|
||||
&gss_myname);
|
||||
/* XXX: handle error */
|
||||
if (stmaj != GSS_S_COMPLETE) {
|
||||
Error("gss_import_name failed");
|
||||
}
|
||||
/* Get some initial credentials */
|
||||
stmaj =
|
||||
gss_acquire_cred(&stmin, gss_myname, 0, GSS_C_NULL_OID_SET,
|
||||
GSS_C_ACCEPT, &gss_mycreds, NULL, NULL);
|
||||
if (stmaj != GSS_S_COMPLETE) {
|
||||
Error("Could not acquire GSS-API credentials");
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ReopenLogfile(void)
|
||||
@ -1563,6 +1602,9 @@ main(argc, argv)
|
||||
/* Prep the SSL layer */
|
||||
SetupSSL();
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
SetupGSSAPI();
|
||||
#endif
|
||||
|
||||
if (config->daemonmode == FLAGTRUE)
|
||||
Daemonize();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: main.h,v 5.53 2004/05/21 04:15:17 bryan Exp $
|
||||
* $Id: main.h,v 5.54 2009/09/26 09:23:04 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -54,6 +54,10 @@ extern char *interface;
|
||||
#if HAVE_OPENSSL
|
||||
extern SSL_CTX *ctx;
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
extern gss_name_t gss_myname;
|
||||
extern gss_cred_id_t gss_mycreds;
|
||||
#endif
|
||||
extern void ReopenLogfile PARAMS((void));
|
||||
extern void ReopenUnifiedlog PARAMS((void));
|
||||
extern void DumpDataStructures PARAMS((void));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: master.c,v 5.135 2006/04/07 15:47:20 bryan Exp $
|
||||
* $Id: master.c,v 5.136 2009/09/26 09:23:04 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -493,6 +493,9 @@ DoNormalRead(pCLServing)
|
||||
"login log in\r\n",
|
||||
#if HAVE_OPENSSL
|
||||
"ssl start ssl session\r\n",
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
"gssapi log in with gssapi\r\n",
|
||||
#endif
|
||||
(char *)0
|
||||
};
|
||||
@ -531,6 +534,14 @@ DoNormalRead(pCLServing)
|
||||
DropMasterClient(pCLServing, FLAGFALSE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
} else if (pCLServing->iState == S_IDENT &&
|
||||
strcmp(pcCmd, "gssapi") == 0) {
|
||||
FileWrite(pCLServing->fd, FLAGFALSE, "ok\r\n", -1);
|
||||
/* Change the I/O mode right away, we'll do the read
|
||||
* and accept when the select gets back to us */
|
||||
pCLServing->ioState = INGSSACCEPT;
|
||||
#endif
|
||||
} else if (pCLServing->iState == S_IDENT &&
|
||||
strcmp(pcCmd, "login") == 0) {
|
||||
@ -920,6 +931,17 @@ Master()
|
||||
pCLServing->ioState = ISNORMAL;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
case INGSSACCEPT:
|
||||
{
|
||||
int r;
|
||||
if ((r = AttemptGSSAPI(pCLServing)) < 0)
|
||||
DropMasterClient(pCLServing, FLAGFALSE);
|
||||
else if (r == 1)
|
||||
pCLServing->ioState = ISNORMAL;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case ISNORMAL:
|
||||
if (FileCanRead(pCLServing->fd, &rmask, &wmask))
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: readcfg.c,v 5.193 2007/04/02 17:59:16 bryan Exp $
|
||||
* $Id: readcfg.c,v 5.194 2009/09/26 09:20:47 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -248,9 +248,9 @@ BreakDestroy()
|
||||
for (i = 0; i < 9; i++) {
|
||||
Msg("Break[%d] = `%s', delay=%d", i,
|
||||
breakList[i].seq ==
|
||||
(STRING *)0 ? "(null)" : (breakList[i].seq->
|
||||
string ? breakList[i].seq->
|
||||
string : "(null)"),
|
||||
(STRING *)0 ? "(null)" : (breakList[i].
|
||||
seq->string ? breakList[i].
|
||||
seq->string : "(null)"),
|
||||
breakList[i].delay);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: version.h,v 1.75 2007/04/10 21:36:34 bryan Exp $
|
||||
* $Id: version.h,v 1.76 2009/09/29 06:24:53 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -16,6 +16,6 @@ All rights reserved.\n"
|
||||
|
||||
#define VERSION_MAJOR 8
|
||||
#define VERSION_MINOR 1
|
||||
#define VERSION_REV 16
|
||||
#define VERSION_REV 17
|
||||
#define VERSION_TEXT "conserver.com version"
|
||||
#define VERSION_UINT (VERSION_MAJOR * 1000000 + VERSION_MINOR * 1000 + VERSION_REV)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: console.c,v 5.182 2006/06/15 03:01:05 bryan Exp $
|
||||
* $Id: console.c,v 5.184 2009/09/27 22:32:03 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -40,6 +40,9 @@
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/opensslv.h>
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
#include <gssapi/gssapi.h>
|
||||
#endif
|
||||
|
||||
|
||||
int fReplay = 0, fVersion = 0;
|
||||
@ -152,6 +155,87 @@ AttemptSSL(pcf)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_GSSAPI
|
||||
gss_name_t gss_server_name = GSS_C_NO_NAME;
|
||||
gss_ctx_id_t secctx = GSS_C_NO_CONTEXT;
|
||||
gss_buffer_desc mytok = GSS_C_EMPTY_BUFFER;
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
CanGetGSSContext(const char *servername)
|
||||
#else
|
||||
CanGetGSSContext(servername)
|
||||
const char *servername;
|
||||
#endif
|
||||
{
|
||||
char namestr[128];
|
||||
gss_buffer_desc namebuf, dbuf;
|
||||
OM_uint32 stmaj, stmin, mctx, dmin;
|
||||
|
||||
snprintf(namestr, 128, "host@%s", servername);
|
||||
namebuf.value = namestr;
|
||||
namebuf.length = strlen(namestr) + 1;
|
||||
stmaj =
|
||||
gss_import_name(&stmin, &namebuf, GSS_C_NT_HOSTBASED_SERVICE,
|
||||
&gss_server_name);
|
||||
/* XXX: handle error */
|
||||
if (stmaj != GSS_S_COMPLETE) {
|
||||
Error("gss_import_name failed");
|
||||
return 0;
|
||||
}
|
||||
secctx = GSS_C_NO_CONTEXT;
|
||||
mytok.length = 0;
|
||||
mytok.value = NULL;
|
||||
|
||||
stmaj =
|
||||
gss_init_sec_context(&stmin, GSS_C_NO_CREDENTIAL, &secctx,
|
||||
gss_server_name, GSS_C_NULL_OID,
|
||||
GSS_C_MUTUAL_FLAG, 0,
|
||||
GSS_C_NO_CHANNEL_BINDINGS, NULL, NULL, &mytok,
|
||||
NULL, NULL);
|
||||
|
||||
if (stmaj != GSS_S_COMPLETE && stmaj != GSS_S_CONTINUE_NEEDED) {
|
||||
gss_release_name(&stmin, &gss_server_name);
|
||||
return 0;
|
||||
}
|
||||
return mytok.length;
|
||||
}
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
AttemptGSSAPI(CONSFILE *pcf)
|
||||
#else
|
||||
AttemptGSSAPI(pcf)
|
||||
CONSFILE *pcf;
|
||||
#endif
|
||||
{
|
||||
OM_uint32 stmaj, stmin;
|
||||
gss_buffer_desc servertok;
|
||||
char buf[1024];
|
||||
int nr;
|
||||
int ret;
|
||||
|
||||
FileSetQuoteIAC(pcf, FLAGFALSE);
|
||||
FileWrite(pcf, FLAGFALSE, mytok.value, mytok.length);
|
||||
FileSetQuoteIAC(pcf, FLAGTRUE);
|
||||
nr = FileRead(pcf, buf, sizeof(buf));
|
||||
servertok.length = nr;
|
||||
servertok.value = buf;
|
||||
|
||||
stmaj =
|
||||
gss_init_sec_context(&stmin, GSS_C_NO_CREDENTIAL, &secctx,
|
||||
gss_server_name, GSS_C_NULL_OID,
|
||||
GSS_C_MUTUAL_FLAG, 0,
|
||||
GSS_C_NO_CHANNEL_BINDINGS, &servertok, NULL,
|
||||
&mytok, NULL, NULL);
|
||||
gss_release_buffer(NULL, &mytok);
|
||||
|
||||
ret = (stmaj == GSS_S_COMPLETE);
|
||||
gss_release_name(&stmin, &gss_server_name);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* output a control (or plain) character as a UNIX user would expect it (ksb)
|
||||
*/
|
||||
static void
|
||||
@ -271,6 +355,9 @@ Version()
|
||||
#if HAVE_OPENSSL
|
||||
"openssl",
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
"gssapi",
|
||||
#endif
|
||||
#if HAVE_PAM
|
||||
"pam",
|
||||
#endif
|
||||
@ -1261,7 +1348,7 @@ Interact(pcf, pcMach)
|
||||
|
||||
/* anything from stdin? */
|
||||
if (FD_ISSET(0, &rmask)) {
|
||||
if ((nc = read(0, acMesg, sizeof(acMesg))) == 0) {
|
||||
if ((nc = read(0, acMesg, sizeof(acMesg))) <= 0) {
|
||||
if (screwy)
|
||||
break;
|
||||
else {
|
||||
@ -1494,6 +1581,7 @@ CallUp(pcf, pcMaster, pcMach, pcHow, result)
|
||||
*
|
||||
*/
|
||||
char *cmds[4] = { (char *)0, (char *)0, (char *)0, (char *)0 };
|
||||
|
||||
char *cmdarg = (char *)0;
|
||||
|
||||
/* call a machine master for group master ports and machine master ports
|
||||
@ -1522,6 +1610,9 @@ DoCmds(master, pports, cmdi)
|
||||
char *ports;
|
||||
char *pcopy;
|
||||
char *serverName;
|
||||
#if HAVE_GSSAPI
|
||||
int toksize;
|
||||
#endif
|
||||
|
||||
if ((pcopy = ports = StrDup(pports)) == (char *)0)
|
||||
OutOfMem();
|
||||
@ -1599,6 +1690,17 @@ DoCmds(master, pports, cmdi)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
if ((toksize = CanGetGSSContext(server)) > 0) {
|
||||
FilePrint(pcf, FLAGFALSE, "gssapi %d\r\n", toksize);
|
||||
t = ReadReply(pcf, FLAGFALSE);
|
||||
if (strcmp(t, "ok\r\n") == 0) {
|
||||
if (AttemptGSSAPI(pcf)) {
|
||||
goto gssapi_logged_me_in;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
FilePrint(pcf, FLAGFALSE, "login %s\r\n", config->username);
|
||||
|
||||
@ -1651,6 +1753,9 @@ DoCmds(master, pports, cmdi)
|
||||
FilePrint(cfstdout, FLAGFALSE, "%s: %s", serverName, t);
|
||||
continue;
|
||||
}
|
||||
#if HAVE_GSSAPI
|
||||
gssapi_logged_me_in:
|
||||
#endif
|
||||
|
||||
/* now that we're logged in, we can do something */
|
||||
/* if we're on the last cmd or the command is 'call' and we
|
||||
@ -2368,7 +2473,7 @@ main(argc, argv)
|
||||
|
||||
if (fDebug) {
|
||||
int i;
|
||||
for (i=cmdi;i>=0;i--) {
|
||||
for (i = cmdi; i >= 0; i--) {
|
||||
CONDDEBUG((1, "cmds[%d] = %s", i, cmds[i]));
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $Id: console.man,v 1.61 2006/04/03 13:32:12 bryan Exp $
|
||||
.TH CONSOLE 1 "2006/04/03" "conserver-8.1.16" "conserver"
|
||||
.TH CONSOLE 1 "2006/04/03" "conserver-8.1.17" "conserver"
|
||||
.SH NAME
|
||||
console \- console server client program
|
||||
.SH SYNOPSIS
|
||||
|
5
contrib/redhat-rpm/conserver.defaults
Normal file
5
contrib/redhat-rpm/conserver.defaults
Normal file
@ -0,0 +1,5 @@
|
||||
# server options
|
||||
#OPTIONS="-p 33000 -d"
|
||||
# run as different user that root
|
||||
#RUNAS=conservr
|
||||
|
@ -7,24 +7,29 @@
|
||||
# config: /etc/conserver.cf
|
||||
#
|
||||
|
||||
DAEMON=/usr/sbin/conserver
|
||||
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
|
||||
# Source networking configuration.
|
||||
. /etc/sysconfig/network
|
||||
|
||||
# Source defaults
|
||||
. /etc/default/conserver
|
||||
|
||||
# Check that networking is up.
|
||||
[ ${NETWORKING} = "no" ] && exit 0
|
||||
|
||||
# make sure conserver is installed and executable
|
||||
[ -x /usr/sbin/conserver ] || exit 1
|
||||
[ -x $DAEMON ] || exit 1
|
||||
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting conserver: "
|
||||
daemon conserver -d
|
||||
daemon --user "${RUNAS-}" $DAEMON ${OPTIONS--d}
|
||||
echo
|
||||
touch /var/lock/subsys/conserver
|
||||
;;
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
|
||||
%define pkg conserver
|
||||
%define ver 8.1.16
|
||||
%define ver 8.1.17
|
||||
|
||||
# define the name of the machine on which the main conserver
|
||||
# daemon will be running if you don't want to use the default
|
||||
@ -14,6 +14,16 @@
|
||||
# what red hat (or other distibution) version are you running?
|
||||
%define distver 1
|
||||
|
||||
# compile arguments. defaults to 0
|
||||
# example: rpmbuild -bb conserver.spec --with openssl
|
||||
%define with_openssl %{?_with_openssl: 1} %{?!_with_openssl: 0}
|
||||
%define with_libwrap %{?_with_libwrap: 1} %{?!_with_libwrap: 0}
|
||||
%define with_pam %{?_with_pam: 1} %{?!_with_pam: 0}
|
||||
%define with_dmalloc %{?_with_dmalloc: 1} %{?!_with_dmalloc: 0}
|
||||
|
||||
# additionally you can use macros logfile pidfile
|
||||
# example: rpmbuild -bb conserver.spec --define "pidfile /var/run/conserver/pid"
|
||||
|
||||
Summary: Serial console server daemon/client
|
||||
Name: %{pkg}
|
||||
Version: %{ver}
|
||||
@ -23,6 +33,19 @@ Group: System Environment/Daemons
|
||||
URL: http://www.conserver.com/
|
||||
Source: http://www.conserver.com/%{pkg}-%{ver}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{pkg}-buildroot
|
||||
%if %{with_openssl}
|
||||
BuildRequires: openssl-devel
|
||||
%endif
|
||||
%if %{with_pam}
|
||||
BuildRequires: pam-devel
|
||||
%endif
|
||||
%if %{with_libwrap}
|
||||
Requires: tcp_wrappers
|
||||
%endif
|
||||
%if %{with_dmalloc}
|
||||
Requires: dmalloc
|
||||
BuildRequires: dmalloc
|
||||
%endif
|
||||
Prefix: %{_prefix}
|
||||
|
||||
|
||||
@ -44,7 +67,8 @@ f="conserver/Makefile.in"
|
||||
%{__mv} $f $f.orig
|
||||
%{__sed} -e 's/^.*conserver\.rc.*$//' < $f.orig > $f
|
||||
|
||||
%configure --with-master=%{master}
|
||||
%configure %{?_with_openssl} %{?_with_libwrap} %{?_with_dmalloc} %{?_with_pam} %{?logfile: --with-logfile=%{logfile}} %{?pidfile: --with-pidfile=%{pidfile}} %{?master: --with-master=%{master}}
|
||||
|
||||
make
|
||||
|
||||
|
||||
@ -65,6 +89,9 @@ make
|
||||
%{__mkdir_p} %{buildroot}/%{_initrddir}
|
||||
%{__cp} contrib/redhat-rpm/conserver.init %{buildroot}/%{_initrddir}/conserver
|
||||
|
||||
# install copy of init script defaults
|
||||
%{__mkdir_p} %{buildroot}/%{_sysconfdir}/default
|
||||
%{__cp} contrib/redhat-rpm/conserver.defaults %{buildroot}/%{_sysconfdir}/default/conserver
|
||||
|
||||
%clean
|
||||
%{__rm} -rf %{buildroot}
|
||||
@ -94,13 +121,23 @@ fi
|
||||
%doc CHANGES FAQ INSTALL README conserver.cf
|
||||
%config(noreplace) %{_sysconfdir}/conserver.cf
|
||||
%config(noreplace) %{_sysconfdir}/conserver.passwd
|
||||
%config(noreplace) %{_sysconfdir}/default/conserver
|
||||
%attr(555,root,root) %{_initrddir}/conserver
|
||||
%{prefix}/bin/console
|
||||
%{prefix}/lib/conserver/convert
|
||||
%{prefix}/share/man/man1/console.1.gz
|
||||
%{prefix}/share/man/man8/conserver.8.gz
|
||||
%{prefix}/share/man/man5/conserver.cf.5.gz
|
||||
%{prefix}/share/man/man5/conserver.passwd.5.gz
|
||||
%{prefix}/share/examples/conserver/conserver.cf
|
||||
%{prefix}/share/examples/conserver/conserver.passwd
|
||||
%{prefix}/sbin/conserver
|
||||
%{_bindir}/console
|
||||
%{_libdir}/conserver/convert
|
||||
%{_mandir}/man1/console.1.gz
|
||||
%{_mandir}/man8/conserver.8.gz
|
||||
%{_mandir}/man5/conserver.cf.5.gz
|
||||
%{_mandir}/man5/conserver.passwd.5.gz
|
||||
%{_datadir}/examples/conserver/conserver.cf
|
||||
%{_datadir}/examples/conserver/conserver.passwd
|
||||
%{_sbindir}/conserver
|
||||
|
||||
%changelog
|
||||
* Wed Sep 25 2009 Fabien Wernli
|
||||
- added configure prerequisites
|
||||
* Thu Sep 24 2009 Fabien Wernli
|
||||
- added prefix to configure
|
||||
- changed some hardcoded values to proper macros:
|
||||
didn't work on x64 lib -> lib64
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
PKG="conserver"
|
||||
NAME="Console server and client"
|
||||
CATEGORY="system"
|
||||
VERSION="8.1.16"
|
||||
VERSION="8.1.17"
|
||||
DESC="Console server and client"
|
||||
CLASSES=none
|
||||
ARCH=sparc
|
||||
|
Loading…
x
Reference in New Issue
Block a user