Imported from conserver-GNAC-6.06.tar.gz

This commit is contained in:
Bryan Stansell 1999-01-13 14:38:26 -08:00
parent decc2f8c4f
commit f24591ec63
25 changed files with 621 additions and 1011 deletions

View File

@ -15,8 +15,10 @@
# name : tty[@host] : baud[parity] : device : group
DOMAINHACK=
LOGDIR=/tmp
login3:|:9600p:&:10m
test:!ts4:10002:&:1m
ts6-10:!ts6:10010:&:
ts6-11:!ts6:10011:&:
ts6-12:!ts6:10012:&:
ts6-13:!ts6:10013:&:
%%
# list of clients we allow
# type machines

View File

@ -1,31 +1,21 @@
# $Id: Makefile,v 1.3 1998-11-17 23:45:05-08 bryan Exp $
# $Id: Makefile,v 1.7 1999-01-13 14:15:46-08 bryan Exp $
#
# Makefile for console server
#
# two steps (1) and (2)
# (1) change ETC below to where you would like the console server installed
# I would not change the name, you have to much with the docs then...
PROG= conserver
ETC= ${DESTDIR}/usr/local/etc
DOC= ${DESTDIR}/usr/local/man
# if we have to PUCC ptyd daemon we can use it to get ptys, else use fallback.o
# and change the CDEFS line below to =0
FALLBACK=fallback.o
PUCCLIB=
#FALLBACK=
#PUCCLIB=-lpucc
I=/usr/include
S=/usr/include/sys
L=/usr/local/include
P=
PREFIX=/usr/local
BIN=${PREFIX}/bin
ETC=${PREFIX}/etc
MAN=${PREFIX}/man
MANSECT=8
INSTALL=/usr/ucb/install
INCLUDE=
DEBUG=-O
CDEFS= -DSUN5 -DHAVE_PTYD=0 -DDO_VIRTUAL=1
CDEFS=
CFLAGS= ${DEBUG} ${CDEFS} ${INCLUDE}
LIBS=-lsocket -lnsl
HDR= cons.h \
access.h client.h consent.h group.h main.h master.h \
@ -33,77 +23,53 @@ HDR= cons.h \
SRC= access.c client.c consent.c group.c main.c master.c \
readcfg.c fallback.c
OBJ= access.o client.o consent.o group.o main.o master.o \
readcfg.o ${FALLBACK}
MAN= conserver.man
OTHER= README Sun-serial
SOURCE= Makefile ${OTHER} ${MAN} ${HDR} ${SRC}
readcfg.o fallback.o
INIT= init.script
all: ${PROG}
${PROG}:$P ${OBJ}
${CC} -o $@ ${CFLAGS} ${OBJ} ${PUCCLIB} -lsocket -lnsl
${PROG}: ${OBJ}
${CC} -o $@ ${CFLAGS} ${OBJ} ${LIBS}
clean: FRC
rm -f Makefile.bak ${PROG} a.out *.o core errs lint.out tags
deinstall: ${MAN} ${DOC} FRC
install -R ${ETC}/${PROG}
mkcat -r${DOC} -D ${MAN}
depend: ${HDR} ${SRC} FRC
maketd ${CDEFS} ${INCLUDE} ${SRC}
makedepend ${CDEFS} ${INCLUDE} ${SRC}
dirs: ${ETC} ${LIB}
dirs: ${BIN} ${ETC}
distrib: FRC
distrib -c ${ETC}/${PROG}
install: all dirs ${INIT} FRC
${INSTALL} -cs ${PROG} ${BIN}/${PROG}
${INSTALL} -c ${INIT} ${ETC}/${INIT}
install: all dirs FRC
install -c -s ${PROG} ${ETC}/${PROG}
${MAN}/man${MANSECT}:
${INSTALL} -d $@
install.man: ${MAN}/man${MANSECT}
${INSTALL} -c conserver.man ${MAN}/man${MANSECT}/conserver.${MANSECT}
lint: ${HDR} ${SRC} FRC
lint -h ${CDEFS} ${INCLUDE} ${SRC}
mkcat: ${MAN} ${DOC} FRC
mkcat -r${DOC} ${MAN}
print: source FRC
lpr -J"${PROG} source" ${SOURCE}
source: ${SOURCE}
spotless: clean
rcsclean ${SOURCE}
tags: ${HDR} ${SRC}
ctags -t ${HDR} ${SRC}
/ ${ETC} ${LIB}:
install -dr $@
${SOURCE}:
co -q $@
/ ${BIN} ${ETC}:
${INSTALL} -d $@
FRC:
# DO NOT DELETE THIS LINE - maketd DEPENDS ON IT
# DO NOT DELETE THIS LINE -- make depend depends on it.
access.o: access.c access.h client.h cons.h consent.h group.h main.h readcfg.h
client.o: client.c client.h cons.h consent.h
consent.o: client.h cons.h consent.c consent.h main.h
group.o: access.h client.h cons.h consent.h group.c group.h main.h version.h
main.o: access.h client.h cons.h consent.h group.h main.c master.h readcfg.h version.h
master.o: access.h client.h cons.h consent.h group.h main.h master.c master.h \
readcfg.h version.h
readcfg.o: access.h client.h cons.h consent.h group.h main.h master.h \
readcfg.c readcfg.h
fallback.o: fallback.c
# *** Do not add anything here - It will go away. ***
access.o: cons.h port.h access.h consent.h client.h group.h readcfg.h main.h
client.o: cons.h port.h consent.h client.h
consent.o: cons.h port.h consent.h client.h main.h
fallback.o: cons.h port.h
group.o: cons.h port.h consent.h client.h access.h group.h version.h main.h
main.o: cons.h port.h consent.h client.h group.h master.h access.h readcfg.h
main.o: version.h
master.o: cons.h port.h consent.h client.h group.h access.h master.h
master.o: readcfg.h version.h main.h
readcfg.o: cons.h port.h consent.h client.h group.h access.h readcfg.h
readcfg.o: master.h main.h

View File

