Imported from conserver-8.1.8.tar.gz

This commit is contained in:
Bryan Stansell 2004-06-09 15:28:27 -07:00
parent c0f8de9c24
commit 27475bdd30
17 changed files with 285 additions and 27 deletions

View File

@ -1,6 +1,12 @@
CHANGES
=======
version 8.1.8 (Jun 9, 2004):
- added 'initspinmax' and 'initspintimer' console options to
help calm console initialization "spinning"
- fixed setsockopt() error on 64bit solaris - reported by Trond
Hagen <trond@basefarm.no>
version 8.1.7 (May 28, 2004):
- cleaned up the manpages a bit to make things clearer and more
standard - reported by Dave Stuit <djs@tellme.com>
@ -754,5 +760,5 @@ before version 6.05:
and enhancements of various types were applied.
#
# $Id: CHANGES,v 1.186 2004/05/28 18:01:10 bryan Exp $
# $Id: CHANGES,v 1.189 2004/06/09 22:25:50 bryan Exp $
#

View File

@ -60,6 +60,9 @@
/* Define to 1 if you have the `getspnam' function. */
#undef HAVE_GETSPNAM
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if you have the `getuserattr' function. */
#undef HAVE_GETUSERATTR

3
configure vendored
View File

@ -6916,7 +6916,8 @@ done
for ac_func in getopt strerror getrlimit getsid setsid getuserattr setgroups tcgetpgrp tcsetpgrp tcgetattr tcsetattr tcsendbreak setpgrp getutent setttyent getspnam setlinebuf setvbuf ptsname grantpt unlockpt sigaction setsockopt getdtablesize putenv memset memcpy memcmp memmove sysconf getlogin inet_aton setproctitle
for ac_func in getopt strerror getrlimit getsid setsid getuserattr setgroups tcgetpgrp tcsetpgrp tcgetattr tcsetattr tcsendbreak setpgrp getutent setttyent getspnam setlinebuf setvbuf ptsname grantpt unlockpt sigaction setsockopt getdtablesize putenv memset memcpy memcmp memmove sysconf getlogin inet_aton setproctitle gettimeofday
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5

View File

@ -609,7 +609,7 @@ AC_CHECK_HEADERS(pty.h libutil.h util.h)
AC_CHECK_LIB(util, openpty)
AC_CHECK_FUNCS(openpty)
AC_CHECK_FUNCS(getopt strerror getrlimit getsid setsid getuserattr setgroups tcgetpgrp tcsetpgrp tcgetattr tcsetattr tcsendbreak setpgrp getutent setttyent getspnam setlinebuf setvbuf ptsname grantpt unlockpt sigaction setsockopt getdtablesize putenv memset memcpy memcmp memmove sysconf getlogin inet_aton setproctitle)
AC_CHECK_FUNCS(getopt strerror getrlimit getsid setsid getuserattr setgroups tcgetpgrp tcsetpgrp tcgetattr tcsetattr tcsendbreak setpgrp getutent setttyent getspnam setlinebuf setvbuf ptsname grantpt unlockpt sigaction setsockopt getdtablesize putenv memset memcpy memcmp memmove sysconf getlogin inet_aton setproctitle gettimeofday)
AC_FUNC_SETPGRP
AC_CHECK_FUNC(strcasecmp,
[AC_DEFINE(HAVE_STRCASECMP, 1, [Define if strcasecmp is available])],

View File

@ -1,5 +1,5 @@
.\" $Id: conserver.cf.man,v 1.65 2004/05/27 23:39:06 bryan Exp $
.TH CONSERVER.CF 5 "2004/05/27" "conserver-8.1.7" "conserver"
.\" $Id: conserver.cf.man,v 1.67 2004/06/01 23:45:48 bryan Exp $
.TH CONSERVER.CF 5 "2004/06/01" "conserver-8.1.8" "conserver"
.SH NAME
conserver.cf \- console configuration file for
.BR conserver (8)
@ -191,7 +191,7 @@ Define a break sequence where 0 <
.I n
< 10.
Break sequences are accessed via the
.RI ``^El n ''
.RI ``^Ecl n ''
client escape sequence.
.RS
.TP
@ -589,6 +589,45 @@ is passed as an argument to ``/bin/sh -ce''.
If the null string (``\f3""\fP'') is used, the command is unset and
nothing is invoked.
.TP
\f3initspinmax\fP \f2n\fP|\f3""\fP
.br
Set the maximum number of ``spins'' allowed for the console to
.IR n ,
where 0 <=
.I n
<= 254.
A console is determined to be ``spinning'' if an attempt to initialize
the console occurs in under
.B initspintimer
seconds from it's previous initialization and this quick
initialization occurs
.B initspinmax
times in a row.
If, at any point, the time between initializations is greater than
.BR initspintimer ,
the counter for reaching
.B initspinmax
resets to zero.
When a console is determined to be ``spinning'' it is forced down.
If the null string (``\f3""\fP'') is specified, the default of
.B 5
is used.
.TP
\f3initspintimer\fP \f2t\fP|\f3""\fP
.br
Set the number of seconds a console must be ``up'' to not be
considered ``spinning'' to
.IR t ,
where 0 <=
.I t
<= 254.
See
.B initspinmax
for a full description of console ``spinning.''
If the null string (``\f3""\fP'') is specified, the default of
.B 1
is used.
.TP
\f3initsubst\fP \f2c\fP\f3=\fP\f2t\fP[\f2n\fP]\f2f\fP[\f3,\fP...]|\f3""\fP
.br
Perform character substitutions on the

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.7" "conserver"
.TH CONSERVER.PASSWD 5 "2004/01/08" "conserver-8.1.8" "conserver"
.SH NAME
conserver.passwd \- user access information for
.BR conserver (8)

View File

@ -182,11 +182,11 @@
<H3>Downloading</H3>
<P>The current version, released on May 28, 2004, is <A
href="8.1.7.tar.gz">8.1.7.tar.gz</A>. You can get it via
<P>The current version, released on Jun 9, 2004, is <A
href="8.1.8.tar.gz">8.1.8.tar.gz</A>. You can get it via
<A href=
"ftp://ftp.conserver.com/conserver/8.1.7.tar.gz">FTP</A>
or <A href="8.1.7.tar.gz">HTTP</A>. See the <A href=
"ftp://ftp.conserver.com/conserver/8.1.8.tar.gz">FTP</A>
or <A href="8.1.8.tar.gz">HTTP</A>. See the <A href=
"CHANGES">CHANGES</A> file for information on the latest
updates.</P>

View File

@ -1,5 +1,5 @@
/*
* $Id: consent.c,v 5.138 2004/04/16 16:58:09 bryan Exp $
* $Id: consent.c,v 5.140 2004/06/03 21:53:59 bryan Exp $
*
* Copyright conserver.com, 2000
*
@ -678,6 +678,40 @@ ConsInit(pCE)
extern int FallBack PARAMS((char **, int *));
int cofile = -1;
int ret;
#if HAVE_GETTIMEOFDAY
struct timeval tv;
#else
time_t tv;
#endif
if (pCE->spintimer > 0 && pCE->spinmax > 0) {
#if HAVE_GETTIMEOFDAY
if (gettimeofday(&tv, (void *)0) == 0) {
/* less than pCE->spintimer seconds gone by? */
if ((tv.tv_sec <= pCE->lastInit.tv_sec + pCE->spintimer - 1)
|| (tv.tv_sec == pCE->lastInit.tv_sec + 1 &&
tv.tv_usec <= pCE->lastInit.tv_usec)) {
#else
if ((tv = time((time_t *)0)) != (time_t)-1) {
/* less than pCE->spintimer seconds gone by? (approx) */
if (tv <= pCE->lastInit + pCE->spintimer) {
#endif
pCE->spincount++;
if (pCE->spincount >= pCE->spinmax) {
pCE->spincount = 0;
pCE->lastInit = tv;
Error
("[%s] initialization rate exceeded: forcing down",
pCE->server);
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
return;
}
} else
pCE->spincount = 0;
pCE->lastInit = tv;
} else
pCE->spincount = 0;
}
/* clean up old stuff
*/
@ -734,7 +768,9 @@ ConsInit(pCE)
{
struct sockaddr_in port;
struct hostent *hp;
size_t one = 1;
#if HAVE_SETSOCKOPT
int one = 1;
#endif
usleep(100000); /* Not all terminal servers can keep up */
@ -767,6 +803,7 @@ ConsInit(pCE)
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
return;
}
#if HAVE_SETSOCKOPT
if (setsockopt
(cofile, SOL_SOCKET, SO_KEEPALIVE, (char *)&one,
sizeof(one)) < 0) {
@ -776,6 +813,7 @@ ConsInit(pCE)
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
return;
}
#endif
if (!SetFlags(cofile, O_NONBLOCK, 0)) {
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
@ -897,6 +935,13 @@ ConsInit(pCE)
Msg("[%s] console initializing", pCE->server);
pCE->downHard = FLAGFALSE;
}
#if HAVE_GETTIMEOFDAY
if (gettimeofday(&tv, (void *)0) == 0)
pCE->lastInit = tv;
#else
if ((tv = time((time_t *)0)) != (time_t)-1)
pCE->lastInit = tv;
#endif
if (pCE->ioState == ISNORMAL)
StartInit(pCE);

View File

@ -1,5 +1,5 @@
/*
* $Id: consent.h,v 5.57 2004/05/21 04:38:02 bryan Exp $
* $Id: consent.h,v 5.58 2004/06/01 23:45:47 bryan Exp $
*
* Copyright conserver.com, 2000
*
@ -110,6 +110,8 @@ typedef struct consent { /* console information */
char *motd; /* motd */
time_t idletimeout; /* idle timeout */
char *idlestring; /* string to print when idle */
unsigned short spinmax; /* initialization spin maximum */
unsigned short spintimer; /* initialization spin timer */
/* timestamp stuff */
int mark; /* Mark (chime) interval */
long nextMark; /* Next mark (chime) time */
@ -135,6 +137,12 @@ typedef struct consent { /* console information */
IOSTATE ioState; /* state of the socket */
time_t stateTimer; /* timer for ioState states */
time_t lastWrite; /* time of last data sent to console */
#if HAVE_GETTIMEOFDAY
struct timeval lastInit; /* time of last initialization */
#else
time_t lastInit; /* time of last initialization */
#endif
unsigned short spincount; /* initialization spin counter */
/*** state information ***/
char acline[132 * 2 + 2]; /* max chars we will call a line */

View File

@ -1,6 +1,6 @@
.\" @(#)conserver.8 01/06/91 OSU CIS; Thomas A. Fine
.\" $Id: conserver.man,v 1.48 2004/05/28 02:02:36 bryan Exp $
.TH CONSERVER 8 "2004/05/28" "conserver-8.1.7" "conserver"
.\" $Id: conserver.man,v 1.50 2004/06/08 16:19:46 bryan Exp $
.TH CONSERVER 8 "2004/06/08" "conserver-8.1.8" "conserver"
.SH NAME
conserver \- console server daemon
.SH SYNOPSIS
@ -318,6 +318,9 @@ Enable periodic attempts (every
.I min
minutes) to open (``bring up'') all downed
consoles (similar to sending a SIGUSR1).
Without this option, or if
.I min
is zero, no periodic attempts occur.
.TP
.BI \-p port
Set the TCP port for the master process to listen on.
@ -449,7 +452,7 @@ This is, by no means, a complete description of the entire client/server
interaction.
It is, however, a brief explanation in order to give a idea of
what the program does. See the
.B \s-1PROTOCOLS\s0
.B \s-1PROTOCOL\s0
file in the distribution for further details.
.SH FILES
.PP

View File

@ -1,5 +1,5 @@
/*
* $Id: group.c,v 5.302 2004/05/27 23:40:35 bryan Exp $
* $Id: group.c,v 5.304 2004/06/03 21:53:42 bryan Exp $
*
* Copyright conserver.com, 2000
*
@ -4346,6 +4346,13 @@ Kiddie(pGE, sfd)
}
pCEServing->ioState = ISNORMAL;
pCEServing->lastWrite = time((time_t *)0);
#if HAVE_GETTIMEOFDAY
if (gettimeofday(&tv, (void *)0) == 0)
pCEServing->lastInit = tv;
#else
if ((tv = time((time_t *)0)) != (time_t)-1)
pCEServing->lastInit = tv;
#endif
/* waiting for a connect(), we watch the write bit,
* so switch around and now watch for the read and
* start gathering data
@ -4627,7 +4634,9 @@ Spawn(pGE)
static STRING *portPath = (STRING *)0;
#else
socklen_t so;
# if HAVE_SETSOCKOPT
int true = 1;
# endif
unsigned short portInc = 0;
struct sockaddr_in lstn_port;
#endif

View File

@ -1,5 +1,5 @@
/*
* $Id: master.c,v 5.126 2004/05/06 02:09:07 bryan Exp $
* $Id: master.c,v 5.127 2004/06/03 21:53:59 bryan Exp $
*
* Copyright conserver.com, 2000
*
@ -686,7 +686,9 @@ Master()
static STRING *portPath = (STRING *)0;
#else
struct sockaddr_in master_port;
# if HAVE_SETSOCKOPT
int true = 1;
# endif
#endif
FILE *fp;
CONSCLIENT *pCLServing = (CONSCLIENT *)0;

View File

@ -1,5 +1,5 @@
/*
* $Id: readcfg.c,v 5.177 2004/05/27 23:40:36 bryan Exp $
* $Id: readcfg.c,v 5.178 2004/06/01 23:45:47 bryan Exp $
*
* Copyright conserver.com, 2000
*
@ -641,6 +641,10 @@ ApplyDefault(d, c)
c->portinc = d->portinc;
if (d->portbase != 0)
c->portbase = d->portbase;
if (d->spinmax != 0)
c->spinmax = d->spinmax;
if (d->spintimer != 0)
c->spintimer = d->spintimer;
if (d->mark != 0)
c->mark = d->mark;
if (d->nextMark != 0)
@ -1616,6 +1620,102 @@ DefaultItemPortinc(id)
ProcessPortinc(parserDefaultTemp, id);
}
void
#if PROTOTYPES
ProcessInitspinmax(CONSENT *c, char *id)
#else
ProcessInitspinmax(c, id)
CONSENT *c;
char *id;
#endif
{
char *p;
int i;
if ((id == (char *)0) || (*id == '\000')) {
c->spinmax = 0;
return;
}
for (p = id; *p != '\000'; p++)
if (!isdigit((int)(*p)))
break;
/* if it wasn't a number */
if (*p != '\000') {
if (isMaster)
Error("invalid initspinmax number `%s' [%s:%d]", id, file,
line);
return;
}
i = atoi(id);
if (i > 254) {
if (isMaster)
Error("invalid initspinmax number `%s' [%s:%d]", id, file,
line);
return;
}
c->spinmax = i + 1;
}
void
#if PROTOTYPES
DefaultItemInitspinmax(char *id)
#else
DefaultItemInitspinmax(id)
char *id;
#endif
{
CONDDEBUG((1, "DefaultItemInitspinmax(%s) [%s:%d]", id, file, line));
ProcessInitspinmax(parserDefaultTemp, id);
}
void
#if PROTOTYPES
ProcessInitspintimer(CONSENT *c, char *id)
#else
ProcessInitspintimer(c, id)
CONSENT *c;
char *id;
#endif
{
char *p;
int i;
if ((id == (char *)0) || (*id == '\000')) {
c->spintimer = 0;
return;
}
for (p = id; *p != '\000'; p++)
if (!isdigit((int)(*p)))
break;
/* if it wasn't a number */
if (*p != '\000') {
if (isMaster)
Error("invalid initspintimer number `%s' [%s:%d]", id, file,
line);
return;
}
i = atoi(id);
if (i > 254) {
if (isMaster)
Error("invalid initspintimer number `%s' [%s:%d]", id, file,
line);
return;
}
c->spintimer = i + 1;
}
void
#if PROTOTYPES
DefaultItemInitspintimer(char *id)
#else
DefaultItemInitspintimer(id)
char *id;
#endif
{
CONDDEBUG((1, "DefaultItemInitspintimer(%s) [%s:%d]", id, file, line));
ProcessInitspintimer(parserDefaultTemp, id);
}
void
#if PROTOTYPES
ProcessProtocol(CONSENT *c, char *id)
@ -2598,6 +2698,8 @@ ConsoleAdd(c)
SwapStr(&pCEmatch->idlestring, &c->idlestring);
pCEmatch->portinc = c->portinc;
pCEmatch->portbase = c->portbase;
pCEmatch->spinmax = c->spinmax;
pCEmatch->spintimer = c->spintimer;
pCEmatch->activitylog = c->activitylog;
pCEmatch->breaklog = c->breaklog;
pCEmatch->raw = c->raw;
@ -2681,6 +2783,18 @@ ConsoleDestroy()
if (c->breakNum == 0)
c->breakNum = 1;
/* initspin* values are +1, so adjust (since we don't
* compare on a reread)
*/
if (c->spinmax == 0)
c->spinmax = 5;
else
c->spinmax--;
if (c->spintimer == 0)
c->spintimer = 1;
else
c->spintimer--;
/* portbase, portinc, and port values are +2, +1, +1, so a zero can
* show that no value was given. defaults: portbase=0, portinc=1
*/
@ -3234,6 +3348,30 @@ ConsoleItemPortinc(id)
ProcessPortinc(parserConsoleTemp, id);
}
void
#if PROTOTYPES
ConsoleItemInitspinmax(char *id)
#else
ConsoleItemInitspinmax(id)
char *id;
#endif
{
CONDDEBUG((1, "ConsoleItemInitspinmax(%s) [%s:%d]", id, file, line));
ProcessInitspinmax(parserConsoleTemp, id);
}
void
#if PROTOTYPES
ConsoleItemInitspintimer(char *id)
#else
ConsoleItemInitspintimer(id)
char *id;
#endif
{
CONDDEBUG((1, "ConsoleItemInitspintimer(%s) [%s:%d]", id, file, line));
ProcessInitspintimer(parserConsoleTemp, id);
}
void
#if PROTOTYPES
ConsoleItemProtocol(char *id)
@ -4098,7 +4236,7 @@ ConfigItemReinitcheck(id)
if (!isdigit((int)(*p)))
break;
/* if it wasn't a number or the number was zero */
/* if it wasn't a number */
if (*p != '\000') {
if (isMaster)
Error("invalid reinitcheck value `%s' [%s:%d]", id, file,
@ -4129,7 +4267,7 @@ ConfigItemInitdelay(id)
if (!isdigit((int)(*p)))
break;
/* if it wasn't a number or the number was zero */
/* if it wasn't a number */
if (*p != '\000') {
if (isMaster)
Error("invalid initdelay value `%s' [%s:%d]", id, file, line);
@ -4249,6 +4387,8 @@ ITEM keyDefault[] = {
{"idletime", DefaultItemIdletimeout},
{"include", DefaultItemInclude},
{"initcmd", DefaultItemInitcmd},
{"initspinmax", DefaultItemInitspinmax},
{"initspintimer", DefaultItemInitspintimer},
{"initsubst", DefaultItemInitsubst},
{"logfile", DefaultItemLogfile},
{"logfilemax", DefaultItemLogfilemax},
@ -4281,6 +4421,8 @@ ITEM keyConsole[] = {
{"idletimeout", ConsoleItemIdletimeout},
{"include", ConsoleItemInclude},
{"initcmd", ConsoleItemInitcmd},
{"initspinmax", ConsoleItemInitspinmax},
{"initspintimer", ConsoleItemInitspintimer},
{"initsubst", ConsoleItemInitsubst},
{"logfile", ConsoleItemLogfile},
{"logfilemax", ConsoleItemLogfilemax},

View File

@ -1,5 +1,5 @@
/*
* $Id: version.h,v 1.63 2004/05/28 17:59:37 bryan Exp $
* $Id: version.h,v 1.64 2004/06/09 22:26:19 bryan Exp $
*
* Copyright conserver.com, 2000
*
@ -14,4 +14,4 @@
@(#) Copyright 2000 conserver.com.\n\
All rights reserved.\n"
#define THIS_VERSION "conserver.com version 8.1.7"
#define THIS_VERSION "conserver.com version 8.1.8"

View File

@ -1,5 +1,5 @@
.\" $Id: console.man,v 1.54 2004/05/28 00:02:16 bryan Exp $
.TH CONSOLE 1 "2004/05/28" "conserver-8.1.7" "conserver"
.TH CONSOLE 1 "2004/05/28" "conserver-8.1.8" "conserver"
.SH NAME
console \- console server client program
.SH SYNOPSIS

View File

@ -4,7 +4,7 @@
#
%define pkg conserver
%define ver 8.1.7
%define ver 8.1.8
# define the name of the machine on which the main conserver
# daemon will be running if you don't want to use the default

View File

@ -1,7 +1,7 @@
PKG="conserver"
NAME="Console server and client"
CATEGORY="system"
VERSION="8.1.7"
VERSION="8.1.8"
DESC="Console server and client"
CLASSES=none
ARCH=sparc