Imported from conserver-8.1.17.tar.gz

This commit is contained in:
Bryan Stansell 2009-09-29 15:56:23 -07:00
parent 019277a041
commit 0c74cb3ece
25 changed files with 6650 additions and 4520 deletions

22
CHANGES
View File

@ -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
View File

@ -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

View File

@ -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
View File

@ -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
;;

9962
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -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 "=============================================================="
]

View File

@ -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)

View File

@ -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)

View File

@ -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 &lt;bryan@conserver.com&gt;">
<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 &lt;bryan@conserver.com&gt;">
<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: &nbsp;&nbsp;<A href=
"http://planetmirror.com/pub/conserver/">Australia</A>
&nbsp;&nbsp;<A href=
"http://conserver.linux-mirror.org/">Germany</A>
&nbsp;&nbsp;<A href=
"http://conserver.webdesign-zdg.de/">Germany</A>
&nbsp;&nbsp;<A href=
"http://conserver.cybermirror.org/">Germany</A>
&nbsp;&nbsp;<A href=
"http://conserver.oss-mirror.org/">Ireland</A>
&nbsp;&nbsp;<A href="http://conserver.rinet.ru/">Russia</A>
&nbsp;&nbsp;<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: &nbsp;&nbsp;<A href=
"http://planetmirror.com/pub/conserver/">Australia</A>
&nbsp;&nbsp;<A href=
"http://conserver.linux-mirror.org/">Germany</A>
&nbsp;&nbsp;<A href=
"http://conserver.webdesign-zdg.de/">Germany</A>
&nbsp;&nbsp;<A href=
"http://conserver.cybermirror.org/">Germany</A>
&nbsp;&nbsp;<A href=
"http://conserver.oss-mirror.org/">Ireland</A>
&nbsp;&nbsp;<A href="http://conserver.rinet.ru/">Russia</A>
&nbsp;&nbsp;<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&amp;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&amp;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>

View File

@ -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;
}
}

View File

@ -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

View File

@ -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:

View File

@ -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;

View File

@ -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

View File

@ -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();

View File

@ -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));

View File

@ -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))

View File

@ -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);
}
}

View File

@ -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)

View File

@ -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]));
}
}

View File

@ -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

View File

@ -0,0 +1,5 @@
# server options
#OPTIONS="-p 33000 -d"
# run as different user that root
#RUNAS=conservr

View File

@ -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
;;

View File

@ -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

View File

@ -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