@ -1,6 +1,12 @@
/*
* $Id: access.c,v 5.9 1993-05-17 07:36:01-07 ksb Exp $
* $Id: access.c,v 5.11 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
@ -48,6 +54,7 @@ static char copyright[] =
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "access.h"
#include "consent.h"
#include "client.h"

View File

@ -1,6 +1,12 @@
/*
* $Id: access.h,v 5.6 1993-02-09 03:53:43-08 ldv Exp $
* $Id: access.h,v 5.7 1998-12-17 17:20:37-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

View File

@ -1,6 +1,12 @@
/*
* $Id: client.c,v 5.18 1998-11-19 14:32:20-08 bryan Exp $
* $Id: client.c,v 5.20 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
@ -47,6 +53,7 @@ static char copyright[] =
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "consent.h"
#include "client.h"

View File

@ -1,6 +1,12 @@
/*
* $Id: client.h,v 5.10 1998-11-18 00:17:12-08 bryan Exp $
* $Id: client.h,v 5.11 1998-12-17 17:20:37-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

View File

@ -1,350 +1,9 @@
/*
* $Id: cons-gnac.h,v 5.38 1998-11-17 18:43:39-08 bryan Exp $
* $Id: cons-gnac.h,v 5.41 1999-01-13 11:50:33-08 bryan Exp $
*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
* GNAC, Inc., 1998
*
* Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* this is the configuration file for the Ohio State/PUCC console
* server. Just define the macros below to somehting that looks good
* and give it a go. It'll complain (under conserver -V) if things
* look really bad.
*
* all PTX, PTX2, and PTX4 code added by gregf@sequent.com (gregf)
*/
/* #define IBMR2 1 /**/
/* #define HPUX7 1 /**/
/* #define SUN4 1 /**/
/* #define SUN5 1 /**/
/* #define PTX2 1 /* DYNIX/ptx v2.X */
/* #define PTX4 1 /* DYNIX/ptx v4.0 */
#if (defined(PTX2) || defined(PTX4))
#define PTX
#endif
/* some machine specific details
*/
#if !defined(USE_OLDSEL)
#if defined(IBMR2)
#include <sys/select.h>
#endif
#endif
#if !defined(HAVE_UWAIT)
#define HAVE_UWAIT !(defined(IBMR2)||defined(SUN5)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
#if !defined(HAVE_WAIT3)
#define HAVE_WAIT3 !(defined(SUN5)||defined(PTX))
#endif
/* This is the port number used in the connection. It can use either
* /etc/services or a hardcoded port (SERVICE name has precedence).
* (You can -D one in the Makefile to override these.)
*/
/* #define PORT 782 /* only if you cannot put in /etc/services */
#if !defined(SERVICE)
#if !defined(PORT)
#define SERVICE "conserver"
#endif
#endif
/* Wait for a part of a second before slapping console server.
* Good for CISCO terminal servers that get upset when you
* attack with intense socket connections
*/
#if !defined(USLEEP_FOR_SLOW_PORTS)
#define USLEEP_FOR_SLOW_PORTS 100000
#endif
/* The name of the host which will act as the console server
*/
#if !defined(HOST)
#define HOST "console"
#endif
/* the default escape sequence used to give meta commands
*/
#define DEFATTN '\005'
#define DEFESC 'c'
/* Location of the configuration file
*/
#if !defined(CONFIG)
#define CONFIG "/etc/conserver.cf"
#endif
/* Location of ANL designed passwd file */
#if !defined(PASSWD_FILE)
#define PASSWD_FILE "/etc/conserver.passwd"
#endif
/* The maximum number of serial lines that can be handled by a child process
*/
#if !defined(MAXMEMB)
#define MAXMEMB 8
#endif
/* The maximum number of child processes spawned.
*/
#if !defined(MAXGRP)
#define MAXGRP 32
#endif
/* the max number of characters conserver will replay for you (the r command)
*/
#if !defined(MAXREPLAY)
#define MAXREPLAY (80*25)
#endif
/* if the encrypted passwd is in a shadow file, define HAVE_SHADOW (gregf)
*/
#if !defined(HAVE_SHADOW)
#define HAVE_SHADOW (defined(PTX)||defined(SUN5))
#endif
/* we'd like to line buffer our output, if we know how
*/
#if !defined(USE_SETLINEBUF)
#define USE_SETLINEBUF (!(defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)))
#endif
/* we'd like to line buffer our output, if we know how; PTX uses setvbuf (gregf)
*/
#if !defined(USE_SETVBUF)
#define USE_SETVBUF (defined(PTX))
#endif
/* hpux doesn't have getdtablesize() and they don't provide a macro
* in non-KERNEL cpp mode
*/
#if defined(HPUX7)||defined(HPUX8)||defined(HPUX9)
#define getdtablesize() 64
#endif
/* the console server will provide a pseudo-device console which
* allows operators to run backups and such without a hard wired
* line (this is also good for testing the server to see if you
* might wanna use it). Turn this on only if you (might) need it.
*/
#if !defined(DO_VIRTUAL)
#define DO_VIRTUAL 1
#endif
#if DO_VIRTUAL
/* if the virtual console option is on we need a source to ptys,
* the PUCC ptyd daemon is the best source be know, else fall back
* on some emulation code?? (XXX)
*/
#if !defined(HAVE_PTYD)
#define HAVE_PTYD (defined(S81)||defined(VAX8800))
#endif
#if !defined(HAVE_GETPSEUDO)
#define HAVE_GETPSEUDO (defined(PTX2))
#endif
#if !defined(HAVE_PTSNAME)
#define HAVE_PTSNAME (defined(PTX4))
#endif
#if !defined(HAVE_LDTERM)
#define HAVE_LDTERM (defined(SUN5))
#endif
#if !defined(HAVE_STTY_LD)
#define HAVE_STTY_LD (defined(IRIX5))
#endif
#endif /* virtual (process on a pseudo-tty) console support */
#if !defined(HAVE_SETSID)
#define HAVE_SETSID (defined(IBMR2)||defined(SUN5)||defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
/* should we use flock to keep multiple conservers from hurting each other?
* PTX has lockf... should probably port code to work with this (gregf)
*/
#if !defined(USE_FLOCK)
#define USE_FLOCK (!(defined(IBMR2)||defined(SUN5)||defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)))
#endif
/* should we try to pop streams modules off?
*/
#if !defined(USE_STREAMS)
#define USE_STREAMS (defined(SUN4)||defined(SUN5)||defined(PTX)||defined(IRIX5))
#endif
/* if we do not have old style tty emulation use termios.h
*/
#if !defined(USE_TERMIO)
#define USE_TERMIO (defined(ETA10)||defined(V386))
#endif
#if !defined(USE_TERMIOS)
#define USE_TERMIOS (defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(SUN5)||defined(PTX)||defined(IRIX5))
#endif
#if !defined(USE_TCBREAK)
#define USE_TCBREAK (defined(SUN4)||defined(PTX))
#endif
/* if we have <strings.h> define this to 1, else define to 0
*/
#if !defined(USE_STRINGS)
#define USE_STRINGS (defined(SUN4)||defined(DYNIX)||defined(EPIX)||defined(IRIX5))
#endif
#if !defined(NEED_UNISTD_H)
#define NEED_UNISTD_H (defined(SUN5)||defined(PTX))
#endif
#if !defined(USE_SYS_TIME_H)
#define USE_SYS_TIME_H (!defined(PTX))
#endif
#if USE_STRINGS
#define strchr index
#define strrchr rindex
#endif
/* used to force the server process to clear parity, which is for farmers
*/
#define CPARITY 1
/* if you do not have fd_set's here is a possible emulation
*/
#if USE_OLDSEL
typedef long fd_set;
#define FD_ZERO(a) {*(a)=0;}
#define FD_SET(d,a) {*(a) |= (1 << (d));}
#define FD_CLR(d,a) {*(a) &= ~(1 << (d));}
#define FD_ISSET(d,a) (*(a) & (1 << (d)))
#endif
#if USE_TERMIOS
#if defined(HPUX7)||defined(HPUX8)||defined(HPUX9)
#define TCGETS _IOR('T', 16, struct termios)
#define TCSETS _IOW('T', 17, struct termios)
#endif
#if defined(PTX2)
#define TCGETS TCGETP
#define TCSETS TCSETP
#endif
#endif
/* which type does wait(2) take for status location
*/
#if HAVE_UWAIT
#define WAIT_T union wait
#if ! defined WEXITSTATUS
#define WEXITSTATUS(x) ((x).w_retcode)
#endif
#else
#define WAIT_T int
#endif
/* which type signal handlers return on this machine
*/
#if defined(sun) || defined(NEXT2) || defined(SUN5) || defined(PTX) || defined(IRIX5)
#define SIGRETS void
#else
#define SIGRETS int
#endif
/* do we have a (working) setsockopt call
*/
#if !defined(HAVE_SETSOCKOPT)
#define HAVE_SETSOCKOPT (defined(sun)||defined(PTX))
#endif
/* does this system have the ANSI strerror() function?
*/
#if !defined(HAVE_STRERROR)
#define HAVE_STRERROR (defined(IBMR2)||defined(ETA10)||defined(V386)||defined(SUN5)||defined(NEXT2)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
#if ! HAVE_STRERROR
extern int errno;
extern char *sys_errlist[];
#define strerror(Me) (sys_errlist[Me])
#endif
#if !defined(HAVE_H_ERRLIST)
#define HAVE_H_ERRLIST (defined(SUN4)||defined(SUN3)||defined(FREEBSD)|defined(NETBSD)||defined(PTX)||defined(IRIX5))
#endif
#if HAVE_H_ERRLIST
extern int h_errno;
extern char *h_errlist[];
#define hstrerror(Me) (h_errlist[Me])
#else
#define hstrerror(Me) "host lookup error"
#endif
#if !defined(HAVE_RLIMIT)
#if (defined(SUN5)||defined(PTX4))
#define HAVE_RLIMIT 1
#else
#define HAVE_RLIMIT 0
#endif
#endif
/* that's all. just run
* make
* ./conserver -V
*/
/* communication constants
*/
#define OB_SUSP 'Z' /* suspended by server */
#define OB_DROP '.' /* dropped by server */
/* Due to C's poor man's macros the macro below would break if statements,
* What we want
* macro() { stuff }
* but the syntax gives us
* macro() { stuff };
*
* the extra semicolon breaks if statements!
* Of course, the one we use makes lint scream:
* macro() do { stuff } while (0)
*
* which is a statement and makes if statements safe
*/
#if defined(lint)
extern int shut_up_lint;
#else
#define shut_up_lint 0
#endif
/* this macro efficently outputs a constant string to a fd
* of course it doesn't check the write :-(
*/
#define CSTROUT(Mfd, Mstr) do { \
static char _ac[] = Mstr; \
write(Mfd, _ac, sizeof(_ac)-1); \
} while (shut_up_lint)
extern char *calloc(), *malloc(), *realloc();
#define SUN5 1

View File

@ -1,351 +1,13 @@
/*
* $Id: cons-gnac.h,v 5.35 1997-02-23 18:32:38-08 bryan Exp $
* $Id: cons-test.h,v 1.3 1999-01-13 11:57:17-08 bryan Exp $
*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
* GNAC, Inc., 1998
*
* Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* this is the configuration file for the Ohio State/PUCC console
* server. Just define the macros below to somehting that looks good
* and give it a go. It'll complain (under conserver -V) if things
* look really bad.
*
* all PTX, PTX2, and PTX4 code added by gregf@sequent.com (gregf)
*/
/* #define IBMR2 1 /**/
/* #define HPUX7 1 /**/
/* #define SUN4 1 /**/
/* #define SUN5 1 /**/
/* #define PTX2 1 /* DYNIX/ptx v2.X */
/* #define PTX4 1 /* DYNIX/ptx v4.0 */
#if (defined(PTX2) || defined(PTX4))
#define PTX
#endif
/* some machine specific details
*/
#if !defined(USE_OLDSEL)
#if defined(IBMR2)
#include <sys/select.h>
#endif
#endif
#if !defined(HAVE_UWAIT)
#define HAVE_UWAIT !(defined(IBMR2)||defined(SUN5)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
#if !defined(HAVE_WAIT3)
#define HAVE_WAIT3 !(defined(SUN5)||defined(PTX))
#endif
/* This is the port number used in the connection. It can use either
* /etc/services or a hardcoded port (SERVICE name has precedence).
* (You can -D one in the Makefile to override these.)
*/
/* #define PORT 782 /* only if you cannot put in /etc/services */
#define SUN5 1
#define PORT 7777
#if !defined(SERVICE)
#if !defined(PORT)
#define SERVICE "conserver"
#endif
#endif
/* Wait for a part of a second before slapping console server.
* Good for CISCO terminal servers that get upset when you
* attack with intense socket connections
*/
#if !defined(USLEEP_FOR_SLOW_PORTS)
#define USLEEP_FOR_SLOW_PORTS 100000
#endif
/* The name of the host which will act as the console server
*/
#if !defined(HOST)
#define HOST "localhost"
#endif
/* the default escape sequence used to give meta commands
*/
#define DEFATTN '\005'
#define DEFESC 'c'
/* Location of the configuration file
*/
#if !defined(CONFIG)
#define CONFIG "../conserver.cf/test.cf"
#endif
/* Location of ANL designed passwd file */
#if !defined(PASSWD_FILE)
#define PASSWD_FILE "./conserver.passwd"
#endif
/* The maximum number of serial lines that can be handled by a child process
*/
#if !defined(MAXMEMB)
#define MAXMEMB 8
#endif
/* The maximum number of child processes spawned.
*/
#if !defined(MAXGRP)
#define MAXGRP 32
#endif
/* the max number of characters conserver will replay for you (the r command)
*/
#if !defined(MAXREPLAY)
#define MAXREPLAY (80*25)
#endif
/* if the encrypted passwd is in a shadow file, define HAVE_SHADOW (gregf)
*/
#if !defined(HAVE_SHADOW)
#define HAVE_SHADOW (defined(PTX)||defined(SUN5))
#endif
/* we'd like to line buffer our output, if we know how
*/
#if !defined(USE_SETLINEBUF)
#define USE_SETLINEBUF (!(defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)))
#endif
/* we'd like to line buffer our output, if we know how; PTX uses setvbuf (gregf)
*/
#if !defined(USE_SETVBUF)
#define USE_SETVBUF (defined(PTX))
#endif
/* hpux doesn't have getdtablesize() and they don't provide a macro
* in non-KERNEL cpp mode
*/
#if defined(HPUX7)||defined(HPUX8)||defined(HPUX9)
#define getdtablesize() 64
#endif
/* the console server will provide a pseudo-device console which
* allows operators to run backups and such without a hard wired
* line (this is also good for testing the server to see if you
* might wanna use it). Turn this on only if you (might) need it.
*/
#if !defined(DO_VIRTUAL)
#define DO_VIRTUAL 1
#endif
#if DO_VIRTUAL
/* if the virtual console option is on we need a source to ptys,
* the PUCC ptyd daemon is the best source be know, else fall back
* on some emulation code?? (XXX)
*/
#if !defined(HAVE_PTYD)
#define HAVE_PTYD (defined(S81)||defined(VAX8800))
#endif
#if !defined(HAVE_GETPSEUDO)
#define HAVE_GETPSEUDO (defined(PTX2))
#endif
#if !defined(HAVE_PTSNAME)
#define HAVE_PTSNAME (defined(PTX4))
#endif
#if !defined(HAVE_LDTERM)
#define HAVE_LDTERM (defined(SUN5))
#endif
#if !defined(HAVE_STTY_LD)
#define HAVE_STTY_LD (defined(IRIX5))
#endif
#endif /* virtual (process on a pseudo-tty) console support */
#if !defined(HAVE_SETSID)
#define HAVE_SETSID (defined(IBMR2)||defined(SUN5)||defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
/* should we use flock to keep multiple conservers from hurting each other?
* PTX has lockf... should probably port code to work with this (gregf)
*/
#if !defined(USE_FLOCK)
#define USE_FLOCK (!(defined(IBMR2)||defined(SUN5)||defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)))
#endif
/* should we try to pop streams modules off?
*/
#if !defined(USE_STREAMS)
#define USE_STREAMS (defined(SUN4)||defined(SUN5)||defined(PTX)||defined(IRIX5))
#endif
/* if we do not have old style tty emulation use termios.h
*/
#if !defined(USE_TERMIO)
#define USE_TERMIO (defined(ETA10)||defined(V386))
#endif
#if !defined(USE_TERMIOS)
#define USE_TERMIOS (defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(SUN5)||defined(PTX)||defined(IRIX5))
#endif
#if !defined(USE_TCBREAK)
#define USE_TCBREAK (defined(SUN4)||defined(PTX))
#endif
/* if we have <strings.h> define this to 1, else define to 0
*/
#if !defined(USE_STRINGS)
#define USE_STRINGS (defined(SUN4)||defined(DYNIX)||defined(EPIX)||defined(IRIX5))
#endif
#if !defined(NEED_UNISTD_H)
#define NEED_UNISTD_H (defined(SUN5)||defined(PTX))
#endif
#if !defined(USE_SYS_TIME_H)
#define USE_SYS_TIME_H (!defined(PTX))
#endif
#if USE_STRINGS
#define strchr index
#define strrchr rindex
#endif
/* used to force the server process to clear parity, which is for farmers
*/
#define CPARITY 1
/* if you do not have fd_set's here is a possible emulation
*/
#if USE_OLDSEL
typedef long fd_set;
#define FD_ZERO(a) {*(a)=0;}
#define FD_SET(d,a) {*(a) |= (1 << (d));}
#define FD_CLR(d,a) {*(a) &= ~(1 << (d));}
#define FD_ISSET(d,a) (*(a) & (1 << (d)))
#endif
#if USE_TERMIOS
#if defined(HPUX7)||defined(HPUX8)||defined(HPUX9)
#define TCGETS _IOR('T', 16, struct termios)
#define TCSETS _IOW('T', 17, struct termios)
#endif
#if defined(PTX2)
#define TCGETS TCGETP
#define TCSETS TCSETP
#endif
#endif
/* which type does wait(2) take for status location
*/
#if HAVE_UWAIT
#define WAIT_T union wait
#if ! defined WEXITSTATUS
#define WEXITSTATUS(x) ((x).w_retcode)
#endif
#else
#define WAIT_T int
#endif
/* which type signal handlers return on this machine
*/
#if defined(sun) || defined(NEXT2) || defined(SUN5) || defined(PTX) || defined(IRIX5)
#define SIGRETS void
#else
#define SIGRETS int
#endif
/* do we have a (working) setsockopt call
*/
#if !defined(HAVE_SETSOCKOPT)
#define HAVE_SETSOCKOPT (defined(sun)||defined(PTX))
#endif
/* does this system have the ANSI strerror() function?
*/
#if !defined(HAVE_STRERROR)
#define HAVE_STRERROR (defined(IBMR2)||defined(ETA10)||defined(V386)||defined(SUN5)||defined(NEXT2)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
#if ! HAVE_STRERROR
extern int errno;
extern char *sys_errlist[];
#define strerror(Me) (sys_errlist[Me])
#endif
#if !defined(HAVE_H_ERRLIST)
#define HAVE_H_ERRLIST (defined(SUN4)||defined(SUN3)||defined(FREEBSD)|defined(NETBSD)||defined(PTX)||defined(IRIX5))
#endif
#if HAVE_H_ERRLIST
extern int h_errno;
extern char *h_errlist[];
#define hstrerror(Me) (h_errlist[Me])
#else
#define hstrerror(Me) "host lookup error"
#endif
#if !defined(HAVE_RLIMIT)
#if (defined(SUN5)||defined(PTX4))
#define HAVE_RLIMIT 1
#else
#define HAVE_RLIMIT 0
#endif
#endif
/* that's all. just run
* make
* ./conserver -V
*/
/* communication constants
*/
#define OB_SUSP 'Z' /* suspended by server */
#define OB_DROP '.' /* dropped by server */
/* Due to C's poor man's macros the macro below would break if statements,
* What we want
* macro() { stuff }
* but the syntax gives us
* macro() { stuff };
*
* the extra semicolon breaks if statements!
* Of course, the one we use makes lint scream:
* macro() do { stuff } while (0)
*
* which is a statement and makes if statements safe
*/
#if defined(lint)
extern int shut_up_lint;
#else
#define shut_up_lint 0
#endif
/* this macro efficently outputs a constant string to a fd
* of course it doesn't check the write :-(
*/
#define CSTROUT(Mfd, Mstr) do { \
static char _ac[] = Mstr; \
write(Mfd, _ac, sizeof(_ac)-1); \
} while (shut_up_lint)
extern char *calloc(), *malloc(), *realloc();

View File

@ -1 +1 @@
cons-test.h
cons-gnac.h

View File

@ -1,6 +1,12 @@
/*
* $Id: consent.c,v 5.30 1998-11-20 17:30:45-08 bryan Exp $
* $Id: consent.c,v 5.33 1999-01-13 11:52:21-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
@ -52,6 +58,7 @@ static char copyright[] =
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "consent.h"
#include "client.h"
#include "main.h"
@ -628,7 +635,7 @@ fd_set *pfdSet;
struct hostent *hp;
int one = 1;
#ifdef USLEEP_FOR_SLOW_PORTS
#if USLEEP_FOR_SLOW_PORTS
usleep( USLEEP_FOR_SLOW_PORTS ); /* Sleep for slow network ports */
#endif

View File

@ -1,6 +1,12 @@
/*
* $Id: consent.h,v 5.11 1998-12-14 11:20:15-08 bryan Exp $
* $Id: consent.h,v 5.12 1998-12-17 17:21:24-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

View File

@ -1,6 +1,12 @@
/*
* $Id: fallback.c,v 5.18 1994-07-19 08:25:54-07 ksb Exp $
* $Id: fallback.c,v 5.20 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* This is a fake library interface to ptyd (mtr&ksb)
*
* Mike Rowan (mtr@mace.cc.purdue.edu)
@ -22,6 +28,7 @@
#include <ctype.h>
#include "cons.h"
#include "port.h"
#if HAVE_PTSNAME
/* for grantpt() and unlockpt() (gregf)

View File

@ -1,6 +1,12 @@
/*
* $Id: group.c,v 5.48 1998-12-14 11:20:15-08 bryan Exp $
* $Id: group.c,v 5.51 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright (c) 1990 The Ohio State University.
* All rights reserved.
*
@ -65,6 +71,7 @@ All rights reserved.\n";
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "consent.h"
#include "client.h"
#include "access.h"
@ -176,7 +183,28 @@ ReOpen(arg)
}
}
void
static fd_set *rinitUsr1;
static SIGRETS
ReUp(arg)
int arg;
{
register int i;
register CONSENT *pCE;
if ((GRPENT *)0 == pGEHup) {
return;
}
for (i = 0, pCE = pGEHup->pCElist; i < pGEHup->imembers; ++i, ++pCE) {
if (pCE->fup) {
continue;
}
ConsInit(pCE, rinitUsr1);
}
(void)signal(SIGUSR1, ReUp);
}
static SIGRETS
Mark(arg)
int arg;
{
@ -562,10 +590,14 @@ int sfd;
/* on a SIGHUP we should close and reopen our log files
*/
pGEHup = pGE;
signal(SIGHUP, ReOpen);
(void)signal(SIGHUP, ReOpen);
/* on a SIGUSR1 we try to bring up all downed consoles */
rinitUsr1 = &rinit;
(void)signal(SIGUSR1, ReUp);
/* on a SIGALRM we should mark log files */
signal(SIGALRM, Mark);
(void)signal(SIGALRM, Mark);
alarm(ALARMTIME);
/* the MAIN loop a group server

View File

@ -1,6 +1,12 @@
/*
* $Id: group.h,v 5.8 1994-07-19 09:40:23-07 ksb Exp $
* $Id: group.h,v 5.9 1998-12-17 17:21:24-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

View File

@ -1,179 +0,0 @@
/*@Header@*/
/*
* ident_client.c
*
* Identifies the remote user of a given connection.
*
* Written 940112 by Luke Mewburn <lm@rmit.edu.au>
*
* Copyright (C) 1994 by Luke Mewburn.
* This code may be used freely by anyone as long as this copyright remains.
*
* $Compile(*): ${cc-cc} ${cc_debug--g} -DTEST %f -o %F -lsocket -lnls
*/
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include "identd.h"
#define IDENT_PORT 113
/*@Explode cli@*/
/* (lm)
* ident_client
* - user interface to identd
*
* Args:
* peeraddr sockaddr_in struct of peer end, from getpeername(...)
* ouraddr sockaddr_in struct of local end, from getsockname(...)
*
* Returns:
* NULL on failure to identify (for whatever reason), or pointer to
* static character string with the identity.
*/
char *
ident_client(peeraddr, ouraddr, identifier)
struct sockaddr_in peeraddr, ouraddr;
char *identifier/*[1024]*/;
{
struct sockaddr_in authcon;
int authfd, authlen;
struct servent *identserv;
int identport;
FILE *authfpin, *authfpout;
char buffer[8192]; /* XXX: argh! magic numbers */
char reply_type[81];
char opsys_or_err[81];
int rport, lport;
authfd = socket(AF_INET, SOCK_STREAM, 0);
if (authfd == -1)
return NULL;
identserv = getservbyname("ident", "tcp");
if (identserv)
identport = identserv->s_port;
else
identport = ntohs(IDENT_PORT);
memset(&authcon, 0, sizeof(authcon));
authcon.sin_family = AF_INET;
authcon.sin_addr.s_addr = peeraddr.sin_addr.s_addr;
authcon.sin_port = identport;
authlen = sizeof(authcon);
if (connect(authfd, (struct sockaddr *)&authcon, authlen) < 0)
return NULL;
authfpin = fdopen(authfd, "r");
authfpout = fdopen(authfd, "w");
if (!authfpin || !authfpout)
return NULL;
fprintf(authfpout, "%d , %d\n", peeraddr.sin_port, ouraddr.sin_port);
fflush(authfpout);
if (fgets(buffer, sizeof(buffer)-1, authfpin) == NULL)
return NULL;
shutdown(authfd, 1);
authlen = sscanf(buffer, "%d , %d : %[^ \t\n\r:] : %[^ \t\n\r:] : %[^\n\r]",
&lport, &rport, reply_type, opsys_or_err, identifier);
if (authlen < 3)
return NULL;
if (0 == strcasecmp(reply_type, "ERROR")) {
printf("error %s\n", buffer);
return NULL;
}
if (0 != strcasecmp(reply_type, "USERID")) {
printf("no-user %s\n", buffer);
return NULL;
}
return identifier;
} /* ident_client */
/*@Remove@*/
#if defined(TEST)
/*@Explode main@*/
extern int errno;
extern char *sys_errlist[];
#define strerror(Me) (sys_errlist[Me])
static struct sockaddr_in master_port, response_port;
char *progname = "identd-test";
/* test driver for the identd client module (ksb)
* bind to a port, wait for telnets and tell them who they are
*/
int
main(argc, argv, envp)
int argc;
char **argv, **envp;
{
auto struct sockaddr_in hisaddr, ouraddr;
register int mfd, cfd;
auto int true = 1, length, so;
auto char them[1024];
(void)memset((void *)&master_port, 0, sizeof(master_port));
master_port.sin_family = AF_INET;
*(u_long *)&master_port.sin_addr = INADDR_ANY;
master_port.sin_port = htons(7098);
if (-1 == (mfd = socket(AF_INET, SOCK_STREAM, 0))) {
fprintf(stderr, "%s: socket: %s\n", progname, strerror(errno));
exit(1);
}
#if defined(SO_REUSEADDR) && defined(SOL_SOCKET)
if (setsockopt(mfd, SOL_SOCKET, SO_REUSEADDR, (char *)&true, sizeof(true)) < 0) {
fprintf(stderr, "%s: setsockopt: %s\n", progname, strerror(errno));
exit(1);
}
#endif
if (bind(mfd, (struct sockaddr *)&master_port, sizeof(master_port))<0) {
fprintf(stderr, "%s: bind: %s\n", progname, strerror(errno));
exit(1);
}
if (listen(mfd, SOMAXCONN) < 0) {
fprintf(stderr, "%s: listen: %s\n", progname, strerror(errno));
exit(1);
}
length = sizeof(ouraddr);
if (getsockname(mfd, (struct sockaddr *)&ouraddr, &length) < 0) {
fprintf(stderr, "%s: getsockname: %d: %s\n", progname, mfd, strerror(errno));
}
while (so = sizeof(response_port), -1 != (cfd = accept(mfd, (struct sockaddr *)&response_port, &so))) {
printf("%d\n", cfd);
length = sizeof(hisaddr);
if (getpeername(cfd, (struct sockaddr *)&hisaddr, &length) < 0) {
write(cfd, "can't get your addrees?\n", 24);
} else if ((char *)0 != ident_client(hisaddr, ouraddr, them)) {
write(cfd, them, strlen(them));
write(cfd, "\n", 1);
} else {
write(cfd, "no identd?\n", 11);
}
close(cfd);
printf("closed\n");
}
exit(0);
}
/*@Remove@*/
#endif /* test driver */

View File

@ -1,3 +1,11 @@
/*
* $Id: main.c,v 5.29 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright (c) 1990 The Ohio State University.
* All rights reserved.
@ -35,6 +43,7 @@
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "consent.h"
#include "client.h"
#include "group.h"
@ -49,7 +58,7 @@
#endif
char rcsid[] =
"$Id: main.c,v 5.27 1998-11-19 14:32:45-08 bryan Exp $";
"$Id: main.c,v 5.29 1999-01-13 11:48:11-08 bryan Exp $";
char *progname =
rcsid;
int fAll = 1, fVerbose = 0, fSoftcar = 0;

View File

@ -1,6 +1,12 @@
/*
* $Id: main.h,v 5.8 1998-11-17 18:42:27-08 bryan Exp $
* $Id: main.h,v 5.9 1998-12-17 17:21:24-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

View File

@ -1,6 +1,12 @@
/*
* $Id: master.c,v 5.19 1998-11-17 23:14:51-08 bryan Exp $
* $Id: master.c,v 5.22 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright (c) 1990 The Ohio State University.
* All rights reserved.
*
@ -35,6 +41,7 @@
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "consent.h"
#include "client.h"
#include "group.h"
@ -113,6 +120,23 @@ QuitIt(arg)
++fSawQuit;
}
/* Signal all the kids...
*/
static SIGRETS
SignalKids(arg)
int arg;
{
int i;
for (i = 0; i < MAXGRP; ++i) {
if (0 == aGroups[i].imembers)
continue;
if (-1 == kill(aGroups[i].pid, arg)) {
fprintf(stderr, "%s: kill: %s\n", progname, strerror(errno));
}
}
(void)signal(SIGUSR1, SignalKids);
}
/* this routine is used by the master console server process (ksb)
*/
@ -136,6 +160,8 @@ REMOTE
/* set up signal handler */
(void)signal(SIGCHLD, FixKids);
(void)signal(SIGTERM, QuitIt);
(void)signal(SIGUSR1, SignalKids);
(void)signal(SIGHUP, SignalKids);
/* set up port for master to listen on
*/
@ -187,7 +213,9 @@ REMOTE
rmask = rmaster;
if (-1 == select(msfd+1, &rmask, (fd_set *)0, (fd_set *)0, (struct timeval *)0)) {
fprintf(stderr, "%s: select: %s\n", progname, strerror(errno));
if ( errno != EINTR ) {
fprintf(stderr, "%s: select: %s\n", progname, strerror(errno));
}
continue;
}
if (!FD_ISSET(msfd, &rmask)) {

View File

@ -1,6 +1,12 @@
/*
* $Id: master.h,v 5.6 1993-02-09 04:01:31-08 ldv Exp $
* $Id: master.h,v 5.7 1998-12-17 17:21:24-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

357
conserver/port.h Normal file
View File

@ -0,0 +1,357 @@
/*
* $Id: port.h,v 1.2 1999-01-13 13:47:32-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
* Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
*/
/*
* this is the configuration file for the Ohio State/PUCC console
* server. Just define the macros below to somehting that looks good
* and give it a go. It'll complain (under conserver -V) if things
* look really bad.
*
* all PTX, PTX2, and PTX4 code added by gregf@sequent.com (gregf)
*/
#if !( defined(IBMR2) || defined(HPUX7) || defined(SUN4) || defined(SUN5) || defined(PTX2) || defined(PTX4) )
#error "Platform needs to be defined. See port.h"
#endif
#if (defined(PTX2) || defined(PTX4))
#define PTX
#endif
/* some machine specific details
*/
#if !defined(USE_OLDSEL)
#if defined(IBMR2)
#include <sys/select.h>
#endif
#endif
#if !defined(HAVE_UWAIT)
#define HAVE_UWAIT !(defined(IBMR2)||defined(SUN5)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
#if !defined(HAVE_WAIT3)
#define HAVE_WAIT3 !(defined(SUN5)||defined(PTX))
#endif
/* This is the port number used in the connection. It can use either
* /etc/services or a hardcoded port (SERVICE name has precedence).
* (You can -D one in the Makefile to override these.)
*/
/* #define PORT 782 /* only if you cannot put in /etc/services */
#if !defined(SERVICE)
#if !defined(PORT)
#define SERVICE "conserver"
#endif
#endif
/* Wait for a part of a second before slapping console server.
* Good for CISCO terminal servers that get upset when you
* attack with intense socket connections
*/
#if !defined(USLEEP_FOR_SLOW_PORTS)
#define USLEEP_FOR_SLOW_PORTS 100000
#endif
/* The name of the host which will act as the console server
*/
#if !defined(HOST)
#define HOST "console"
#endif
/* the default escape sequence used to give meta commands
*/
#if !defined(DEFATTN)
#define DEFATTN '\005'
#endif
#if !defined(DEFESC)
#define DEFESC 'c'
#endif
/* Location of the configuration file
*/
#if !defined(CONFIG)
#define CONFIG "/etc/conserver.cf"
#endif
/* Location of ANL designed passwd file */
#if !defined(PASSWD_FILE)
#define PASSWD_FILE "/etc/conserver.passwd"
#endif
/* The maximum number of serial lines that can be handled by a child process
*/
#if !defined(MAXMEMB)
#define MAXMEMB 8
#endif
/* The maximum number of child processes spawned.
*/
#if !defined(MAXGRP)
#define MAXGRP 32
#endif
/* the max number of characters conserver will replay for you (the r command)
*/
#if !defined(MAXREPLAY)
#define MAXREPLAY (80*25)
#endif
/* if the encrypted passwd is in a shadow file, define HAVE_SHADOW (gregf)
*/
#if !defined(HAVE_SHADOW)
#define HAVE_SHADOW (defined(PTX)||defined(SUN5))
#endif
/* we'd like to line buffer our output, if we know how
*/
#if !defined(USE_SETLINEBUF)
#define USE_SETLINEBUF (!(defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)))
#endif
/* we'd like to line buffer our output, if we know how; PTX uses setvbuf (gregf)
*/
#if !defined(USE_SETVBUF)
#define USE_SETVBUF (defined(PTX))
#endif
/* hpux doesn't have getdtablesize() and they don't provide a macro
* in non-KERNEL cpp mode
*/
#if defined(HPUX7)||defined(HPUX8)||defined(HPUX9)
#define getdtablesize() 64
#endif
/* the console server will provide a pseudo-device console which
* allows operators to run backups and such without a hard wired
* line (this is also good for testing the server to see if you
* might wanna use it). Turn this on only if you (might) need it.
*/
#if !defined(DO_VIRTUAL)
#define DO_VIRTUAL 1
#endif
#if DO_VIRTUAL
/* if the virtual console option is on we need a source to ptys,
* the PUCC ptyd daemon is the best source be know, else fall back
* on some emulation code?? (XXX)
*/
#if !defined(HAVE_PTYD)
#define HAVE_PTYD (defined(S81)||defined(VAX8800))
#endif
#if !defined(HAVE_GETPSEUDO)
#define HAVE_GETPSEUDO (defined(PTX2))
#endif
#if !defined(HAVE_PTSNAME)
#define HAVE_PTSNAME (defined(PTX4))
#endif
#if !defined(HAVE_LDTERM)
#define HAVE_LDTERM (defined(SUN5))
#endif
#if !defined(HAVE_STTY_LD)
#define HAVE_STTY_LD (defined(IRIX5))
#endif
#endif /* virtual (process on a pseudo-tty) console support */
#if !defined(HAVE_SETSID)
#define HAVE_SETSID (defined(IBMR2)||defined(SUN5)||defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
/* should we use flock to keep multiple conservers from hurting each other?
* PTX has lockf... should probably port code to work with this (gregf)
*/
#if !defined(USE_FLOCK)
#define USE_FLOCK (!(defined(IBMR2)||defined(SUN5)||defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(PTX)))
#endif
/* should we try to pop streams modules off?
*/
#if !defined(USE_STREAMS)
#define USE_STREAMS (defined(SUN4)||defined(SUN5)||defined(PTX)||defined(IRIX5))
#endif
/* if we do not have old style tty emulation use termios.h
*/
#if !defined(USE_TERMIO)
#define USE_TERMIO (defined(ETA10)||defined(V386))
#endif
#if !defined(USE_TERMIOS)
#define USE_TERMIOS (defined(HPUX7)||defined(HPUX8)||defined(HPUX9)||defined(SUN5)||defined(PTX)||defined(IRIX5))
#endif
#if !defined(USE_TCBREAK)
#define USE_TCBREAK (defined(SUN4)||defined(PTX))
#endif
/* if we have <strings.h> define this to 1, else define to 0
*/
#if !defined(USE_STRINGS)
#define USE_STRINGS (defined(SUN4)||defined(DYNIX)||defined(EPIX)||defined(IRIX5))
#endif
#if !defined(NEED_UNISTD_H)
#define NEED_UNISTD_H (defined(SUN5)||defined(PTX))
#endif
#if !defined(USE_SYS_TIME_H)
#define USE_SYS_TIME_H (!defined(PTX))
#endif
#if USE_STRINGS
#define strchr index
#define strrchr rindex
#endif
/* used to force the server process to clear parity, which is for farmers
*/
#define CPARITY 1
/* if you do not have fd_set's here is a possible emulation
*/
#if USE_OLDSEL
typedef long fd_set;
#define FD_ZERO(a) {*(a)=0;}
#define FD_SET(d,a) {*(a) |= (1 << (d));}
#define FD_CLR(d,a) {*(a) &= ~(1 << (d));}
#define FD_ISSET(d,a) (*(a) & (1 << (d)))
#endif
#if USE_TERMIOS
#if defined(HPUX7)||defined(HPUX8)||defined(HPUX9)
#define TCGETS _IOR('T', 16, struct termios)
#define TCSETS _IOW('T', 17, struct termios)
#endif
#if defined(PTX2)
#define TCGETS TCGETP
#define TCSETS TCSETP
#endif
#endif
/* which type does wait(2) take for status location
*/
#if HAVE_UWAIT
#define WAIT_T union wait
#if ! defined WEXITSTATUS
#define WEXITSTATUS(x) ((x).w_retcode)
#endif
#else
#define WAIT_T int
#endif
/* which type signal handlers return on this machine
*/
#if defined(sun) || defined(NEXT2) || defined(SUN5) || defined(PTX) || defined(IRIX5)
#define SIGRETS void
#else
#define SIGRETS int
#endif
/* do we have a (working) setsockopt call
*/
#if !defined(HAVE_SETSOCKOPT)
#define HAVE_SETSOCKOPT (defined(sun)||defined(PTX))
#endif
/* does this system have the ANSI strerror() function?
*/
#if !defined(HAVE_STRERROR)
#define HAVE_STRERROR (defined(IBMR2)||defined(ETA10)||defined(V386)||defined(SUN5)||defined(NEXT2)||defined(HPUX8)||defined(HPUX9)||defined(PTX)||defined(IRIX5))
#endif
#if ! HAVE_STRERROR
extern int errno;
extern char *sys_errlist[];
#define strerror(Me) (sys_errlist[Me])
#endif
#if !defined(HAVE_H_ERRLIST)
#define HAVE_H_ERRLIST (defined(SUN4)||defined(SUN3)||defined(FREEBSD)|defined(NETBSD)||defined(PTX)||defined(IRIX5))
#endif
#if HAVE_H_ERRLIST
extern int h_errno;
extern char *h_errlist[];
#define hstrerror(Me) (h_errlist[Me])
#else
#define hstrerror(Me) "host lookup error"
#endif
#if !defined(HAVE_RLIMIT)
#if (defined(SUN5)||defined(PTX4))
#define HAVE_RLIMIT 1
#else
#define HAVE_RLIMIT 0
#endif
#endif
/* that's all. just run
* make
* ./conserver -V
*/
/* communication constants
*/
#define OB_SUSP 'Z' /* suspended by server */
#define OB_DROP '.' /* dropped by server */
/* Due to C's poor man's macros the macro below would break if statements,
* What we want
* macro() { stuff }
* but the syntax gives us
* macro() { stuff };
*
* the extra semicolon breaks if statements!
* Of course, the one we use makes lint scream:
* macro() do { stuff } while (0)
*
* which is a statement and makes if statements safe
*/
#if defined(lint)
extern int shut_up_lint;
#else
#define shut_up_lint 0
#endif
/* this macro efficently outputs a constant string to a fd
* of course it doesn't check the write :-(
*/
#define CSTROUT(Mfd, Mstr) do { \
static char _ac[] = Mstr; \
write(Mfd, _ac, sizeof(_ac)-1); \
} while (shut_up_lint)
extern char *calloc(), *malloc(), *realloc();

View File

@ -1,6 +1,12 @@
/*
* $Id: readcfg.c,v 5.21 1998-12-14 11:20:15-08 bryan Exp $
* $Id: readcfg.c,v 5.23 1999-01-13 11:48:11-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright (c) 1990 The Ohio State University.
* All rights reserved.
*
@ -39,6 +45,7 @@
#include <pwd.h>
#include "cons.h"
#include "port.h"
#include "consent.h"
#include "client.h"
#include "group.h"

View File

@ -1,6 +1,12 @@
/*
* $Id: readcfg.h,v 5.6 1993-02-09 03:59:25-08 ldv Exp $
* $Id: readcfg.h,v 5.7 1998-12-17 17:21:24-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright 1992 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*

View File

@ -1 +1,9 @@
#define GNAC_VERSION "GNAC version 6.05"
/*
* $Id: version.h,v 1.7 1999-01-07 11:17:20-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
#define GNAC_VERSION "GNAC version 6.06"

View File

@ -1,81 +1,61 @@
# $Id: Make.host,v 5.10 94/07/26 11:06:26 ksb Exp $
# $Id: Makefile,v 1.7 1999-01-13 14:19:02-08 bryan Exp $
#
# Makefile for console client progran
#
# edit the ETC directory below to change where the console client
# is installed.
PROG= console
ETC= ${DESTDIR}/usr/local/etc
DOC= ${DESTDIR}/usr/local/man
PREFIX=/usr/local
BIN=${PREFIX}/bin
ETC=${PREFIX}/etc
MAN=${PREFIX}/man
MANSECT=8
INSTALL=/usr/ucb/install
I=/usr/include
S=/usr/include/sys
L=/usr/local/include
C=../conserver
P=
INCLUDE= -I$C
DEBUG=-O
CDEFS= -DSUN5
CDEFS=
CFLAGS= ${DEBUG} ${CDEFS} ${INCLUDE}
LIBS=-lsocket -lnsl
HDR=
ONEC= console.c
MAN= console.man
OTHER= README
SOURCE= Makefile ${OTHER} ${MAN} ${HDR} ${ONEC}
SRC= console.c
OBJ= console.o
all: ${PROG}
${PROG}:
${CC} -o $@ ${CFLAGS} ${ONEC} -lsocket -lnsl
${PROG}: ${OBJ}
${CC} -o $@ ${CFLAGS} ${OBJ} ${LIBS}
clean: FRC
rm -f Makefile.bak ${PROG} a.out *.o core errs lint.out tags
deinstall: ${MAN} ${DOC} FRC
install -R ${ETC}/${PROG}
mkcat -r${DOC} -D ${MAN}
depend: ${HDR} ${SRC} FRC
makedepend ${CDEFS} ${INCLUDE} ${SRC}
depend: ${HDR} ${ONEC} FRC
maketd -b ${CDEFS} ${INCLUDE} ${ONEC}
dirs: ${ETC}
distrib: FRC
distrib -c ${ETC}/${PROG}
dirs: ${BIN}
install: all dirs FRC
install -cs ${PROG} ${ETC}/${PROG}
${INSTALL} -cs ${PROG} ${BIN}/${PROG}
lint: ${HDR} ${ONEC} FRC
lint -h ${CDEFS} ${INCLUDE} ${ONEC}
${MAN}/man${MANSECT}:
${INSTALL} -d $@
mkcat: ${MAN} ${DOC} FRC
mkcat -r${DOC} ${MAN}
install.man: ${MAN}/man${MANSECT}
${INSTALL} -c console.man ${MAN}/man${MANSECT}/console.${MANSECT}
print: source FRC
lpr -J"${PROG} source" ${SOURCE}
lint: ${HDR} ${SRC} FRC
lint -h ${CDEFS} ${INCLUDE} ${SRC}
source: ${SOURCE}
tags: ${HDR} ${SRC}
ctags -t ${HDR} ${SRC}
spotless: clean
rcsclean ${SOURCE}
tags: ${HDR} ${ONEC}
ctags -t ${HDR} ${ONEC}
/ ${ETC}:
install -dr $@
${SOURCE}:
co -q $@
/ ${BIN}:
${INSTALL} -d $@
FRC:
# DO NOT DELETE THIS LINE - maketd DEPENDS ON IT
# DO NOT DELETE THIS LINE -- make depend depends on it.
console: $C/cons.h console.c
# *** Do not add anything here - It will go away. ***
console.o: ../conserver/cons.h ../conserver/port.h ../conserver/version.h

View File

@ -1,3 +1,11 @@
/*
* $Id: console.c,v 5.22 1999-01-13 11:48:38-08 bryan Exp $
*
* GNAC, Inc., 1998
*
* Maintainer/Enhancer: Bryan Stansell (bryan@gnac.com)
*/
/*
* Copyright (c) 1990 The Ohio State University.
* All rights reserved.
@ -31,6 +39,7 @@
#include <ctype.h>
#include "cons.h"
#include "port.h"
#include "version.h"
#if USE_STRINGS
@ -68,7 +77,7 @@ extern char *sys_errlist[];
#endif
static char rcsid[] =
"$Id: console.c,v 5.20 1998-11-20 16:53:02-08 bryan Exp $";
"$Id: console.c,v 5.22 1999-01-13 11:48:38-08 bryan Exp $";
static char *progname =
rcsid;
int fVerbose = 0, fReplay = 0, fRaw = 0;