mirror of
https://github.com/bstansell/conserver.git
synced 2024-12-18 20:37:56 +00:00
Imported from conserver-8.2.0.tar.gz
This commit is contained in:
parent
484806e667
commit
8534a21cef
16
CHANGES
16
CHANGES
@ -1,6 +1,20 @@
|
||||
CHANGES
|
||||
=======
|
||||
|
||||
version 8.2.0 (Apr 20, 2014):
|
||||
- added --with-trust-uds-cred which uses getsockopt() to fetch and
|
||||
trust the client uid, bypassing password lookups - patch by Anton
|
||||
Lundin <glance@acc.umu.se>
|
||||
- missing closedir() causing memory leak - patch by Anton Lundin
|
||||
<glance@acc.umu.se>
|
||||
- sending a break signal over IPMI was broken - based on patch by
|
||||
Alexander Y. Fomichev <git.user@gmail.com>
|
||||
- IPv6 support (marked as experimental at this point because it's
|
||||
untested (except by the author), there's a lack of documentation, and
|
||||
I'm hoping for non-getifaddrs() system support) - patch by Milos
|
||||
Vyletel <milos.vyletel@gmail.com>
|
||||
- no more K&R compiler support
|
||||
|
||||
version 8.1.20 (Apr 4, 2014):
|
||||
- IPMI serial over LAN support via FreeIPMI - based on patch by Anton
|
||||
D. Kachalov <mouse@yandex-team.ru>
|
||||
@ -938,5 +952,5 @@ before version 6.05:
|
||||
and enhancements of various types were applied.
|
||||
|
||||
#
|
||||
# $Id: CHANGES,v 1.239 2014/04/04 16:27:38 bryan Exp $
|
||||
# $Id: CHANGES,v 1.247 2014/04/21 04:47:37 bryan Exp $
|
||||
#
|
||||
|
17
INSTALL
17
INSTALL
@ -156,8 +156,9 @@ Detailed Instructions
|
||||
--with-port=PORT Specify port number [conserver]
|
||||
--with-base=PORT Base port for secondary channel [0]
|
||||
--with-master=MASTER Specify master server hostname [console]
|
||||
--with-cffile=CFFILE Specify config filename
|
||||
[SYSCONFDIR/conserver.cf]
|
||||
--with-ccffile=CFFILE Specify client config filename
|
||||
[SYSCONFDIR/console.cf]
|
||||
--with-cffile=CFFILE Specify config filename [SYSCONFDIR/conserver.cf]
|
||||
--with-pwdfile=PWDFILE Specify password filename
|
||||
[SYSCONFDIR/conserver.passwd]
|
||||
--with-logfile=LOGFILE Specify log filename [/var/log/conserver]
|
||||
@ -166,12 +167,22 @@ Detailed Instructions
|
||||
--with-timeout=TIMEOUT Specify connect() timeout in seconds [10]
|
||||
--with-trustrevdns Trust reverse DNS information
|
||||
--with-extmsgs Produce extended messages
|
||||
--with-rpath Use -R as well as -L for libraries
|
||||
--with-cycladests (deprecated - noop) Build for a Cyclades TS
|
||||
--with-uds[=DIR] Use Unix domain sockets for client/server
|
||||
communication [/tmp/conserver]
|
||||
--with-trust-uds-cred Trust UDS credentials obtained via socket
|
||||
--with-libwrap[=PATH] Compile in libwrap (tcp_wrappers) support
|
||||
--with-openssl[=PATH] Compile in OpenSSL support
|
||||
--with-req-server-cert Require server SSL certificate by client
|
||||
--with-gssapi[=PATH] Compile in GSS-API support
|
||||
--with-striprealm retry username without @REALM with gss-api
|
||||
authentication
|
||||
--with-freeipmi[=PATH] Compile in FreeIPMI support
|
||||
--with-dmalloc[=PATH] Compile in dmalloc support
|
||||
--with-pam Enable PAM support
|
||||
--with-ipv6 (experimental) Use IPv6 for client/server
|
||||
communication
|
||||
|
||||
Not surprisingly, some match the old conserver/cons.h items...here
|
||||
they are for reference:
|
||||
@ -278,5 +289,5 @@ Other Information And Gotchas
|
||||
|
||||
|
||||
#
|
||||
# $Id: INSTALL,v 1.39 2005/05/21 13:47:16 bryan Exp $
|
||||
# $Id: INSTALL,v 1.41 2014/04/20 06:45:07 bryan Exp $
|
||||
#
|
||||
|
@ -34,13 +34,13 @@
|
||||
* to change the /etc/security/audit_event line.
|
||||
*/
|
||||
|
||||
#define AUE_autologin 32900
|
||||
# define AUE_autologin 32900
|
||||
|
||||
#include <sys/unistd.h>
|
||||
#include <netdb.h>
|
||||
#include <bsm/audit.h>
|
||||
#include <bsm/libbsm.h>
|
||||
#include <libintl.h>
|
||||
# include <sys/unistd.h>
|
||||
# include <netdb.h>
|
||||
# include <bsm/audit.h>
|
||||
# include <bsm/libbsm.h>
|
||||
# include <libintl.h>
|
||||
#endif
|
||||
|
||||
#include <compat.h>
|
||||
@ -69,7 +69,7 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
char *rcsid = "$Id: autologin.c,v 1.27 2013/09/20 21:15:13 bryan Exp $";
|
||||
char *rcsid = "$Id: autologin.c,v 1.28 2014/04/20 06:45:07 bryan Exp $";
|
||||
#endif /* not lint */
|
||||
extern char *progname;
|
||||
gid_t awGrps[NGROUPS_MAX];
|
||||
@ -86,7 +86,7 @@ void make_utmp();
|
||||
void usage();
|
||||
|
||||
int
|
||||
Process()
|
||||
Process(void)
|
||||
{
|
||||
int iErrs = 0;
|
||||
int i, iNewGrp;
|
||||
@ -411,8 +411,7 @@ Process()
|
||||
|
||||
#ifndef HAVE_PUTENV
|
||||
int
|
||||
putenv(pcAssign)
|
||||
char *pcAssign;
|
||||
putenv(char *pcAssign)
|
||||
{
|
||||
register char *pcEq;
|
||||
|
||||
@ -427,8 +426,7 @@ putenv(pcAssign)
|
||||
#endif
|
||||
|
||||
int
|
||||
addgroup(pcGrp)
|
||||
char *pcGrp;
|
||||
addgroup(char *pcGrp)
|
||||
{
|
||||
struct group *grp;
|
||||
|
||||
@ -451,9 +449,7 @@ addgroup(pcGrp)
|
||||
/* install a utmp entry to show the use we know is here is here (ksb)
|
||||
*/
|
||||
void
|
||||
make_utmp(pclogin, pctty)
|
||||
char *pclogin;
|
||||
char *pctty;
|
||||
make_utmp(char *pclogin, char *pctty)
|
||||
{
|
||||
register int iFound, iPos;
|
||||
register int fdUtmp;
|
||||
@ -513,7 +509,7 @@ make_utmp(pclogin, pctty)
|
||||
(void)strncpy(utmp.ut_line, pcDev, sizeof(utmp.ut_line));
|
||||
}
|
||||
#else
|
||||
#ifdef HAVE_SETTTYENT
|
||||
# ifdef HAVE_SETTTYENT
|
||||
{
|
||||
register struct ttyent *ty;
|
||||
|
||||
@ -534,7 +530,7 @@ make_utmp(pclogin, pctty)
|
||||
(void)strncpy(utmp.ut_line, pcDev, sizeof(utmp.ut_line));
|
||||
(void)strncpy(utmp.ut_name, pclogin, sizeof(utmp.ut_name));
|
||||
(void)strncpy(utmp.ut_host, "(autologin)", sizeof(utmp.ut_host));
|
||||
#else
|
||||
# else
|
||||
/* look through /etc/utmp by hand (sigh)
|
||||
*/
|
||||
iFound = iPos = 0;
|
||||
@ -546,7 +542,7 @@ make_utmp(pclogin, pctty)
|
||||
iPos++;
|
||||
}
|
||||
(void)strncpy(utmp.ut_name, pclogin, sizeof(utmp.ut_name));
|
||||
#endif
|
||||
# endif
|
||||
#endif
|
||||
utmp.ut_time = time((time_t *)0);
|
||||
|
||||
@ -562,7 +558,7 @@ make_utmp(pclogin, pctty)
|
||||
|
||||
|
||||
void
|
||||
usage()
|
||||
usage(void)
|
||||
{
|
||||
char *u_pch;
|
||||
int u_loop;
|
||||
|
@ -20,9 +20,7 @@ static int
|
||||
* does +arg if you give a last argument of "+", else give (char *)0
|
||||
*/
|
||||
static int
|
||||
getopt(nargc, nargv, ostr)
|
||||
int nargc;
|
||||
char **nargv, *ostr;
|
||||
getopt(int nargc, char **nargv, char *ostr)
|
||||
{
|
||||
register char *oli; /* option letter list index */
|
||||
static char EMSG[] = ""; /* just a null place */
|
||||
@ -84,7 +82,7 @@ getopt(nargc, nargv, ostr)
|
||||
|
||||
char
|
||||
*progname =
|
||||
"$Id: main.c,v 1.2 2013/09/20 21:15:13 bryan Exp $", *au_terse[] = {
|
||||
"$Id: main.c,v 1.3 2014/04/20 06:45:07 bryan Exp $", *au_terse[] = {
|
||||
" [-u] [-c cmd] [-e env=value] [-g group] [-l login] [-t tty]",
|
||||
" -h",
|
||||
" -V",
|
||||
@ -104,18 +102,16 @@ int
|
||||
fMakeUtmp = 1, iErrs = 0;
|
||||
|
||||
#ifndef u_terse
|
||||
#define u_terse (au_terse[0])
|
||||
# define u_terse (au_terse[0])
|
||||
#endif
|
||||
|
||||
static char *rcsid = "$Id: main.c,v 1.2 2013/09/20 21:15:13 bryan Exp $";
|
||||
static char *rcsid = "$Id: main.c,v 1.3 2014/04/20 06:45:07 bryan Exp $";
|
||||
|
||||
/*
|
||||
* parser
|
||||
*/
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
static char
|
||||
sbOpt[] = "c:e:g:hl:t:uV", *u_pch = (char *)0;
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
extern char *progname, *au_terse[4], *u_help[9];
|
||||
#ifndef u_terse
|
||||
#define u_terse (au_terse[0])
|
||||
# define u_terse (au_terse[0])
|
||||
#endif
|
||||
extern int main();
|
||||
extern int fMakeUtmp, iErrs;
|
||||
|
96
compat.h
96
compat.h
@ -49,15 +49,15 @@
|
||||
/* For legacy compile-time setting of the port...
|
||||
*/
|
||||
#if ! defined(DEFPORT)
|
||||
# if defined(SERVICENAME)
|
||||
# define DEFPORT SERVICENAME
|
||||
# if defined(SERVICENAME)
|
||||
# define DEFPORT SERVICENAME
|
||||
# else
|
||||
# if defined(PORTNUMBER)
|
||||
# define DEFPORT PORTNUMBER
|
||||
# else
|
||||
# if defined(PORTNUMBER)
|
||||
# define DEFPORT PORTNUMBER
|
||||
# else
|
||||
# define DEFPORT "conserver"
|
||||
# endif
|
||||
# define DEFPORT "conserver"
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if STDC_HEADERS
|
||||
@ -129,7 +129,7 @@ typedef long fd_set;
|
||||
#endif
|
||||
|
||||
#if HAVE_TYPES_H
|
||||
#include <sys/types.h>
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_WAIT_H
|
||||
@ -138,30 +138,30 @@ typedef long fd_set;
|
||||
#define LO(s) ((unsigned)((s) & 0377))
|
||||
#define HI(s) ((unsigned)(((s) >> 8) & 0377))
|
||||
#if !defined(WIFEXITED)
|
||||
#define WIFEXITED(s) (LO(s)==0)
|
||||
# define WIFEXITED(s) (LO(s)==0)
|
||||
#endif
|
||||
#if !defined(WEXITSTATUS)
|
||||
#define WEXITSTATUS(s) HI(s)
|
||||
# define WEXITSTATUS(s) HI(s)
|
||||
#endif
|
||||
#if !defined(WIFSIGNALED)
|
||||
#define WIFSIGNALED(s) ((LO(s)>0)&&(HI(s)==0))
|
||||
# define WIFSIGNALED(s) ((LO(s)>0)&&(HI(s)==0))
|
||||
#endif
|
||||
#if !defined(WTERMSIG)
|
||||
#define WTERMSIG(s) (LO(s)&0177)
|
||||
# define WTERMSIG(s) (LO(s)&0177)
|
||||
#endif
|
||||
#if !defined(WIFSTOPPED)
|
||||
#define WIFSTOPPED(s) ((LO(s)==0177)&&(HI(s)!=0))
|
||||
# define WIFSTOPPED(s) ((LO(s)==0177)&&(HI(s)!=0))
|
||||
#endif
|
||||
#if !defined(WSTOPSIG)
|
||||
#define WSTOPSIG(s) HI(s)
|
||||
# define WSTOPSIG(s) HI(s)
|
||||
#endif
|
||||
|
||||
#if HAVE_SYSEXITS_H
|
||||
#include <sysexits.h>
|
||||
# include <sysexits.h>
|
||||
#else
|
||||
#define EX_OK 0
|
||||
#define EX_UNAVAILABLE 69
|
||||
#define EX_TEMPFAIL 75
|
||||
# define EX_OK 0
|
||||
# define EX_UNAVAILABLE 69
|
||||
# define EX_TEMPFAIL 75
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
@ -235,19 +235,19 @@ extern char *h_errlist[];
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_USERSEC_H
|
||||
#include <usersec.h>
|
||||
# include <usersec.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PTY_H
|
||||
#include <pty.h>
|
||||
# include <pty.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBUTIL_H
|
||||
#include <libutil.h>
|
||||
# include <libutil.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UTIL_H
|
||||
#include <util.h>
|
||||
# include <util.h>
|
||||
#endif
|
||||
|
||||
|
||||
@ -280,58 +280,66 @@ typedef int socklen_t;
|
||||
* as legacy definitions.
|
||||
*/
|
||||
#ifndef IUCLC
|
||||
#define IUCLC 0
|
||||
# define IUCLC 0
|
||||
#endif
|
||||
#ifndef OLCUC
|
||||
#define OLCUC 0
|
||||
# define OLCUC 0
|
||||
#endif
|
||||
#ifndef XCASE
|
||||
#define XCASE 0
|
||||
# define XCASE 0
|
||||
#endif
|
||||
/* Some systems don't have OFILL or *DLY. */
|
||||
#ifndef OFILL
|
||||
#define OFILL 0
|
||||
# define OFILL 0
|
||||
#endif
|
||||
#ifndef NLDLY
|
||||
#define NLDLY 0
|
||||
# define NLDLY 0
|
||||
#endif
|
||||
#ifndef CRDLY
|
||||
#define CRDLY 0
|
||||
# define CRDLY 0
|
||||
#endif
|
||||
#ifndef TABDLY
|
||||
#define TABDLY 0
|
||||
# define TABDLY 0
|
||||
#endif
|
||||
#ifndef BSDLY
|
||||
#define BSDLY 0
|
||||
# define BSDLY 0
|
||||
#endif
|
||||
#ifndef ONOCR
|
||||
#define ONOCR 0
|
||||
# define ONOCR 0
|
||||
#endif
|
||||
#ifndef ONLRET
|
||||
#define ONLRET 0
|
||||
# define ONLRET 0
|
||||
#endif
|
||||
|
||||
#ifndef SEEK_SET
|
||||
#define SEEK_SET L_SET
|
||||
#endif
|
||||
|
||||
#ifndef PARAMS
|
||||
# if PROTOTYPES
|
||||
# define PARAMS(protos) protos
|
||||
# else /* no PROTOTYPES */
|
||||
# define PARAMS(protos) ()
|
||||
# endif /* no PROTOTYPES */
|
||||
# define SEEK_SET L_SET
|
||||
#endif
|
||||
|
||||
/* setup a conditional debugging line */
|
||||
#ifndef CONDDEBUG
|
||||
#define CONDDEBUG(line) if (fDebug) {debugFileName=__FILE__; debugLineNo=__LINE__; Debug line;}
|
||||
# define CONDDEBUG(line) if (fDebug) {debugFileName=__FILE__; debugLineNo=__LINE__; Debug line;}
|
||||
#endif
|
||||
|
||||
#if HAVE_DMALLOC
|
||||
#include <dmalloc.h>
|
||||
# include <dmalloc.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_FREEIPMI
|
||||
#include <ipmiconsole.h>
|
||||
# include <ipmiconsole.h>
|
||||
#endif
|
||||
|
||||
#ifndef INADDR_STYPE
|
||||
# if USE_IPV6
|
||||
# define INADDR_STYPE struct sockaddr_storage
|
||||
# else
|
||||
# define INADDR_STYPE struct in_addr
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef SOCKADDR_STYPE
|
||||
# if USE_IPV6
|
||||
# define SOCKADDR_STYPE struct sockaddr_storage
|
||||
# else
|
||||
# define SOCKADDR_STYPE struct sockaddr_in
|
||||
# endif
|
||||
#endif
|
||||
|
21
config.h.in
21
config.h.in
@ -330,9 +330,6 @@
|
||||
/* pidfile to write to */
|
||||
#undef PIDFILE
|
||||
|
||||
/* Define to 1 if the C compiler supports function prototypes. */
|
||||
#undef PROTOTYPES
|
||||
|
||||
/* Defined if client requires server SSL certificate */
|
||||
#undef REQ_SERVER_CERT
|
||||
|
||||
@ -351,12 +348,27 @@
|
||||
/* Defined if we trust reverse DNS */
|
||||
#undef TRUST_REVERSE_DNS
|
||||
|
||||
/* Defined if we trust credentials from UDS client */
|
||||
#undef TRUST_UDS_CRED
|
||||
|
||||
/* Directory for Unix domain sockets */
|
||||
#undef UDSDIR
|
||||
|
||||
/* Defined to UDS credential socket option */
|
||||
#undef UDS_CRED_SO
|
||||
|
||||
/* Defined to UDS credential structure name */
|
||||
#undef UDS_CRED_STYPE
|
||||
|
||||
/* Defined to UDS credential structure uid field */
|
||||
#undef UDS_CRED_UID
|
||||
|
||||
/* Defined if we produce extended messages */
|
||||
#undef USE_EXTENDED_MESSAGES
|
||||
|
||||
/* Defined if building with IPv6 support */
|
||||
#undef USE_IPV6
|
||||
|
||||
/* use tcp_wrappers libwrap */
|
||||
#undef USE_LIBWRAP
|
||||
|
||||
@ -395,9 +407,6 @@
|
||||
/* 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
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
|
243
configure
vendored
243
configure
vendored
@ -682,9 +682,10 @@ with_maxmemb
|
||||
with_timeout
|
||||
with_trustrevdns
|
||||
with_extmsgs
|
||||
with_uds
|
||||
with_rpath
|
||||
with_cycladests
|
||||
with_uds
|
||||
with_trust_uds_cred
|
||||
with_libwrap
|
||||
with_openssl
|
||||
with_req_server_cert
|
||||
@ -693,6 +694,7 @@ with_striprealm
|
||||
with_freeipmi
|
||||
with_dmalloc
|
||||
with_pam
|
||||
with_ipv6
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
@ -1329,10 +1331,11 @@ Optional Packages:
|
||||
--with-timeout=TIMEOUT Specify connect() timeout in seconds [10]
|
||||
--with-trustrevdns Trust reverse DNS information
|
||||
--with-extmsgs Produce extended messages
|
||||
--with-rpath Use -R as well as -L for libraries
|
||||
--with-cycladests (deprecated - noop) Build for a Cyclades TS
|
||||
--with-uds[=DIR] Use Unix domain sockets for client/server
|
||||
communication [/tmp/conserver]
|
||||
--with-rpath Use -R as well as -L for libraries
|
||||
--with-cycladests Build for a Cyclades TS
|
||||
--with-trust-uds-cred Trust UDS credentials obtained via socket
|
||||
--with-libwrap[=PATH] Compile in libwrap (tcp_wrappers) support
|
||||
--with-openssl[=PATH] Compile in OpenSSL support
|
||||
--with-req-server-cert Require server SSL certificate by client
|
||||
@ -1342,6 +1345,8 @@ Optional Packages:
|
||||
--with-freeipmi[=PATH] Compile in FreeIPMI support
|
||||
--with-dmalloc[=PATH] Compile in dmalloc support
|
||||
--with-pam Enable PAM support
|
||||
--with-ipv6 (experimental) Use IPv6 for client/server
|
||||
communication
|
||||
|
||||
Some influential environment variables:
|
||||
CC C compiler command
|
||||
@ -2604,52 +2609,6 @@ $as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use Unix domain sockets" >&5
|
||||
$as_echo_n "checking whether to use Unix domain sockets... " >&6; }
|
||||
cons_with_uds="NO"
|
||||
|
||||
# Check whether --with-uds was given.
|
||||
if test "${with_uds+set}" = set; then :
|
||||
withval=$with_uds; case "$withval" in
|
||||
yes)
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define UDSDIR "/tmp/conserver"
|
||||
_ACEOF
|
||||
|
||||
$as_echo "#define USE_UNIX_DOMAIN_SOCKETS 1" >>confdefs.h
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: /tmp/conserver" >&5
|
||||
$as_echo "/tmp/conserver" >&6; }
|
||||
cons_with_uds="YES"
|
||||
;;
|
||||
no)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
;;
|
||||
*)
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define UDSDIR "$withval"
|
||||
_ACEOF
|
||||
|
||||
$as_echo "#define USE_UNIX_DOMAIN_SOCKETS 1" >>confdefs.h
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: '$withval'" >&5
|
||||
$as_echo "'$withval'" >&6; }
|
||||
cons_with_uds="YES"
|
||||
if expr "$withval" : '/' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
echo "*** WARNING *** you may have better success using a fully-qualified path"
|
||||
echo "*** WARNING *** instead of '$withval'"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
use_dash_r=no
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use -R paths as well as -L" >&5
|
||||
$as_echo_n "checking whether to use -R paths as well as -L... " >&6; }
|
||||
@ -4192,22 +4151,6 @@ $as_echo "#define const /**/" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5
|
||||
$as_echo_n "checking for function prototypes... " >&6; }
|
||||
if test "$ac_cv_prog_cc_c89" != no; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
$as_echo "#define PROTOTYPES 1" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define __PROTOTYPES 1" >>confdefs.h
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
|
||||
@ -4995,6 +4938,149 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use Unix domain sockets" >&5
|
||||
$as_echo_n "checking whether to use Unix domain sockets... " >&6; }
|
||||
cons_with_uds="NO"
|
||||
|
||||
# Check whether --with-uds was given.
|
||||
if test "${with_uds+set}" = set; then :
|
||||
withval=$with_uds; case "$withval" in
|
||||
yes)
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define UDSDIR "/tmp/conserver"
|
||||
_ACEOF
|
||||
|
||||
$as_echo "#define USE_UNIX_DOMAIN_SOCKETS 1" >>confdefs.h
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: /tmp/conserver" >&5
|
||||
$as_echo "/tmp/conserver" >&6; }
|
||||
cons_with_uds="YES"
|
||||
;;
|
||||
no)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
;;
|
||||
*)
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define UDSDIR "$withval"
|
||||
_ACEOF
|
||||
|
||||
$as_echo "#define USE_UNIX_DOMAIN_SOCKETS 1" >>confdefs.h
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: '$withval'" >&5
|
||||
$as_echo "'$withval'" >&6; }
|
||||
cons_with_uds="YES"
|
||||
if expr "$withval" : '/' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
echo "*** WARNING *** you may have better success using a fully-qualified path"
|
||||
echo "*** WARNING *** instead of '$withval'"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if test $cons_with_uds = YES; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to trust UDS credentials" >&5
|
||||
$as_echo_n "checking whether to trust UDS credentials... " >&6; }
|
||||
|
||||
# Check whether --with-trust-uds-cred was given.
|
||||
if test "${with_trust_uds_cred+set}" = set; then :
|
||||
withval=$with_trust_uds_cred; case "$withval" in
|
||||
yes)
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
struct ucred u;
|
||||
u.uid = 0;
|
||||
#if !defined(SO_PEERCRED)
|
||||
#error "no SO_PEERCRED defined"
|
||||
#endif
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
$as_echo "#define UDS_CRED_STYPE ucred" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define UDS_CRED_UID uid" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define UDS_CRED_SO SO_PEERCRED" >>confdefs.h
|
||||
|
||||
$as_echo "#define TRUST_UDS_CRED 1" >>confdefs.h
|
||||
|
||||
else
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
struct peercred_struct u;
|
||||
u.euid = 0;
|
||||
#if !defined(SO_PEERID)
|
||||
#error "no SO_PEERID defined"
|
||||
#endif
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
$as_echo "#define UDS_CRED_STYPE peercred_struct" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define UDS_CRED_UID euid" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define UDS_CRED_SO SO_PEERID" >>confdefs.h
|
||||
|
||||
$as_echo "#define TRUST_UDS_CRED 1" >>confdefs.h
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
;;
|
||||
*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
;;
|
||||
esac
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
cons_with_libwrap="NO"
|
||||
|
||||
# Check whether --with-libwrap was given.
|
||||
@ -5574,6 +5660,32 @@ $as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
cons_with_ipv6="NO"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support IPv6" >&5
|
||||
$as_echo_n "checking whether to support IPv6... " >&6; }
|
||||
|
||||
# Check whether --with-ipv6 was given.
|
||||
if test "${with_ipv6+set}" = set; then :
|
||||
withval=$with_ipv6; case "$withval" in
|
||||
yes)
|
||||
$as_echo "#define USE_IPV6 1" >>confdefs.h
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
cons_with_ipv6="YES"
|
||||
;;
|
||||
*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
;;
|
||||
esac
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
|
||||
for ac_header in pty.h libutil.h util.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
@ -7065,6 +7177,7 @@ 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 " IPv6 support (--with-ipv6) : $cons_with_ipv6"
|
||||
echo ""
|
||||
echo "=============================================================="
|
||||
|
||||
|
127
configure.in
127
configure.in
@ -22,9 +22,11 @@ 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])
|
||||
AH_TEMPLATE([USE_EXTENDED_MESSAGES],[Defined if we produce extended messages])
|
||||
AH_TEMPLATE([USE_UNIX_DOMAIN_SOCKETS],[Defined if we use Unix domain sockets])
|
||||
AH_TEMPLATE([USE_IPV6], [Defined if building with IPv6 support])
|
||||
AH_TEMPLATE([UDSDIR], [Directory for Unix domain sockets])
|
||||
AH_TEMPLATE([FOR_CYCLADES_TS], [Defined if building for a Cyclades TS])
|
||||
AH_TEMPLATE([REQ_SERVER_CERT], [Defined if client requires server SSL certificate])
|
||||
AH_TEMPLATE([TRUST_UDS_CRED], [Defined if we trust credentials from UDS client])
|
||||
|
||||
dnl ### Normal initialization. ######################################
|
||||
AC_INIT
|
||||
@ -258,35 +260,6 @@ AC_ARG_WITH(extmsgs,
|
||||
;;
|
||||
esac],[AC_MSG_RESULT(no)])
|
||||
|
||||
AC_MSG_CHECKING(whether to use Unix domain sockets)
|
||||
cons_with_uds="NO"
|
||||
AC_ARG_WITH(uds,
|
||||
AS_HELP_STRING([--with-uds@<:@=DIR@:>@ ],
|
||||
[Use Unix domain sockets for client/server communication @<:@/tmp/conserver@:>@]),
|
||||
[case "$withval" in
|
||||
yes)
|
||||
AC_DEFINE_UNQUOTED(UDSDIR, "/tmp/conserver")
|
||||
AC_DEFINE(USE_UNIX_DOMAIN_SOCKETS)
|
||||
AC_MSG_RESULT([/tmp/conserver])
|
||||
cons_with_uds="YES"
|
||||
;;
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE_UNQUOTED(UDSDIR, "$withval")
|
||||
AC_DEFINE(USE_UNIX_DOMAIN_SOCKETS)
|
||||
AC_MSG_RESULT('$withval')
|
||||
cons_with_uds="YES"
|
||||
if expr "$withval" : '/' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
echo "*** WARNING *** you may have better success using a fully-qualified path"
|
||||
echo "*** WARNING *** instead of '$withval'"
|
||||
fi
|
||||
;;
|
||||
esac],[AC_MSG_RESULT(no)])
|
||||
|
||||
use_dash_r=no
|
||||
AC_MSG_CHECKING(whether to use -R paths as well as -L)
|
||||
AC_ARG_WITH(rpath,
|
||||
@ -304,7 +277,7 @@ AC_ARG_WITH(rpath,
|
||||
|
||||
AC_MSG_CHECKING(whether we are building for a Cyclades TS)
|
||||
AC_ARG_WITH(cycladests,
|
||||
AS_HELP_STRING([--with-cycladests],[Build for a Cyclades TS]),
|
||||
AS_HELP_STRING([--with-cycladests],[(deprecated - noop) Build for a Cyclades TS]),
|
||||
[case "$withval" in
|
||||
yes)
|
||||
AC_DEFINE(FOR_CYCLADES_TS)
|
||||
@ -325,7 +298,6 @@ AC_PROG_MAKE_SET
|
||||
dnl ### Compiler characteristics. ##################################
|
||||
AC_AIX
|
||||
AC_C_CONST
|
||||
AC_C_PROTOTYPES
|
||||
|
||||
dnl AC_CHECK_SIZEOF(long)
|
||||
dnl if test "$ac_cv_sizeof_long" -gt 4; then
|
||||
@ -402,6 +374,81 @@ AC_SEARCH_LIBS(crypt,crypt)
|
||||
AC_SUBST(CONSLIBS)
|
||||
AC_SUBST(CONSCPPFLAGS)
|
||||
AC_SUBST(CONSLDFLAGS)
|
||||
|
||||
AC_MSG_CHECKING(whether to use Unix domain sockets)
|
||||
cons_with_uds="NO"
|
||||
AC_ARG_WITH(uds,
|
||||
AS_HELP_STRING([--with-uds@<:@=DIR@:>@ ],
|
||||
[Use Unix domain sockets for client/server communication @<:@/tmp/conserver@:>@]),
|
||||
[case "$withval" in
|
||||
yes)
|
||||
AC_DEFINE_UNQUOTED(UDSDIR, "/tmp/conserver")
|
||||
AC_DEFINE(USE_UNIX_DOMAIN_SOCKETS)
|
||||
AC_MSG_RESULT([/tmp/conserver])
|
||||
cons_with_uds="YES"
|
||||
;;
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE_UNQUOTED(UDSDIR, "$withval")
|
||||
AC_DEFINE(USE_UNIX_DOMAIN_SOCKETS)
|
||||
AC_MSG_RESULT('$withval')
|
||||
cons_with_uds="YES"
|
||||
if expr "$withval" : '/' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
echo "*** WARNING *** you may have better success using a fully-qualified path"
|
||||
echo "*** WARNING *** instead of '$withval'"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if test $cons_with_uds = YES; then
|
||||
AC_MSG_CHECKING(whether to trust UDS credentials)
|
||||
AC_ARG_WITH(trust-uds-cred,
|
||||
AS_HELP_STRING([--with-trust-uds-cred],[Trust UDS credentials obtained via socket]),
|
||||
[case "$withval" in
|
||||
yes)
|
||||
AC_TRY_COMPILE([#include <sys/types.h>
|
||||
#include <sys/socket.h>],
|
||||
[
|
||||
struct ucred u;
|
||||
u.uid = 0;
|
||||
#if !defined(SO_PEERCRED)
|
||||
#error "no SO_PEERCRED defined"
|
||||
#endif
|
||||
],
|
||||
[AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(UDS_CRED_STYPE, ucred, [Defined to UDS credential structure name])
|
||||
AC_DEFINE(UDS_CRED_UID, uid, [Defined to UDS credential structure uid field])
|
||||
AC_DEFINE(UDS_CRED_SO, SO_PEERCRED, [Defined to UDS credential socket option])
|
||||
AC_DEFINE(TRUST_UDS_CRED)],
|
||||
[
|
||||
AC_TRY_COMPILE([#include <sys/types.h>
|
||||
#include <sys/socket.h>],
|
||||
[
|
||||
struct peercred_struct u;
|
||||
u.euid = 0;
|
||||
#if !defined(SO_PEERID)
|
||||
#error "no SO_PEERID defined"
|
||||
#endif
|
||||
],
|
||||
[AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(UDS_CRED_STYPE, peercred_struct, [Defined to UDS credential structure name])
|
||||
AC_DEFINE(UDS_CRED_UID, euid, [Defined to UDS credential structure uid field])
|
||||
AC_DEFINE(UDS_CRED_SO, SO_PEERID, [Defined to UDS credential socket option])
|
||||
AC_DEFINE(TRUST_UDS_CRED)],
|
||||
[AC_MSG_RESULT(no)])
|
||||
])
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
esac],[AC_MSG_RESULT(no)])
|
||||
fi
|
||||
],[AC_MSG_RESULT(no)])
|
||||
|
||||
cons_with_libwrap="NO"
|
||||
AC_ARG_WITH(libwrap,
|
||||
AS_HELP_STRING([--with-libwrap@<:@=PATH@:>@],
|
||||
@ -749,6 +796,23 @@ AC_ARG_WITH(pam,
|
||||
AC_MSG_RESULT(no)
|
||||
fi],[AC_MSG_RESULT(no)])
|
||||
|
||||
cons_with_ipv6="NO"
|
||||
AC_MSG_CHECKING(whether to support IPv6)
|
||||
AC_ARG_WITH(ipv6,
|
||||
AS_HELP_STRING([--with-ipv6],
|
||||
[(experimental) Use IPv6 for client/server communication]),
|
||||
[case "$withval" in
|
||||
yes)
|
||||
AC_DEFINE(USE_IPV6)
|
||||
AC_MSG_RESULT(yes)
|
||||
cons_with_ipv6="YES"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
esac],[AC_MSG_RESULT(no)])
|
||||
|
||||
|
||||
dnl Checks for pty allocation...
|
||||
dnl According to the xemacs distribution:
|
||||
dnl getpt() is the preferred pty allocation method on glibc systems.
|
||||
@ -796,6 +860,7 @@ 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 " IPv6 support (--with-ipv6) : $cons_with_ipv6"
|
||||
echo ""
|
||||
echo "=============================================================="
|
||||
]
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $Id: conserver.cf.man,v 1.85 2014/04/04 16:17:45 bryan Exp $
|
||||
.TH CONSERVER.CF 5 "2014/04/04" "conserver-8.1.20" "conserver"
|
||||
.TH CONSERVER.CF 5 "2014/04/04" "conserver-8.2.0" "conserver"
|
||||
.SH NAME
|
||||
conserver.cf \- console configuration file for
|
||||
.BR conserver (8)
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $Id: conserver.passwd.man,v 1.10 2004/01/08 16:12:33 bryan Exp $
|
||||
.TH CONSERVER.PASSWD 5 "2004/01/08" "conserver-8.1.20" "conserver"
|
||||
.TH CONSERVER.PASSWD 5 "2004/01/08" "conserver-8.2.0" "conserver"
|
||||
.SH NAME
|
||||
conserver.passwd \- user access information for
|
||||
.BR conserver (8)
|
||||
|
@ -177,8 +177,8 @@ body {
|
||||
|
||||
<H3>Downloading</H3>
|
||||
|
||||
<P>The current version, released on Apr 4, 2014, is
|
||||
<A href="8.1.20.tar.gz">8.1.20.tar.gz</A>. See the <A href=
|
||||
<P>The current version, released on Apr 20, 2014, is
|
||||
<A href="8.2.0.tar.gz">8.2.0.tar.gz</A>. See the <A href=
|
||||
"CHANGES">CHANGES</A> file for information on the latest
|
||||
updates.</P>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: access.c,v 5.73 2004/05/23 16:44:25 bryan Exp $
|
||||
* $Id: access.c,v 5.74 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -44,7 +44,14 @@
|
||||
#include <readcfg.h>
|
||||
#include <main.h>
|
||||
|
||||
#if USE_IPV6
|
||||
# include <net/if.h>
|
||||
# include <ifaddrs.h>
|
||||
# include <sys/socket.h>
|
||||
# include <netdb.h>
|
||||
#endif
|
||||
|
||||
#if !USE_IPV6
|
||||
/* Compare an Internet address (IPv4 expected), with an address pattern
|
||||
* passed as a character string representing an address in the Internet
|
||||
* standard `.' notation, optionally followed by a slash and an integer
|
||||
@ -58,20 +65,14 @@
|
||||
* Returns 0 if the addresses match, else returns 1.
|
||||
*/
|
||||
int
|
||||
#if PROTOTYPES
|
||||
AddrCmp(struct in_addr *addr, char *pattern)
|
||||
#else
|
||||
AddrCmp(addr, pattern)
|
||||
struct in_addr *addr;
|
||||
char *pattern;
|
||||
#endif
|
||||
{
|
||||
in_addr_t hostaddr, pattern_addr, netmask;
|
||||
char *p, *slash_posn;
|
||||
static STRING *buf = (STRING *)0;
|
||||
#if HAVE_INET_ATON
|
||||
# if HAVE_INET_ATON
|
||||
struct in_addr inetaddr;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
if (buf == (STRING *)0)
|
||||
buf = AllocString();
|
||||
@ -84,15 +85,15 @@ AddrCmp(addr, pattern)
|
||||
} else
|
||||
p = pattern;
|
||||
|
||||
#if HAVE_INET_ATON
|
||||
# if HAVE_INET_ATON
|
||||
if (inet_aton(p, &inetaddr) == 0)
|
||||
return 1;
|
||||
pattern_addr = inetaddr.s_addr;
|
||||
#else
|
||||
# else
|
||||
pattern_addr = inet_addr(p);
|
||||
if (pattern_addr == (in_addr_t) (-1))
|
||||
return 1; /* malformed address */
|
||||
#endif
|
||||
# endif
|
||||
|
||||
if (slash_posn) {
|
||||
/* convert explicit netmask */
|
||||
@ -121,33 +122,70 @@ AddrCmp(addr, pattern)
|
||||
pattern_addr & netmask, pattern_addr, netmask));
|
||||
return (hostaddr & netmask) != (pattern_addr & netmask);
|
||||
}
|
||||
#endif /* USE_IPV6 */
|
||||
|
||||
/* return the access type for a given host entry (ksb)
|
||||
*/
|
||||
char
|
||||
#if PROTOTYPES
|
||||
AccType(struct in_addr *addr, char **peername)
|
||||
#else
|
||||
AccType(addr, peername)
|
||||
struct in_addr *addr;
|
||||
char **peername;
|
||||
#endif
|
||||
AccType(INADDR_STYPE *addr, char **peername)
|
||||
{
|
||||
ACCESS *pACtmp;
|
||||
socklen_t so;
|
||||
char ret;
|
||||
#if USE_IPV6
|
||||
int error;
|
||||
char host[NI_MAXHOST];
|
||||
char ipaddr[NI_MAXHOST];
|
||||
#else
|
||||
struct hostent *he = (struct hostent *)0;
|
||||
int a;
|
||||
char ret;
|
||||
#if TRUST_REVERSE_DNS
|
||||
# if TRUST_REVERSE_DNS
|
||||
char **revNames = (char **)0;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
CONDDEBUG((1, "AccType(): ip=%s", inet_ntoa(*addr)));
|
||||
#endif /* USE_IPV6 */
|
||||
|
||||
ret = config->defaultaccess;
|
||||
so = sizeof(*addr);
|
||||
|
||||
#if TRUST_REVERSE_DNS
|
||||
#if USE_IPV6
|
||||
error =
|
||||
getnameinfo((struct sockaddr *)addr, so, ipaddr, sizeof(ipaddr),
|
||||
NULL, 0, NI_NUMERICHOST);
|
||||
if (error) {
|
||||
Error("AccType(): getnameinfo failed: %s", gai_strerror(error));
|
||||
goto common_ret;
|
||||
}
|
||||
CONDDEBUG((1, "AccType(): ip=%s", ipaddr));
|
||||
|
||||
error =
|
||||
getnameinfo((struct sockaddr *)addr, so, host, sizeof(host), NULL,
|
||||
0, 0);
|
||||
if (!error)
|
||||
CONDDEBUG((1, "AccType(): host=%s", host));
|
||||
|
||||
for (pACtmp = pACList; pACtmp != (ACCESS *)0; pACtmp = pACtmp->pACnext) {
|
||||
CONDDEBUG((1, "AccType(): who=%s, trust=%c", pACtmp->pcwho,
|
||||
pACtmp->ctrust));
|
||||
|
||||
if (strstr(ipaddr, pACtmp->pcwho) != NULL) {
|
||||
CONDDEBUG((1, "AccType(): match for ip=%s", ipaddr));
|
||||
ret = pACtmp->ctrust;
|
||||
goto common_ret;
|
||||
}
|
||||
|
||||
if (!error && strstr(host, pACtmp->pcwho) != NULL) {
|
||||
CONDDEBUG((1, "AccType(): match for host=%s", host));
|
||||
ret = pACtmp->ctrust;
|
||||
goto common_ret;
|
||||
}
|
||||
}
|
||||
common_ret:
|
||||
if (config->loghostnames == FLAGTRUE && !error)
|
||||
*peername = StrDup(host);
|
||||
#else
|
||||
# if TRUST_REVERSE_DNS
|
||||
/* if we trust reverse dns, we get the names associated with
|
||||
* the address we're checking and then check each of those
|
||||
* against the access list entries (below).
|
||||
@ -177,7 +215,7 @@ AccType(addr, peername)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
|
||||
for (pACtmp = pACList; pACtmp != (ACCESS *)0; pACtmp = pACtmp->pACnext) {
|
||||
CONDDEBUG((1, "AccType(): who=%s, trust=%c", pACtmp->pcwho,
|
||||
@ -203,20 +241,20 @@ AccType(addr, peername)
|
||||
inet_ntoa(*(struct in_addr *)
|
||||
(he->h_addr_list[a]))));
|
||||
if (
|
||||
#if HAVE_MEMCMP
|
||||
# if HAVE_MEMCMP
|
||||
memcmp(&(addr->s_addr), he->h_addr_list[a],
|
||||
he->h_length)
|
||||
#else
|
||||
# else
|
||||
bcmp(&(addr->s_addr), he->h_addr_list[a],
|
||||
he->h_length)
|
||||
#endif
|
||||
# endif
|
||||
== 0) {
|
||||
ret = pACtmp->ctrust;
|
||||
goto common_ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
#if TRUST_REVERSE_DNS
|
||||
# if TRUST_REVERSE_DNS
|
||||
/* we chop bits off client names so that we can put domain
|
||||
* names in access lists or even top-level domains.
|
||||
* allowed conserver.com, net;
|
||||
@ -245,43 +283,49 @@ AccType(addr, peername)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
|
||||
common_ret:
|
||||
if (config->loghostnames == FLAGTRUE && peername != (char **)0) {
|
||||
#if TRUST_REVERSE_DNS
|
||||
# if TRUST_REVERSE_DNS
|
||||
if (revNames != (char **)0 && revNames[0] != (char *)0)
|
||||
*peername = StrDup(revNames[0]);
|
||||
#else
|
||||
# else
|
||||
if ((he =
|
||||
gethostbyaddr((char *)addr, so,
|
||||
AF_INET)) != (struct hostent *)0) {
|
||||
*peername = StrDup(he->h_name);
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
#if TRUST_REVERSE_DNS
|
||||
# if TRUST_REVERSE_DNS
|
||||
common_ret2:
|
||||
if (revNames != (char **)0) {
|
||||
for (a = 0; revNames[a] != (char *)0; a++)
|
||||
free(revNames[a]);
|
||||
free(revNames);
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
#endif /* USE_IPV6 */
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SetDefAccess(struct in_addr *pAddr, char *pHost)
|
||||
SetDefAccess(
|
||||
#if USE_IPV6
|
||||
void
|
||||
#else
|
||||
SetDefAccess(pAddr, pHost)
|
||||
struct in_addr *pAddr;
|
||||
char *pHost;
|
||||
struct in_addr *pAddr, char *pHost
|
||||
#endif
|
||||
)
|
||||
{
|
||||
ACCESS *a;
|
||||
#if USE_IPV6
|
||||
int error;
|
||||
char addr[NI_MAXHOST];
|
||||
struct ifaddrs *myAddrs, *ifa;
|
||||
#endif /* USE_IPV6 */
|
||||
|
||||
while (pACList != (ACCESS *)0) {
|
||||
a = pACList->pACnext;
|
||||
@ -289,7 +333,39 @@ SetDefAccess(pAddr, pHost)
|
||||
pACList = a;
|
||||
}
|
||||
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
/* get list of all addresses on system */
|
||||
error = getifaddrs(&myAddrs);
|
||||
if (error) {
|
||||
Error("SetDefAccess(): getifaddrs: %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
for (ifa = myAddrs; ifa != NULL; ifa = ifa->ifa_next) {
|
||||
/* skip interfaces without address or in down state */
|
||||
if (ifa->ifa_addr == NULL || !(ifa->ifa_flags & IFF_UP))
|
||||
continue;
|
||||
|
||||
error =
|
||||
getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_storage),
|
||||
addr, sizeof(addr), NULL, 0, NI_NUMERICHOST);
|
||||
if (error)
|
||||
continue;
|
||||
|
||||
if ((a = (ACCESS *)calloc(1, sizeof(ACCESS))) == (ACCESS *)0)
|
||||
OutOfMem();
|
||||
if ((a->pcwho = StrDup(addr)) == (char *)0)
|
||||
OutOfMem();
|
||||
|
||||
a->ctrust = 'a';
|
||||
a->pACnext = pACList;
|
||||
pACList = a;
|
||||
|
||||
CONDDEBUG((1, "SetDefAccess(): trust=%c, who=%s", pACList->ctrust,
|
||||
pACList->pcwho));
|
||||
}
|
||||
freeifaddrs(myAddrs);
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
if ((pACList = (ACCESS *)calloc(1, sizeof(ACCESS))) == (ACCESS *)0)
|
||||
OutOfMem();
|
||||
if ((pACList->pcwho = StrDup("127.0.0.1")) == (char *)0)
|
||||
@ -318,12 +394,7 @@ SetDefAccess(pAddr, pHost)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DestroyAccessList(ACCESS *pACList)
|
||||
#else
|
||||
DestroyAccessList(pACList)
|
||||
ACCESS *pACList;
|
||||
#endif
|
||||
{
|
||||
if (pACList == (ACCESS *)0)
|
||||
return;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: access.h,v 5.26 2003/08/10 18:11:20 bryan Exp $
|
||||
* $Id: access.h,v 5.27 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -44,6 +44,12 @@ typedef struct access {
|
||||
struct access *pACnext; /* next access list */
|
||||
} ACCESS;
|
||||
|
||||
extern char AccType PARAMS((struct in_addr *, char **));
|
||||
extern void SetDefAccess PARAMS((struct in_addr *, char *));
|
||||
extern void DestroyAccessList PARAMS((ACCESS *));
|
||||
extern char AccType(INADDR_STYPE *, char **);
|
||||
extern void SetDefAccess(
|
||||
#if USE_IPV6
|
||||
void
|
||||
#else
|
||||
struct in_addr *, char *
|
||||
#endif
|
||||
);
|
||||
extern void DestroyAccessList(ACCESS *);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: client.c,v 5.96 2014/04/02 04:45:31 bryan Exp $
|
||||
* $Id: client.c,v 5.97 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -43,9 +43,14 @@
|
||||
#include <group.h>
|
||||
#include <readcfg.h>
|
||||
|
||||
#if USE_IPV6
|
||||
# include <sys/socket.h>
|
||||
# include <netdb.h>
|
||||
#endif /* USE_IPV6 */
|
||||
|
||||
#if defined(USE_LIBWRAP)
|
||||
#include <syslog.h>
|
||||
#include <tcpd.h>
|
||||
# include <syslog.h>
|
||||
# include <tcpd.h>
|
||||
int allow_severity = LOG_INFO;
|
||||
int deny_severity = LOG_WARNING;
|
||||
#endif
|
||||
@ -54,12 +59,7 @@ int deny_severity = LOG_WARNING;
|
||||
/* find the next guy who wants to write on the console (ksb)
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
FindWrite(CONSENT *pCE)
|
||||
#else
|
||||
FindWrite(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
CONSCLIENT *pCLfound = (CONSCLIENT *)0;
|
||||
CONSCLIENT *pCL;
|
||||
@ -91,13 +91,7 @@ FindWrite(pCE)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
BumpClient(CONSENT *pCE, char *message)
|
||||
#else
|
||||
BumpClient(pCE, message)
|
||||
CONSENT *pCE;
|
||||
char *message;
|
||||
#endif
|
||||
{
|
||||
if ((CONSCLIENT *)0 == pCE->pCLwr)
|
||||
return;
|
||||
@ -118,14 +112,7 @@ BumpClient(pCE, message)
|
||||
#define REPLAYBUFFER 4096
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
Replay(CONSENT *pCE, CONSFILE *fdOut, unsigned short back)
|
||||
#else
|
||||
Replay(pCE, fdOut, back)
|
||||
CONSENT *pCE;
|
||||
CONSFILE *fdOut;
|
||||
unsigned short back;
|
||||
#endif
|
||||
{
|
||||
CONSFILE *fdLog = (CONSFILE *)0;
|
||||
STRING *line = (STRING *)0;
|
||||
@ -424,12 +411,7 @@ static HELP aHLTable[] = {
|
||||
/* list the commands we know for the user (ksb)
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
HelpUser(CONSCLIENT *pCL)
|
||||
#else
|
||||
HelpUser(pCL, pCE)
|
||||
CONSCLIENT *pCL;
|
||||
#endif
|
||||
{
|
||||
int i, j, iCmp;
|
||||
static char
|
||||
@ -505,34 +487,19 @@ HelpUser(pCL, pCE)
|
||||
}
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
ClientAccessOk(CONSCLIENT *pCL)
|
||||
#else
|
||||
ClientAccessOk(pCL)
|
||||
CONSCLIENT *pCL;
|
||||
#endif
|
||||
{
|
||||
char *peername = (char *)0;
|
||||
int retval = 1;
|
||||
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
struct in_addr addr;
|
||||
|
||||
# if HAVE_INET_ATON
|
||||
inet_aton("127.0.0.1", &addr);
|
||||
# else
|
||||
addr.s_addr = inet_addr("127.0.0.1");
|
||||
# endif
|
||||
pCL->caccess = AccType(&addr, &peername);
|
||||
if (pCL->caccess == 'r') {
|
||||
FileWrite(pCL->fd, FLAGFALSE, "access from your host refused\r\n",
|
||||
-1);
|
||||
retval = 0;
|
||||
}
|
||||
#else
|
||||
#if USE_IPV6 || !USE_UNIX_DOMAIN_SOCKETS
|
||||
socklen_t so;
|
||||
int cfd;
|
||||
struct sockaddr_in in_port;
|
||||
# if USE_IPV6
|
||||
int error;
|
||||
char addr[NI_MAXHOST];
|
||||
# endif
|
||||
SOCKADDR_STYPE in_port;
|
||||
int getpeer = -1;
|
||||
|
||||
cfd = FileFDNum(pCL->fd);
|
||||
@ -559,20 +526,56 @@ ClientAccessOk(pCL)
|
||||
retval = 0;
|
||||
goto setpeer;
|
||||
}
|
||||
pCL->caccess = AccType(&in_port.sin_addr, &peername);
|
||||
pCL->caccess = AccType(
|
||||
# if USE_IPV6
|
||||
&in_port,
|
||||
# else
|
||||
&in_port.sin_addr,
|
||||
# endif
|
||||
&peername);
|
||||
if (pCL->caccess == 'r') {
|
||||
FileWrite(pCL->fd, FLAGFALSE, "access from your host refused\r\n",
|
||||
-1);
|
||||
retval = 0;
|
||||
}
|
||||
setpeer:
|
||||
#else
|
||||
struct in_addr addr;
|
||||
|
||||
# if HAVE_INET_ATON
|
||||
inet_aton("127.0.0.1", &addr);
|
||||
# else
|
||||
addr.s_addr = inet_addr("127.0.0.1");
|
||||
# endif
|
||||
pCL->caccess = AccType(&addr, &peername);
|
||||
if (pCL->caccess == 'r') {
|
||||
FileWrite(pCL->fd, FLAGFALSE, "access from your host refused\r\n",
|
||||
-1);
|
||||
retval = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pCL->peername != (STRING *)0) {
|
||||
BuildString((char *)0, pCL->peername);
|
||||
if (peername != (char *)0)
|
||||
BuildString(peername, pCL->peername);
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
else if (getpeer != -1) {
|
||||
error =
|
||||
getnameinfo((struct sockaddr *)&in_port, so, addr,
|
||||
sizeof(addr), NULL, 0, NI_NUMERICHOST);
|
||||
if (error) {
|
||||
FileWrite(pCL->fd, FLAGFALSE, "getnameinfo failed\r\n",
|
||||
-1);
|
||||
Error("ClientAccessOk(): gatenameinfo: %s",
|
||||
gai_strerror(error));
|
||||
retval = 0;
|
||||
}
|
||||
|
||||
BuildString(addr, pCL->peername);
|
||||
} else
|
||||
BuildString("<unknown>", pCL->peername);
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
else
|
||||
BuildString("127.0.0.1", pCL->peername);
|
||||
#else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: client.h,v 5.44 2013/09/23 22:58:21 bryan Exp $
|
||||
* $Id: client.h,v 5.45 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -87,15 +87,14 @@ typedef struct client { /* Connection Information: */
|
||||
IOSTATE ioState; /* state of the socket */
|
||||
time_t stateTimer; /* timer for various ioState states */
|
||||
STRING *accmd; /* the command the user issued */
|
||||
struct sockaddr_in
|
||||
cnct_port; /* where from */
|
||||
INADDR_STYPE cnct_port; /* where from */
|
||||
FLAG confirmed; /* confirm state */
|
||||
CLIENTSTATE cState; /* state needing confirmation */
|
||||
char cOption; /* option initiating the confirmation */
|
||||
} CONSCLIENT;
|
||||
|
||||
extern void Replay PARAMS((CONSENT *, CONSFILE *, unsigned short));
|
||||
extern void HelpUser PARAMS((CONSCLIENT *));
|
||||
extern void FindWrite PARAMS((CONSENT *));
|
||||
extern int ClientAccessOk PARAMS((CONSCLIENT *));
|
||||
extern void BumpClient PARAMS((CONSENT *, char *));
|
||||
extern void Replay(CONSENT *, CONSFILE *, unsigned short);
|
||||
extern void HelpUser(CONSCLIENT *);
|
||||
extern void FindWrite(CONSENT *);
|
||||
extern int ClientAccessOk(CONSCLIENT *);
|
||||
extern void BumpClient(CONSENT *, char *);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: consent.c,v 5.154 2014/04/02 04:45:31 bryan Exp $
|
||||
* $Id: consent.c,v 5.155 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -88,37 +88,37 @@ BAUD baud[] = {
|
||||
{"3500000", 32},
|
||||
{"4000000", 33},
|
||||
#else /* FOR_CYCLADES_TS */
|
||||
#if defined(B115200)
|
||||
# if defined(B115200)
|
||||
{"115200", B115200},
|
||||
#endif
|
||||
#if defined(B57600)
|
||||
# endif
|
||||
# if defined(B57600)
|
||||
{"57600", B57600},
|
||||
#endif
|
||||
#if defined(B38400)
|
||||
# endif
|
||||
# if defined(B38400)
|
||||
{"38400", B38400},
|
||||
#endif
|
||||
#if defined(B19200)
|
||||
# endif
|
||||
# if defined(B19200)
|
||||
{"19200", B19200},
|
||||
#endif
|
||||
#if defined(B9600)
|
||||
# endif
|
||||
# if defined(B9600)
|
||||
{"9600", B9600},
|
||||
#endif
|
||||
#if defined(B4800)
|
||||
# endif
|
||||
# if defined(B4800)
|
||||
{"4800", B4800},
|
||||
#endif
|
||||
#if defined(B2400)
|
||||
# endif
|
||||
# if defined(B2400)
|
||||
{"2400", B2400},
|
||||
#endif
|
||||
#if defined(B1800)
|
||||
# endif
|
||||
# if defined(B1800)
|
||||
{"1800", B1800},
|
||||
#endif
|
||||
# endif
|
||||
{"1200", B1200},
|
||||
#if defined(B600)
|
||||
# if defined(B600)
|
||||
{"600", B600},
|
||||
#endif
|
||||
#if defined(B300)
|
||||
# endif
|
||||
# if defined(B300)
|
||||
{"300", B300},
|
||||
#endif
|
||||
# endif
|
||||
#endif /* FOR_CYCLADES_TS */
|
||||
};
|
||||
|
||||
@ -126,12 +126,7 @@ BAUD baud[] = {
|
||||
/* find a baud rate for the string "9600x" -> B9600 (ksb)
|
||||
*/
|
||||
BAUD *
|
||||
#if PROTOTYPES
|
||||
FindBaud(char *pcMode)
|
||||
#else
|
||||
FindBaud(pcMode)
|
||||
char *pcMode;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -143,9 +138,9 @@ FindBaud(pcMode)
|
||||
}
|
||||
|
||||
|
||||
# if !defined(PAREXT)
|
||||
# define PAREXT 0
|
||||
# endif
|
||||
#if !defined(PAREXT)
|
||||
# define PAREXT 0
|
||||
#endif
|
||||
struct parity parity[] = {
|
||||
{"even", PARENB | CS7, 0},
|
||||
{"mark", PARENB | CS7 | PARODD | PAREXT, 0},
|
||||
@ -157,12 +152,7 @@ struct parity parity[] = {
|
||||
/* find a parity "even" or "E" or "ev" -> EVEN
|
||||
*/
|
||||
PARITY *
|
||||
#if PROTOTYPES
|
||||
FindParity(char *pcMode)
|
||||
#else
|
||||
FindParity(pcMode)
|
||||
char *pcMode;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -177,12 +167,7 @@ FindParity(pcMode)
|
||||
/* setup a tty device (ksb)
|
||||
*/
|
||||
static int
|
||||
#if PROTOTYPES
|
||||
TtyDev(CONSENT *pCE)
|
||||
#else
|
||||
TtyDev(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
struct termios termp;
|
||||
struct stat stPerm;
|
||||
@ -290,25 +275,20 @@ TtyDev(pCE)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
# if HAVE_STROPTS_H
|
||||
#if HAVE_STROPTS_H
|
||||
/*
|
||||
* eat all the streams modules upto and including ttcompat
|
||||
*/
|
||||
while (ioctl(cofile, I_FIND, "ttcompat") == 1) {
|
||||
ioctl(cofile, I_POP, 0);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
pCE->fup = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
StopInit(CONSENT *pCE)
|
||||
#else
|
||||
StopInit(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
if (pCE->initcmd == (char *)0)
|
||||
return;
|
||||
@ -341,12 +321,7 @@ StopInit(pCE)
|
||||
|
||||
#if HAVE_FREEIPMI
|
||||
ipmiconsole_ctx_t
|
||||
#if PROTOTYPES
|
||||
IpmiSOLCreate(CONSENT *pCE)
|
||||
#else
|
||||
IpmiSOLCreate(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
ipmiconsole_ctx_t ctx;
|
||||
struct ipmiconsole_ipmi_config ipmi;
|
||||
@ -389,12 +364,7 @@ IpmiSOLCreate(pCE)
|
||||
|
||||
/* invoke the initcmd command */
|
||||
void
|
||||
#if PROTOTYPES
|
||||
StartInit(CONSENT *pCE)
|
||||
#else
|
||||
StartInit(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
pid_t iNewGrp;
|
||||
@ -495,15 +465,15 @@ StartInit(pCE)
|
||||
close(1);
|
||||
close(0);
|
||||
|
||||
# if HAVE_SETSID
|
||||
#if HAVE_SETSID
|
||||
iNewGrp = setsid();
|
||||
if (-1 == iNewGrp) {
|
||||
Error("[%s] setsid(): %s", pCE->server, strerror(errno));
|
||||
iNewGrp = getpid();
|
||||
}
|
||||
# else
|
||||
#else
|
||||
iNewGrp = getpid();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
if (dup(pout[0]) != 0 || dup(pin[1]) != 1) {
|
||||
Error("[%s] StartInit(): fd sync error", pCE->server);
|
||||
@ -534,17 +504,11 @@ StartInit(pCE)
|
||||
|
||||
/* We exit() here, so only call this in a child process before an exec() */
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SetupTty(CONSENT *pCE, int fd)
|
||||
#else
|
||||
SetupTty(pCE, fd)
|
||||
CONSENT *pCE;
|
||||
int fd;
|
||||
#endif
|
||||
{
|
||||
struct termios n_tio;
|
||||
|
||||
# if HAVE_STROPTS_H && !defined(_AIX)
|
||||
#if HAVE_STROPTS_H && !defined(_AIX)
|
||||
/* SYSVr4 semantics for opening stream ptys (gregf)
|
||||
* under PTX (others?) we have to push the compatibility
|
||||
* streams modules `ptem', `ld', and `ttcompat'
|
||||
@ -552,7 +516,7 @@ SetupTty(pCE, fd)
|
||||
ioctl(1, I_PUSH, "ptem");
|
||||
ioctl(1, I_PUSH, "ldterm");
|
||||
ioctl(1, I_PUSH, "ttcompat");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
if (0 != tcgetattr(1, &n_tio)) {
|
||||
exit(EX_OSERR);
|
||||
@ -587,12 +551,7 @@ SetupTty(pCE, fd)
|
||||
/* setup a virtual device (ksb)
|
||||
*/
|
||||
static int
|
||||
#if PROTOTYPES
|
||||
VirtDev(CONSENT *pCE)
|
||||
#else
|
||||
VirtDev(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
pid_t iNewGrp;
|
||||
@ -645,15 +604,15 @@ VirtDev(pCE)
|
||||
close(1);
|
||||
close(0);
|
||||
|
||||
# if HAVE_SETSID
|
||||
#if HAVE_SETSID
|
||||
iNewGrp = setsid();
|
||||
if (-1 == iNewGrp) {
|
||||
Error("[%s] setsid(): %s", pCE->server, strerror(errno));
|
||||
iNewGrp = getpid();
|
||||
}
|
||||
# else
|
||||
#else
|
||||
iNewGrp = getpid();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
if (dup(pCE->execSlaveFD) != 0 || dup(pCE->execSlaveFD) != 1) {
|
||||
Error("[%s] fd sync error", pCE->server);
|
||||
@ -707,12 +666,7 @@ VirtDev(pCE)
|
||||
}
|
||||
|
||||
char *
|
||||
#if PROTOTYPES
|
||||
ConsState(CONSENT *pCE)
|
||||
#else
|
||||
ConsState(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
if (!pCE->fup)
|
||||
return "down";
|
||||
@ -747,14 +701,7 @@ ConsState(pCE)
|
||||
* with the "runtime" members of the structure here.
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConsDown(CONSENT *pCE, FLAG downHard, FLAG force)
|
||||
#else
|
||||
ConsDown(pCE, downHard, force)
|
||||
CONSENT *pCE;
|
||||
FLAG downHard;
|
||||
FLAG force;
|
||||
#endif
|
||||
{
|
||||
if (force != FLAGTRUE &&
|
||||
!(FileBufEmpty(pCE->fdlog) && FileBufEmpty(pCE->cofile) &&
|
||||
@ -811,15 +758,10 @@ ConsDown(pCE, downHard, force)
|
||||
* We also maintian the select set for the caller.
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConsInit(CONSENT *pCE)
|
||||
#else
|
||||
ConsInit(pCE)
|
||||
CONSENT *pCE;
|
||||
#endif
|
||||
{
|
||||
time_t tyme;
|
||||
extern int FallBack PARAMS((char **, int *));
|
||||
extern int FallBack(char **, int *);
|
||||
int cofile = -1;
|
||||
int ret;
|
||||
#if HAVE_GETTIMEOFDAY
|
||||
@ -914,19 +856,86 @@ ConsInit(pCE)
|
||||
break;
|
||||
case HOST:
|
||||
{
|
||||
#if USE_IPV6
|
||||
int error;
|
||||
char host[NI_MAXHOST];
|
||||
char serv[NI_MAXSERV];
|
||||
struct addrinfo *ai, *rp, hints;
|
||||
#else
|
||||
struct sockaddr_in port;
|
||||
struct hostent *hp;
|
||||
#endif /* USE_IPV6 */
|
||||
#if HAVE_SETSOCKOPT
|
||||
int one = 1;
|
||||
#endif
|
||||
|
||||
usleep(100000); /* Not all terminal servers can keep up */
|
||||
|
||||
#if HAVE_MEMSET
|
||||
memset((void *)&port, 0, sizeof(port));
|
||||
#if USE_IPV6
|
||||
# if HAVE_MEMSET
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
# else
|
||||
bzero(&hints, sizeof(hints));
|
||||
# endif
|
||||
|
||||
hints.ai_flags = AI_ADDRCONFIG;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
snprintf(serv, sizeof(serv), "%hu", pCE->netport);
|
||||
|
||||
error = getaddrinfo(pCE->host, serv, &hints, &ai);
|
||||
if (error) {
|
||||
Error("[%s] getaddrinfo(%s): %s: forcing down",
|
||||
pCE->server, pCE->host, gai_strerror(error));
|
||||
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
|
||||
return;
|
||||
}
|
||||
|
||||
rp = ai;
|
||||
while (rp) {
|
||||
error =
|
||||
getnameinfo(rp->ai_addr, rp->ai_addrlen, host,
|
||||
sizeof(host), serv, sizeof(serv),
|
||||
NI_NUMERICHOST | NI_NUMERICSERV);
|
||||
if (error)
|
||||
continue;
|
||||
CONDDEBUG((1,
|
||||
"[%s]: trying hostname=%s, ip=%s, port=%s",
|
||||
pCE->server, pCE->host, host, serv));
|
||||
|
||||
cofile =
|
||||
socket(rp->ai_family, rp->ai_socktype,
|
||||
rp->ai_protocol);
|
||||
if (cofile != -1) {
|
||||
# if HAVE_SETSOCKOPT
|
||||
if (setsockopt
|
||||
(cofile, SOL_SOCKET, SO_KEEPALIVE,
|
||||
(char *)&one, sizeof(one)) < 0)
|
||||
goto fail;
|
||||
# endif
|
||||
if (!SetFlags(cofile, O_NONBLOCK, 0))
|
||||
goto fail;
|
||||
if ((ret =
|
||||
connect(cofile, rp->ai_addr,
|
||||
rp->ai_addrlen)) == 0)
|
||||
goto success;
|
||||
fail:
|
||||
close(cofile);
|
||||
}
|
||||
rp = rp->ai_next;
|
||||
}
|
||||
|
||||
Error("[%s]: Unable to connect to %s:%s", pCE->server,
|
||||
host, serv);
|
||||
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
|
||||
return;
|
||||
success:
|
||||
freeaddrinfo(ai);
|
||||
#else
|
||||
# if HAVE_MEMSET
|
||||
memset((void *)&port, 0, sizeof(port));
|
||||
# else
|
||||
bzero((char *)&port, sizeof(port));
|
||||
#endif
|
||||
# endif
|
||||
|
||||
if ((hp = gethostbyname(pCE->host)) == NULL) {
|
||||
Error("[%s] gethostbyname(%s): %s: forcing down",
|
||||
@ -934,13 +943,13 @@ ConsInit(pCE)
|
||||
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
|
||||
return;
|
||||
}
|
||||
#if HAVE_MEMCPY
|
||||
# if HAVE_MEMCPY
|
||||
memcpy(&port.sin_addr.s_addr, hp->h_addr_list[0],
|
||||
hp->h_length);
|
||||
#else
|
||||
# else
|
||||
bcopy(hp->h_addr_list[0], &port.sin_addr.s_addr,
|
||||
hp->h_length);
|
||||
#endif
|
||||
# endif
|
||||
port.sin_family = hp->h_addrtype;
|
||||
port.sin_port = htons(pCE->netport);
|
||||
|
||||
@ -951,7 +960,7 @@ ConsInit(pCE)
|
||||
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
|
||||
return;
|
||||
}
|
||||
#if HAVE_SETSOCKOPT
|
||||
# if HAVE_SETSOCKOPT
|
||||
if (setsockopt
|
||||
(cofile, SOL_SOCKET, SO_KEEPALIVE, (char *)&one,
|
||||
sizeof(one)) < 0) {
|
||||
@ -962,7 +971,7 @@ ConsInit(pCE)
|
||||
close(cofile);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
|
||||
if (!SetFlags(cofile, O_NONBLOCK, 0)) {
|
||||
ConsDown(pCE, FLAGTRUE, FLAGTRUE);
|
||||
@ -982,6 +991,7 @@ ConsInit(pCE)
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif /* USE_IPV6 */
|
||||
}
|
||||
if ((pCE->cofile =
|
||||
FileOpenFD(cofile, simpleSocket)) == (CONSFILE *)0) {
|
||||
@ -1238,48 +1248,93 @@ ConsInit(pCE)
|
||||
}
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
AddrsMatch(char *addr1, char *addr2)
|
||||
#else
|
||||
AddrsMatch(addr1, addr2)
|
||||
char *addr1;
|
||||
char *addr2;
|
||||
#endif
|
||||
{
|
||||
#if USE_IPV6
|
||||
int error, ret = 0;
|
||||
struct addrinfo *ai1, *ai2, hints;
|
||||
#else
|
||||
/* so, since we might use inet_addr, we're going to use
|
||||
* (in_addr_t)(-1) as a sign of an invalid ip address.
|
||||
* sad, but true.
|
||||
*/
|
||||
in_addr_t inAddr1 = (in_addr_t) (-1);
|
||||
in_addr_t inAddr2 = (in_addr_t) (-1);
|
||||
#if HAVE_INET_ATON
|
||||
# if HAVE_INET_ATON
|
||||
struct in_addr inetAddr1;
|
||||
struct in_addr inetAddr2;
|
||||
#endif
|
||||
# endif
|
||||
#endif /* USE_IPV6 */
|
||||
|
||||
/* first try simple character string match */
|
||||
if (strcasecmp(addr1, addr2) == 0)
|
||||
return 1;
|
||||
|
||||
#if USE_IPV6
|
||||
# if HAVE_MEMSET
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
# else
|
||||
bzero(&hints, sizeof(hints));
|
||||
# endif
|
||||
hints.ai_flags = AI_ADDRCONFIG;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
|
||||
error = getaddrinfo(addr1, NULL, &hints, &ai1);
|
||||
if (error) {
|
||||
Error("getaddrinfo(%s): %s", addr1, gai_strerror(error));
|
||||
goto done;
|
||||
}
|
||||
error = getaddrinfo(addr2, NULL, &hints, &ai2);
|
||||
if (error) {
|
||||
Error("getaddrinfo(%s): %s", addr2, gai_strerror(error));
|
||||
goto done;
|
||||
}
|
||||
|
||||
for (; ai1 != NULL; ai1 = ai1->ai_next) {
|
||||
for (; ai2 != NULL; ai2 = ai2->ai_next) {
|
||||
if (ai1->ai_addr->sa_family != ai2->ai_addr->sa_family)
|
||||
continue;
|
||||
|
||||
if (
|
||||
# if HAVE_MEMCMP
|
||||
memcmp(&ai1->ai_addr, &ai2->ai_addr,
|
||||
sizeof(struct sockaddr_storage))
|
||||
# else
|
||||
bcmp(&ai1->ai_addr, &ai2->ai_addr,
|
||||
sizeof(struct sockaddr_storage))
|
||||
# endif
|
||||
== 0) {
|
||||
ret = 1;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
freeaddrinfo(ai1);
|
||||
freeaddrinfo(ai2);
|
||||
Msg("compare %s and %s returns %d", addr1, addr2, ret);
|
||||
return ret;
|
||||
#else
|
||||
/* now try ip address match (could have leading zeros or something) */
|
||||
#if HAVE_INET_ATON
|
||||
# if HAVE_INET_ATON
|
||||
if (inet_aton(addr1, &inetAddr1) != 0)
|
||||
inAddr1 = inetAddr1.s_addr;
|
||||
if (inet_aton(addr2, &inetAddr2) != 0)
|
||||
inAddr2 = inetAddr2.s_addr;
|
||||
#else
|
||||
# else
|
||||
inAddr1 = inet_addr(addr1);
|
||||
inAddr2 = inet_addr(addr2);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
/* if both are ip addresses, we just match */
|
||||
if (inAddr1 != (in_addr_t) (-1) && inAddr2 != (in_addr_t) (-1))
|
||||
return !
|
||||
#if HAVE_MEMCMP
|
||||
# if HAVE_MEMCMP
|
||||
memcmp(&inAddr1, &inAddr2, sizeof(inAddr1))
|
||||
#else
|
||||
# else
|
||||
bcmp(&inAddr1, &inAddr2, sizeof(inAddr1))
|
||||
#endif
|
||||
# endif
|
||||
;
|
||||
|
||||
/* both are hostnames...this sucks 'cause we have to copy one
|
||||
@ -1307,11 +1362,11 @@ AddrsMatch(addr1, addr2)
|
||||
if (addrs == (in_addr_t *) 0)
|
||||
OutOfMem();
|
||||
for (i = 0; i < c; i++) {
|
||||
#if HAVE_MEMCPY
|
||||
# if HAVE_MEMCPY
|
||||
memcpy(&(addrs[i]), he->h_addr_list[i], he->h_length);
|
||||
#else
|
||||
# else
|
||||
bcopy(he->h_addr_list[i], &(addrs[i]), he->h_length);
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
|
||||
/* now process the second hostname */
|
||||
@ -1331,12 +1386,12 @@ AddrsMatch(addr1, addr2)
|
||||
for (j = 0; he->h_addr_list[j] != (char *)0; j++) {
|
||||
for (i = 0; i < c; i++) {
|
||||
if (
|
||||
#if HAVE_MEMCMP
|
||||
# if HAVE_MEMCMP
|
||||
memcmp(&(addrs[i]), he->h_addr_list[j],
|
||||
he->h_length)
|
||||
#else
|
||||
# else
|
||||
bcmp(&(addrs[i]), he->h_addr_list[j], he->h_length)
|
||||
#endif
|
||||
# endif
|
||||
== 0) {
|
||||
free(addrs);
|
||||
return 1;
|
||||
@ -1370,28 +1425,24 @@ AddrsMatch(addr1, addr2)
|
||||
}
|
||||
for (i = 0; he->h_addr_list[i] != (char *)0; i++) {
|
||||
if (
|
||||
#if HAVE_MEMCMP
|
||||
# if HAVE_MEMCMP
|
||||
memcmp(iaddr, he->h_addr_list[i], he->h_length)
|
||||
#else
|
||||
# else
|
||||
bcmp(iaddr, he->h_addr_list[i], he->h_length)
|
||||
#endif
|
||||
# endif
|
||||
== 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
#endif /* USE_IPV6 */
|
||||
}
|
||||
|
||||
/* thread ther list of uniq console server machines, aliases for (ksb)
|
||||
* machines will screw us up
|
||||
*/
|
||||
REMOTE *
|
||||
#if PROTOTYPES
|
||||
FindUniq(REMOTE *pRCAll)
|
||||
#else
|
||||
FindUniq(pRCAll)
|
||||
REMOTE *pRCAll;
|
||||
#endif
|
||||
{
|
||||
REMOTE *pRC;
|
||||
|
||||
@ -1414,12 +1465,7 @@ FindUniq(pRCAll)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DestroyRemoteConsole(REMOTE *pRCList)
|
||||
#else
|
||||
DestroyRemoteConsole(pRCList)
|
||||
REMOTE *pRCList;
|
||||
#endif
|
||||
{
|
||||
NAMES *name = (NAMES *)0;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: consent.h,v 5.74 2014/04/04 16:17:10 bryan Exp $
|
||||
* $Id: consent.h,v 5.75 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -64,10 +64,10 @@ typedef enum consType {
|
||||
} CONSTYPE;
|
||||
|
||||
#if HAVE_FREEIPMI
|
||||
#define IPMIL_UNKNOWN (0)
|
||||
#define IPMIL_USER (IPMICONSOLE_PRIVILEGE_USER+1)
|
||||
#define IPMIL_OPERATOR (IPMICONSOLE_PRIVILEGE_OPERATOR+1)
|
||||
#define IPMIL_ADMIN (IPMICONSOLE_PRIVILEGE_ADMIN+1)
|
||||
# define IPMIL_UNKNOWN (0)
|
||||
# define IPMIL_USER (IPMICONSOLE_PRIVILEGE_USER+1)
|
||||
# define IPMIL_OPERATOR (IPMICONSOLE_PRIVILEGE_OPERATOR+1)
|
||||
# define IPMIL_ADMIN (IPMICONSOLE_PRIVILEGE_ADMIN+1)
|
||||
#endif
|
||||
|
||||
typedef struct names {
|
||||
@ -209,13 +209,13 @@ typedef struct remote { /* console at another host */
|
||||
NAMES *aliases; /* aliases for remote server name */
|
||||
} REMOTE;
|
||||
|
||||
extern PARITY *FindParity PARAMS((char *));
|
||||
extern BAUD *FindBaud PARAMS((char *));
|
||||
extern void ConsInit PARAMS((CONSENT *));
|
||||
extern void ConsDown PARAMS((CONSENT *, FLAG, FLAG));
|
||||
extern REMOTE *FindUniq PARAMS((REMOTE *));
|
||||
extern void DestroyRemoteConsole PARAMS((REMOTE *));
|
||||
extern void StartInit PARAMS((CONSENT *));
|
||||
extern void StopInit PARAMS((CONSENT *));
|
||||
extern char *ConsState PARAMS((CONSENT *));
|
||||
extern void SetupTty PARAMS((CONSENT *, int));
|
||||
extern PARITY *FindParity(char *);
|
||||
extern BAUD *FindBaud(char *);
|
||||
extern void ConsInit(CONSENT *);
|
||||
extern void ConsDown(CONSENT *, FLAG, FLAG);
|
||||
extern REMOTE *FindUniq(REMOTE *);
|
||||
extern void DestroyRemoteConsole(REMOTE *);
|
||||
extern void StartInit(CONSENT *);
|
||||
extern void StopInit(CONSENT *);
|
||||
extern char *ConsState(CONSENT *);
|
||||
extern void SetupTty(CONSENT *, int);
|
||||
|
@ -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.20" "conserver"
|
||||
.TH CONSERVER 8 "2006/12/31" "conserver-8.2.0" "conserver"
|
||||
.SH NAME
|
||||
conserver \- console server daemon
|
||||
.SH SYNOPSIS
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: convert.c,v 1.13 2014/04/02 04:45:32 bryan Exp $
|
||||
* $Id: convert.c,v 1.14 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -58,14 +58,7 @@ DestroyDataStructures()
|
||||
}
|
||||
|
||||
char *
|
||||
#if PROTOTYPES
|
||||
ReadLine2(FILE *fp, STRING *save, int *iLine)
|
||||
#else
|
||||
ReadLine2(fp, save, iLine)
|
||||
FILE *fp;
|
||||
STRING *save;
|
||||
int *iLine;
|
||||
#endif
|
||||
{
|
||||
static char buf[1024];
|
||||
char *wholeline = (char *)0;
|
||||
@ -154,13 +147,7 @@ ReadLine2(fp, save, iLine)
|
||||
* to manage the consoles
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ReadCfg(char *pcFile, FILE *fp)
|
||||
#else
|
||||
ReadCfg(pcFile, fp)
|
||||
char *pcFile;
|
||||
FILE *fp;
|
||||
#endif
|
||||
{
|
||||
int iLine;
|
||||
unsigned char *acIn;
|
||||
@ -480,13 +467,7 @@ ReadCfg(pcFile, fp)
|
||||
}
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
main(int argc, char **argv)
|
||||
#else
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
#endif
|
||||
{
|
||||
char *pcFile;
|
||||
FILE *fp;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,22 +1,18 @@
|
||||
/*
|
||||
* $Id: cutil.h,v 1.69 2009/09/26 09:23:04 bryan Exp $
|
||||
* $Id: cutil.h,v 1.70 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
* Maintainer/Enhancer: Bryan Stansell (bryan@conserver.com)
|
||||
*/
|
||||
|
||||
#if PROTOTYPES
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
#if HAVE_OPENSSL
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/err.h>
|
||||
# include <openssl/ssl.h>
|
||||
# include <openssl/err.h>
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
#include <gssapi/gssapi.h>
|
||||
# include <gssapi/gssapi.h>
|
||||
#endif
|
||||
|
||||
/* communication constants
|
||||
@ -98,15 +94,15 @@ typedef struct consFile {
|
||||
|
||||
typedef struct item {
|
||||
char *id;
|
||||
void (*reg) PARAMS((char *));
|
||||
void (*reg) (char *);
|
||||
} ITEM;
|
||||
|
||||
typedef struct section {
|
||||
char *id;
|
||||
void (*begin) PARAMS((char *));
|
||||
void (*end) PARAMS((void));
|
||||
void (*abort) PARAMS((void));
|
||||
void (*destroy) PARAMS((void));
|
||||
void (*begin) (char *);
|
||||
void (*end) (void);
|
||||
void (*abort) (void);
|
||||
void (*destroy) (void);
|
||||
ITEM *items;
|
||||
} SECTION;
|
||||
|
||||
@ -119,14 +115,14 @@ typedef enum substToken {
|
||||
typedef struct subst {
|
||||
/* function to retrieve a token type based on a character
|
||||
*/
|
||||
SUBSTTOKEN (*token) PARAMS((char));
|
||||
SUBSTTOKEN (*token) (char);
|
||||
/* data for callback function
|
||||
*/
|
||||
void *data;
|
||||
/* function to retrieve a value (as a char* or int or both) for
|
||||
* a substitution
|
||||
*/
|
||||
int (*value) PARAMS((char, char **, int *));
|
||||
int (*value) (char, char **, int *);
|
||||
} SUBST;
|
||||
|
||||
extern int isMultiProc, fDebug, fVerbose, fErrorPrinted;
|
||||
@ -134,7 +130,9 @@ extern char *progname;
|
||||
extern pid_t thepid;
|
||||
#define MAXHOSTNAME 1024
|
||||
extern char myHostname[];
|
||||
#if !USE_IPV6
|
||||
extern struct in_addr *myAddrs;
|
||||
#endif
|
||||
extern fd_set rinit;
|
||||
extern fd_set winit;
|
||||
extern int maxfd;
|
||||
@ -145,73 +143,74 @@ extern char *file; /* used by ParseFile */
|
||||
extern SECTION sections[]; /* used by ParseFile */
|
||||
extern int isMaster;
|
||||
|
||||
extern const char *StrTime PARAMS((time_t *));
|
||||
extern void Debug PARAMS((int, char *, ...));
|
||||
extern void Error PARAMS((char *, ...));
|
||||
extern void Msg PARAMS((char *, ...));
|
||||
extern void Verbose PARAMS((char *, ...));
|
||||
extern void SimpleSignal PARAMS((int, RETSIGTYPE(*)(int)));
|
||||
extern int GetMaxFiles PARAMS(());
|
||||
extern char *FmtCtl PARAMS((int, STRING *));
|
||||
extern void FmtCtlStr PARAMS((char *, int, STRING *));
|
||||
extern CONSFILE *FileOpenFD PARAMS((int, enum consFileType));
|
||||
extern CONSFILE *FileOpenPipe PARAMS((int, int));
|
||||
extern CONSFILE *FileOpen PARAMS((const char *, int, int));
|
||||
extern int FileClose PARAMS((CONSFILE **));
|
||||
extern int FileRead PARAMS((CONSFILE *, void *, int));
|
||||
extern int FileWrite PARAMS((CONSFILE *, FLAG, char *, int));
|
||||
extern void FileVWrite PARAMS((CONSFILE *, FLAG, char *, va_list));
|
||||
extern void FilePrint PARAMS((CONSFILE *, FLAG, char *, ...));
|
||||
extern int FileStat PARAMS((CONSFILE *, struct stat *));
|
||||
extern int FileSeek PARAMS((CONSFILE *, off_t, int));
|
||||
extern int FileSend PARAMS((CONSFILE *, const void *, size_t, int));
|
||||
extern int FileFDNum PARAMS((CONSFILE *));
|
||||
extern int FileFDOutNum PARAMS((CONSFILE *));
|
||||
extern int FileUnopen PARAMS((CONSFILE *));
|
||||
extern void OutOfMem PARAMS(());
|
||||
extern char *BuildTmpString PARAMS((const char *));
|
||||
extern char *BuildTmpStringChar PARAMS((const char));
|
||||
extern char *BuildTmpStringPrint PARAMS((char *, ...));
|
||||
extern char *BuildString PARAMS((const char *, STRING *));
|
||||
extern char *BuildStringChar PARAMS((const char, STRING *));
|
||||
extern char *BuildStringPrint PARAMS((STRING *, char *, ...));
|
||||
extern char *BuildStringN PARAMS((const char *, int, STRING *));
|
||||
extern char *ShiftString PARAMS((STRING *, int));
|
||||
extern void InitString PARAMS((STRING *));
|
||||
extern void DestroyString PARAMS((STRING *));
|
||||
extern void DestroyStrings PARAMS((void));
|
||||
extern STRING *AllocString PARAMS((void));
|
||||
extern char *ReadLine PARAMS((FILE *, STRING *, int *));
|
||||
extern enum consFileType FileGetType PARAMS((CONSFILE *));
|
||||
extern void FileSetType PARAMS((CONSFILE *, enum consFileType));
|
||||
extern void FileSetQuoteIAC PARAMS((CONSFILE *, FLAG));
|
||||
extern FLAG FileSawQuoteSusp PARAMS((CONSFILE *));
|
||||
extern FLAG FileSawQuoteExec PARAMS((CONSFILE *));
|
||||
extern FLAG FileSawQuoteAbrt PARAMS((CONSFILE *));
|
||||
extern FLAG FileSawQuoteGoto PARAMS((CONSFILE *));
|
||||
extern void Bye PARAMS((int));
|
||||
extern void DestroyDataStructures PARAMS((void));
|
||||
extern int IsMe PARAMS((char *));
|
||||
extern char *PruneSpace PARAMS((char *));
|
||||
extern int FileCanRead PARAMS((CONSFILE *, fd_set *, fd_set *));
|
||||
extern int FileCanWrite PARAMS((CONSFILE *, fd_set *, fd_set *));
|
||||
extern int FileBufEmpty PARAMS((CONSFILE *));
|
||||
extern int SetFlags PARAMS((int, int, int));
|
||||
extern char *StrDup PARAMS((const char *));
|
||||
extern int ParseIACBuf PARAMS((CONSFILE *, void *, int *));
|
||||
extern void *MemMove PARAMS((void *, void *, size_t));
|
||||
extern char *StringChar PARAMS((STRING *, int, char));
|
||||
extern void ParseFile PARAMS((char *, FILE *, int));
|
||||
extern void ProbeInterfaces PARAMS((in_addr_t));
|
||||
extern void ProcessSubst
|
||||
PARAMS((SUBST *, char **, char **, char *, char *));
|
||||
extern char *MyVersion PARAMS((void));
|
||||
extern unsigned int AtoU PARAMS((char *));
|
||||
extern void StrCpy PARAMS((char *, const char *, unsigned int));
|
||||
#if HAVE_OPENSSL
|
||||
extern SSL *FileGetSSL PARAMS((CONSFILE *));
|
||||
extern void FileSetSSL PARAMS((CONSFILE *, SSL *));
|
||||
extern int SSLVerifyCallback PARAMS((int, X509_STORE_CTX *));
|
||||
extern int FileSSLAccept PARAMS((CONSFILE *));
|
||||
extern int FileCanSSLAccept PARAMS((CONSFILE *, fd_set *, fd_set *));
|
||||
extern const char *StrTime(time_t *);
|
||||
extern void Debug(int, char *, ...);
|
||||
extern void Error(char *, ...);
|
||||
extern void Msg(char *, ...);
|
||||
extern void Verbose(char *, ...);
|
||||
extern void SimpleSignal(int, RETSIGTYPE(*)(int));
|
||||
extern int GetMaxFiles();
|
||||
extern char *FmtCtl(int, STRING *);
|
||||
extern void FmtCtlStr(char *, int, STRING *);
|
||||
extern CONSFILE *FileOpenFD(int, enum consFileType);
|
||||
extern CONSFILE *FileOpenPipe(int, int);
|
||||
extern CONSFILE *FileOpen(const char *, int, int);
|
||||
extern int FileClose(CONSFILE **);
|
||||
extern int FileRead(CONSFILE *, void *, int);
|
||||
extern int FileWrite(CONSFILE *, FLAG, char *, int);
|
||||
extern void FileVWrite(CONSFILE *, FLAG, char *, va_list);
|
||||
extern void FilePrint(CONSFILE *, FLAG, char *, ...);
|
||||
extern int FileStat(CONSFILE *, struct stat *);
|
||||
extern int FileSeek(CONSFILE *, off_t, int);
|
||||
extern int FileSend(CONSFILE *, const void *, size_t, int);
|
||||
extern int FileFDNum(CONSFILE *);
|
||||
extern int FileFDOutNum(CONSFILE *);
|
||||
extern int FileUnopen(CONSFILE *);
|
||||
extern void OutOfMem();
|
||||
extern char *BuildTmpString(const char *);
|
||||
extern char *BuildTmpStringChar(const char);
|
||||
extern char *BuildTmpStringPrint(char *, ...);
|
||||
extern char *BuildString(const char *, STRING *);
|
||||
extern char *BuildStringChar(const char, STRING *);
|
||||
extern char *BuildStringPrint(STRING *, char *, ...);
|
||||
extern char *BuildStringN(const char *, int, STRING *);
|
||||
extern char *ShiftString(STRING *, int);
|
||||
extern void InitString(STRING *);
|
||||
extern void DestroyString(STRING *);
|
||||
extern void DestroyStrings(void);
|
||||
extern STRING *AllocString(void);
|
||||
extern char *ReadLine(FILE *, STRING *, int *);
|
||||
extern enum consFileType FileGetType(CONSFILE *);
|
||||
extern void FileSetType(CONSFILE *, enum consFileType);
|
||||
extern void FileSetQuoteIAC(CONSFILE *, FLAG);
|
||||
extern FLAG FileSawQuoteSusp(CONSFILE *);
|
||||
extern FLAG FileSawQuoteExec(CONSFILE *);
|
||||
extern FLAG FileSawQuoteAbrt(CONSFILE *);
|
||||
extern FLAG FileSawQuoteGoto(CONSFILE *);
|
||||
extern void Bye(int);
|
||||
extern void DestroyDataStructures(void);
|
||||
extern int IsMe(char *);
|
||||
extern char *PruneSpace(char *);
|
||||
extern int FileCanRead(CONSFILE *, fd_set *, fd_set *);
|
||||
extern int FileCanWrite(CONSFILE *, fd_set *, fd_set *);
|
||||
extern int FileBufEmpty(CONSFILE *);
|
||||
extern int SetFlags(int, int, int);
|
||||
extern char *StrDup(const char *);
|
||||
extern int ParseIACBuf(CONSFILE *, void *, int *);
|
||||
extern void *MemMove(void *, void *, size_t);
|
||||
extern char *StringChar(STRING *, int, char);
|
||||
extern void ParseFile(char *, FILE *, int);
|
||||
#if !USE_IPV6
|
||||
extern void ProbeInterfaces(in_addr_t);
|
||||
#endif
|
||||
extern void ProcessSubst(SUBST *, char **, char **, char *, char *);
|
||||
extern char *MyVersion(void);
|
||||
extern unsigned int AtoU(char *);
|
||||
extern void StrCpy(char *, const char *, unsigned int);
|
||||
#if HAVE_OPENSSL
|
||||
extern SSL *FileGetSSL(CONSFILE *);
|
||||
extern void FileSetSSL(CONSFILE *, SSL *);
|
||||
extern int SSLVerifyCallback(int, X509_STORE_CTX *);
|
||||
extern int FileSSLAccept(CONSFILE *);
|
||||
extern int FileCanSSLAccept(CONSFILE *, fd_set *, fd_set *);
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fallback.c,v 5.61 2004/04/16 16:58:09 bryan Exp $
|
||||
* $Id: fallback.c,v 5.62 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -27,44 +27,38 @@
|
||||
* packages, i think things are ok...hopefully it's true!
|
||||
*/
|
||||
static int
|
||||
#if PROTOTYPES
|
||||
GetPseudoTTY(STRING *slave, int *slaveFD)
|
||||
#else
|
||||
GetPseudoTTY(slave, slaveFD)
|
||||
STRING *slave;
|
||||
int *slaveFD;
|
||||
#endif
|
||||
{
|
||||
#if HAVE_OPENPTY
|
||||
int fd = -1;
|
||||
int sfd = -1;
|
||||
int opty = 0;
|
||||
char *pcName;
|
||||
#if HAVE_SIGACTION
|
||||
# if HAVE_SIGACTION
|
||||
sigset_t oldmask, newmask;
|
||||
#else
|
||||
extern RETSIGTYPE FlagReapVirt PARAMS((int));
|
||||
#endif
|
||||
# else
|
||||
extern RETSIGTYPE FlagReapVirt(int);
|
||||
# endif
|
||||
|
||||
#if HAVE_SIGACTION
|
||||
# if HAVE_SIGACTION
|
||||
sigemptyset(&newmask);
|
||||
sigaddset(&newmask, SIGCHLD);
|
||||
if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0)
|
||||
Error("GetPseudoTTY(): sigprocmask(SIG_BLOCK): %s",
|
||||
strerror(errno));
|
||||
#else
|
||||
# else
|
||||
SimpleSignal(SIGCHLD, SIG_DFL);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
opty = openpty(&fd, &sfd, NULL, NULL, NULL);
|
||||
|
||||
#if HAVE_SIGACTION
|
||||
# if HAVE_SIGACTION
|
||||
if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0)
|
||||
Error("GetPseudoTTY(): sigprocmask(SIG_SETMASK): %s",
|
||||
strerror(errno));
|
||||
#else
|
||||
# else
|
||||
SimpleSignal(SIGCHLD, FlagReapVirt);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
if (opty != 0) {
|
||||
if (fd >= 0)
|
||||
@ -84,15 +78,15 @@ GetPseudoTTY(slave, slaveFD)
|
||||
*slaveFD = sfd;
|
||||
return fd;
|
||||
#else
|
||||
#if (HAVE_PTSNAME && HAVE_GRANTPT && HAVE_UNLOCKPT) || defined(_AIX)
|
||||
# if (HAVE_PTSNAME && HAVE_GRANTPT && HAVE_UNLOCKPT) || defined(_AIX)
|
||||
int fd = -1;
|
||||
int sfd = -1;
|
||||
char *pcName;
|
||||
#if HAVE_SIGACTION
|
||||
# if HAVE_SIGACTION
|
||||
sigset_t oldmask, newmask;
|
||||
#else
|
||||
extern RETSIGTYPE FlagReapVirt PARAMS((int));
|
||||
#endif
|
||||
# else
|
||||
extern RETSIGTYPE FlagReapVirt(int);
|
||||
# endif
|
||||
int c;
|
||||
/* clone list and idea stolen from xemacs distribution */
|
||||
static char *clones[] = {
|
||||
@ -111,48 +105,48 @@ GetPseudoTTY(slave, slaveFD)
|
||||
if (fd < 0)
|
||||
return -1;
|
||||
|
||||
#if HAVE_SIGACTION
|
||||
# if HAVE_SIGACTION
|
||||
sigemptyset(&newmask);
|
||||
sigaddset(&newmask, SIGCHLD);
|
||||
if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0)
|
||||
Error("GetPseudoTTY(): sigprocmask(SIG_BLOCK): %s",
|
||||
strerror(errno));
|
||||
#else
|
||||
# else
|
||||
SimpleSignal(SIGCHLD, SIG_DFL);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
#if HAVE_GRANTPT
|
||||
# if HAVE_GRANTPT
|
||||
grantpt(fd); /* change permission of slave */
|
||||
#endif
|
||||
# endif
|
||||
|
||||
#if HAVE_SIGACTION
|
||||
# if HAVE_SIGACTION
|
||||
if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0)
|
||||
Error("GetPseudoTTY(): sigprocmask(SIG_SETMASK): %s",
|
||||
strerror(errno));
|
||||
#else
|
||||
# else
|
||||
SimpleSignal(SIGCHLD, FlagReapVirt);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
#if HAVE_UNLOCKPT
|
||||
# if HAVE_UNLOCKPT
|
||||
unlockpt(fd); /* unlock slave */
|
||||
#endif
|
||||
# endif
|
||||
|
||||
#if defined(_AIX)
|
||||
# if defined(_AIX)
|
||||
if ((pcName = ttyname(fd)) == (char *)0) {
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
# if HAVE_PTSNAME
|
||||
# else
|
||||
# if HAVE_PTSNAME
|
||||
if ((pcName = ptsname(fd)) == (char *)0) {
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
# else
|
||||
# else
|
||||
close(fd);
|
||||
return -1;
|
||||
# endif
|
||||
#endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* go ahead and open the slave */
|
||||
if ((sfd = open(pcName, O_RDWR, 0)) < 0) {
|
||||
@ -166,7 +160,7 @@ GetPseudoTTY(slave, slaveFD)
|
||||
|
||||
*slaveFD = sfd;
|
||||
return fd;
|
||||
#else
|
||||
# else
|
||||
/*
|
||||
* Below is the string for finding /dev/ptyXX. For each architecture we
|
||||
* leave some pty's world writable because we don't have source for
|
||||
@ -234,7 +228,7 @@ GetPseudoTTY(slave, slaveFD)
|
||||
|
||||
*slaveFD = sfd;
|
||||
return fd;
|
||||
#endif /* (HAVE_PTSNAME && HAVE_GRANTPT && HAVE_UNLOCKPT) || defined(_AIX) */
|
||||
# endif /* (HAVE_PTSNAME && HAVE_GRANTPT && HAVE_UNLOCKPT) || defined(_AIX) */
|
||||
#endif /* HAVE_OPENPTY */
|
||||
}
|
||||
|
||||
@ -242,13 +236,7 @@ GetPseudoTTY(slave, slaveFD)
|
||||
* get a pty using the GetPseudoTTY code above
|
||||
*/
|
||||
int
|
||||
#if PROTOTYPES
|
||||
FallBack(char **slave, int *sfd)
|
||||
#else
|
||||
FallBack(slave, sfd)
|
||||
char **slave;
|
||||
int *sfd;
|
||||
#endif
|
||||
{
|
||||
int fd;
|
||||
static STRING *pcTSlave = (STRING *)0;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: group.h,v 5.51 2013/09/23 23:17:42 bryan Exp $
|
||||
* $Id: group.h,v 5.52 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -64,25 +64,24 @@ typedef struct grpent { /* group info */
|
||||
|
||||
extern time_t timers[];
|
||||
|
||||
extern void Spawn PARAMS((GRPENT *, int));
|
||||
extern int CheckPass PARAMS((char *, char *, FLAG));
|
||||
extern void TagLogfile PARAMS((const CONSENT *, char *, ...));
|
||||
extern void TagLogfileAct PARAMS((const CONSENT *, char *, ...));
|
||||
extern void DestroyGroup PARAMS((GRPENT *));
|
||||
extern void DestroyConsent PARAMS((GRPENT *, CONSENT *));
|
||||
extern void SendClientsMsg PARAMS((CONSENT *, char *));
|
||||
extern void ResetMark PARAMS((void));
|
||||
extern void DestroyConsentUsers PARAMS((CONSENTUSERS **));
|
||||
extern CONSENTUSERS *ConsentFindUser PARAMS((CONSENTUSERS *, char *));
|
||||
extern int ConsentUserOk PARAMS((CONSENTUSERS *, char *));
|
||||
extern void DisconnectClient
|
||||
PARAMS((GRPENT *, CONSCLIENT *, char *, FLAG));
|
||||
extern int ClientAccess PARAMS((CONSENT *, char *));
|
||||
extern void DestroyClient PARAMS((CONSCLIENT *));
|
||||
extern int CheckPasswd PARAMS((CONSCLIENT *, char *, FLAG));
|
||||
extern void DeUtmp PARAMS((GRPENT *, int));
|
||||
extern void ClientWantsWrite PARAMS((CONSCLIENT *));
|
||||
extern void SendIWaitClientsMsg PARAMS((CONSENT *, char *));
|
||||
extern void Spawn(GRPENT *, int);
|
||||
extern int CheckPass(char *, char *, FLAG);
|
||||
extern void TagLogfile(const CONSENT *, char *, ...);
|
||||
extern void TagLogfileAct(const CONSENT *, char *, ...);
|
||||
extern void DestroyGroup(GRPENT *);
|
||||
extern void DestroyConsent(GRPENT *, CONSENT *);
|
||||
extern void SendClientsMsg(CONSENT *, char *);
|
||||
extern void ResetMark(void);
|
||||
extern void DestroyConsentUsers(CONSENTUSERS **);
|
||||
extern CONSENTUSERS *ConsentFindUser(CONSENTUSERS *, char *);
|
||||
extern int ConsentUserOk(CONSENTUSERS *, char *);
|
||||
extern void DisconnectClient(GRPENT *, CONSCLIENT *, char *, FLAG);
|
||||
extern int ClientAccess(CONSENT *, char *);
|
||||
extern void DestroyClient(CONSCLIENT *);
|
||||
extern int CheckPasswd(CONSCLIENT *, char *, FLAG);
|
||||
extern void DeUtmp(GRPENT *, int);
|
||||
extern void ClientWantsWrite(CONSCLIENT *);
|
||||
extern void SendIWaitClientsMsg(CONSENT *, char *);
|
||||
#if HAVE_OPENSSL
|
||||
extern int AttemptSSL PARAMS((CONSCLIENT *));
|
||||
extern int AttemptSSL(CONSCLIENT *);
|
||||
#endif
|
||||
|
327
conserver/main.c
327
conserver/main.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: main.c,v 5.210 2014/04/04 16:17:10 bryan Exp $
|
||||
* $Id: main.c,v 5.212 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -54,9 +54,15 @@ int fAll = 0, fNoinit = 0, fVersion = 0, fStrip = 0, fReopen =
|
||||
|
||||
char *pcConfig = CONFIGFILE;
|
||||
int cMaxMemb = MAXMEMB;
|
||||
#if USE_IPV6
|
||||
struct addrinfo *bindAddr;
|
||||
struct addrinfo *bindBaseAddr;
|
||||
#else
|
||||
in_addr_t bindAddr = INADDR_ANY;
|
||||
unsigned short bindPort;
|
||||
unsigned short bindBasePort;
|
||||
struct sockaddr_in in_port;
|
||||
#endif
|
||||
static STRING *startedMsg = (STRING *)0;
|
||||
CONFIG *optConf = (CONFIG *)0;
|
||||
CONFIG *config = (CONFIG *)0;
|
||||
@ -73,7 +79,6 @@ CONFIG defConfig =
|
||||
#endif
|
||||
};
|
||||
|
||||
struct sockaddr_in in_port;
|
||||
CONSFILE *unifiedlog = (CONSFILE *)0;
|
||||
|
||||
#if HAVE_DMALLOC && DMALLOC_MARK_MAIN
|
||||
@ -89,11 +94,7 @@ DH *dh4096 = (DH *)0;
|
||||
|
||||
|
||||
DH *
|
||||
#if PROTOTYPES
|
||||
GetDH512(void)
|
||||
#else
|
||||
GetDH512()
|
||||
#endif
|
||||
{
|
||||
static unsigned char dh512_p[] = {
|
||||
0xF5, 0x2A, 0xFF, 0x3C, 0xE1, 0xB1, 0x29, 0x40, 0x18, 0x11, 0x8D,
|
||||
@ -121,11 +122,7 @@ GetDH512()
|
||||
}
|
||||
|
||||
DH *
|
||||
#if PROTOTYPES
|
||||
GetDH1024(void)
|
||||
#else
|
||||
GetDH1024()
|
||||
#endif
|
||||
{
|
||||
static unsigned char dh1024_p[] = {
|
||||
0xF4, 0x88, 0xFD, 0x58, 0x4E, 0x49, 0xDB, 0xCD, 0x20, 0xB4, 0x9D,
|
||||
@ -159,11 +156,7 @@ GetDH1024()
|
||||
}
|
||||
|
||||
DH *
|
||||
#if PROTOTYPES
|
||||
GetDH2048(void)
|
||||
#else
|
||||
GetDH2048()
|
||||
#endif
|
||||
{
|
||||
static unsigned char dh2048_p[] = {
|
||||
0xF6, 0x42, 0x57, 0xB7, 0x08, 0x7F, 0x08, 0x17, 0x72, 0xA2, 0xBA,
|
||||
@ -210,11 +203,7 @@ GetDH2048()
|
||||
}
|
||||
|
||||
DH *
|
||||
#if PROTOTYPES
|
||||
GetDH4096(void)
|
||||
#else
|
||||
GetDH4096()
|
||||
#endif
|
||||
{
|
||||
static unsigned char dh4096_p[] = {
|
||||
0xFA, 0x14, 0x72, 0x52, 0xC1, 0x4D, 0xE1, 0x5A, 0x49, 0xD4, 0xEF,
|
||||
@ -287,14 +276,7 @@ GetDH4096()
|
||||
}
|
||||
|
||||
DH *
|
||||
#if PROTOTYPES
|
||||
TmpDHCallback(SSL *ssl, int is_export, int keylength)
|
||||
#else
|
||||
TmpDHCallback(ssl, is_export, keylength)
|
||||
SSL *ssl;
|
||||
int is_export;
|
||||
int keylength;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TmpDHCallback(): asked for a DH key length %u",
|
||||
keylength));
|
||||
@ -319,11 +301,7 @@ TmpDHCallback(ssl, is_export, keylength)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SetupSSL(void)
|
||||
#else
|
||||
SetupSSL()
|
||||
#endif
|
||||
{
|
||||
if (ctx == (SSL_CTX *)0) {
|
||||
char *ciphers;
|
||||
@ -411,11 +389,7 @@ 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];
|
||||
@ -443,11 +417,7 @@ SetupGSSAPI()
|
||||
#endif
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ReopenLogfile(void)
|
||||
#else
|
||||
ReopenLogfile()
|
||||
#endif
|
||||
{
|
||||
static int tag = 1;
|
||||
/* redirect stdout and stderr to the logfile.
|
||||
@ -489,11 +459,7 @@ ReopenLogfile()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ReopenUnifiedlog(void)
|
||||
#else
|
||||
ReopenUnifiedlog()
|
||||
#endif
|
||||
{
|
||||
/* close any existing */
|
||||
if (unifiedlog != (CONSFILE *)0)
|
||||
@ -516,11 +482,7 @@ ReopenUnifiedlog()
|
||||
/* become a daemon (ksb)
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
Daemonize()
|
||||
#else
|
||||
Daemonize()
|
||||
#endif
|
||||
Daemonize(void)
|
||||
{
|
||||
int res;
|
||||
#if !HAVE_SETSID
|
||||
@ -581,12 +543,7 @@ Daemonize()
|
||||
/* output a long message to the user (ksb)
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
Usage(int wantfull)
|
||||
#else
|
||||
Usage(wantfull)
|
||||
int wantfull;
|
||||
#endif
|
||||
{
|
||||
static char u_terse[] =
|
||||
"[-7dDEFhinoRSuvV] [-a type] [-m max] [-M master] [-p port] [-b port] [-c cred] [-C config] [-P passwd] [-L logfile] [-O min] [-U logfile]";
|
||||
@ -645,11 +602,7 @@ Usage(wantfull)
|
||||
/* show the user our version info (ksb)
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
Version()
|
||||
#else
|
||||
Version()
|
||||
#endif
|
||||
Version(void)
|
||||
{
|
||||
static STRING *acA1 = (STRING *)0;
|
||||
static STRING *acA2 = (STRING *)0;
|
||||
@ -723,12 +676,12 @@ Version()
|
||||
BuildStringChar('0' + DMALLOC_VERSION_MINOR, acA1);
|
||||
BuildStringChar('.', acA1);
|
||||
BuildStringChar('0' + DMALLOC_VERSION_PATCH, acA1);
|
||||
#if defined(DMALLOC_VERSION_BETA)
|
||||
# if defined(DMALLOC_VERSION_BETA)
|
||||
if (DMALLOC_VERSION_BETA != 0) {
|
||||
BuildString("-b", acA1);
|
||||
BuildStringChar('0' + DMALLOC_VERSION_BETA, acA1);
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
Msg("dmalloc version: %s", acA1->string);
|
||||
#endif
|
||||
#if HAVE_FREEIPMI
|
||||
@ -751,11 +704,7 @@ Version()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DestroyDataStructures(void)
|
||||
#else
|
||||
DestroyDataStructures()
|
||||
#endif
|
||||
{
|
||||
GRPENT *pGE;
|
||||
REMOTE *pRC;
|
||||
@ -798,8 +747,14 @@ DestroyDataStructures()
|
||||
DH_free(dh4096);
|
||||
#endif
|
||||
|
||||
#if USE_IPV6
|
||||
/* clean up addrinfo stucts */
|
||||
freeaddrinfo(bindAddr);
|
||||
freeaddrinfo(bindBaseAddr);
|
||||
#else
|
||||
if (myAddrs != (struct in_addr *)0)
|
||||
free(myAddrs);
|
||||
#endif
|
||||
|
||||
DestroyBreakList();
|
||||
DestroyTaskList();
|
||||
@ -810,11 +765,7 @@ DestroyDataStructures()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SummarizeDataStructures(void)
|
||||
#else
|
||||
SummarizeDataStructures()
|
||||
#endif
|
||||
{
|
||||
GRPENT *pGE;
|
||||
REMOTE *pRC;
|
||||
@ -943,11 +894,7 @@ SummarizeDataStructures()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DumpDataStructures(void)
|
||||
#else
|
||||
DumpDataStructures()
|
||||
#endif
|
||||
{
|
||||
GRPENT *pGE;
|
||||
CONSENT *pCE;
|
||||
@ -1149,17 +1096,14 @@ DumpDataStructures()
|
||||
*/
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
int
|
||||
#if PROTOTYPES
|
||||
VerifyEmptyDirectory(char *d)
|
||||
#else
|
||||
VerifyEmptyDirectory(d)
|
||||
char *d;
|
||||
#endif
|
||||
{
|
||||
struct stat dstat;
|
||||
DIR *dir;
|
||||
struct dirent *de;
|
||||
# if 0 /* See below */
|
||||
STRING *path = (STRING *)0;
|
||||
# endif
|
||||
int retval = 0;
|
||||
|
||||
while (1) {
|
||||
@ -1200,7 +1144,7 @@ VerifyEmptyDirectory(d)
|
||||
* database, config files, etc. too many important files could be
|
||||
* shredded with a small typo.
|
||||
*/
|
||||
#if 0
|
||||
# if 0
|
||||
if (path == (STRING *)0)
|
||||
path = AllocString();
|
||||
BuildStringPrint(path, "%s/%s", d, de->d_name);
|
||||
@ -1222,11 +1166,16 @@ VerifyEmptyDirectory(d)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
|
||||
# if 0 /* See above */
|
||||
if (path != (STRING *)0)
|
||||
DestroyString(path);
|
||||
# endif
|
||||
|
||||
/* free dir data structure */
|
||||
closedir(dir);
|
||||
|
||||
return retval;
|
||||
}
|
||||
@ -1241,13 +1190,7 @@ VerifyEmptyDirectory(d)
|
||||
* exit happy
|
||||
*/
|
||||
int
|
||||
#if PROTOTYPES
|
||||
main(int argc, char **argv)
|
||||
#else
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
FILE *fpConfig = (FILE *)0;
|
||||
@ -1260,9 +1203,14 @@ main(argc, argv)
|
||||
int curuid = 0;
|
||||
GRPENT *pGE = (GRPENT *)0;
|
||||
#if !USE_UNIX_DOMAIN_SOCKETS
|
||||
#if HAVE_INET_ATON
|
||||
# if USE_IPV6
|
||||
int s;
|
||||
struct addrinfo hints;
|
||||
# else
|
||||
# if HAVE_INET_ATON
|
||||
struct in_addr inetaddr;
|
||||
#endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
isMultiProc = 1; /* make sure stuff has the pid */
|
||||
@ -1460,7 +1408,115 @@ main(argc, argv)
|
||||
if (fSyntaxOnly)
|
||||
Msg("performing configuration file syntax check");
|
||||
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
/* must do all this so IsMe() works right */
|
||||
if (gethostname(myHostname, MAXHOSTNAME) != 0) {
|
||||
Error("gethostname(): %s", strerror(errno));
|
||||
Bye(EX_OSERR);
|
||||
}
|
||||
#if !USE_IPV6
|
||||
ProbeInterfaces(bindAddr);
|
||||
#endif
|
||||
|
||||
/* initialize the timers */
|
||||
for (i = 0; i < T_MAX; i++)
|
||||
timers[i] = (time_t)0;
|
||||
|
||||
/* read the config file */
|
||||
if ((FILE *)0 == (fpConfig = fopen(pcConfig, "r"))) {
|
||||
Error("fopen(%s): %s", pcConfig, strerror(errno));
|
||||
Bye(EX_NOINPUT);
|
||||
}
|
||||
ReadCfg(pcConfig, fpConfig);
|
||||
fclose(fpConfig);
|
||||
|
||||
#if !USE_UNIX_DOMAIN_SOCKETS
|
||||
/* set up the port to bind to */
|
||||
if (optConf->primaryport != (char *)0)
|
||||
config->primaryport = StrDup(optConf->primaryport);
|
||||
else if (pConfig->primaryport != (char *)0)
|
||||
config->primaryport = StrDup(pConfig->primaryport);
|
||||
else
|
||||
config->primaryport = StrDup(defConfig.primaryport);
|
||||
if (config->primaryport == (char *)0)
|
||||
OutOfMem();
|
||||
|
||||
# if !USE_IPV6
|
||||
/* Look for non-numeric characters */
|
||||
for (i = 0; config->primaryport[i] != '\000'; i++)
|
||||
if (!isdigit((int)config->primaryport[i]))
|
||||
break;
|
||||
|
||||
if (config->primaryport[i] == '\000') {
|
||||
/* numeric only */
|
||||
bindPort = atoi(config->primaryport);
|
||||
} else {
|
||||
/* non-numeric only */
|
||||
struct servent *pSE;
|
||||
if ((struct servent *)0 ==
|
||||
(pSE = getservbyname(config->primaryport, "tcp"))) {
|
||||
Error("getservbyname(%s) failed", config->primaryport);
|
||||
Bye(EX_OSERR);
|
||||
} else {
|
||||
bindPort = ntohs((unsigned short)pSE->s_port);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
|
||||
/* set up the secondary port to bind to */
|
||||
if (optConf->secondaryport != (char *)0)
|
||||
config->secondaryport = StrDup(optConf->secondaryport);
|
||||
else if (pConfig->secondaryport != (char *)0)
|
||||
config->secondaryport = StrDup(pConfig->secondaryport);
|
||||
else
|
||||
config->secondaryport = StrDup(defConfig.secondaryport);
|
||||
if (config->secondaryport == (char *)0)
|
||||
OutOfMem();
|
||||
|
||||
# if !USE_IPV6
|
||||
/* Look for non-numeric characters */
|
||||
for (i = 0; config->secondaryport[i] != '\000'; i++)
|
||||
if (!isdigit((int)config->secondaryport[i]))
|
||||
break;
|
||||
|
||||
if (config->secondaryport[i] == '\000') {
|
||||
/* numeric only */
|
||||
bindBasePort = atoi(config->secondaryport);
|
||||
} else {
|
||||
/* non-numeric only */
|
||||
struct servent *pSE;
|
||||
if ((struct servent *)0 ==
|
||||
(pSE = getservbyname(config->secondaryport, "tcp"))) {
|
||||
Error("getservbyname(%s) failed", config->secondaryport);
|
||||
Bye(EX_OSERR);
|
||||
} else {
|
||||
bindBasePort = ntohs((unsigned short)pSE->s_port);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if USE_IPV6
|
||||
/* set up the address to bind to */
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
hints.ai_flags |= AI_PASSIVE;
|
||||
|
||||
/* create list or IPs suitable for primaryport */
|
||||
s = getaddrinfo(interface, config->primaryport, &hints, &bindAddr);
|
||||
if (s) {
|
||||
Error("getaddrinfo(%s): %s", interface, gai_strerror(s));
|
||||
Bye(EX_OSERR);
|
||||
}
|
||||
|
||||
/* create list or IPs suitable for secondaryport */
|
||||
s = getaddrinfo(interface, config->secondaryport, &hints,
|
||||
&bindBaseAddr);
|
||||
if (s) {
|
||||
Error("getaddrinfo(%s): %s", interface, gai_strerror(s));
|
||||
Bye(EX_OSERR);
|
||||
}
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
/* Don't do any redirects if we're purely local
|
||||
* (but it allows them to see where remote consoles are)
|
||||
*/
|
||||
@ -1494,87 +1550,6 @@ main(argc, argv)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* must do all this so IsMe() works right */
|
||||
if (gethostname(myHostname, MAXHOSTNAME) != 0) {
|
||||
Error("gethostname(): %s", strerror(errno));
|
||||
Bye(EX_OSERR);
|
||||
}
|
||||
ProbeInterfaces(bindAddr);
|
||||
|
||||
/* initialize the timers */
|
||||
for (i = 0; i < T_MAX; i++)
|
||||
timers[i] = (time_t)0;
|
||||
|
||||
/* read the config file */
|
||||
if ((FILE *)0 == (fpConfig = fopen(pcConfig, "r"))) {
|
||||
Error("fopen(%s): %s", pcConfig, strerror(errno));
|
||||
Bye(EX_NOINPUT);
|
||||
}
|
||||
ReadCfg(pcConfig, fpConfig);
|
||||
fclose(fpConfig);
|
||||
|
||||
#if !USE_UNIX_DOMAIN_SOCKETS
|
||||
/* set up the port to bind to */
|
||||
if (optConf->primaryport != (char *)0)
|
||||
config->primaryport = StrDup(optConf->primaryport);
|
||||
else if (pConfig->primaryport != (char *)0)
|
||||
config->primaryport = StrDup(pConfig->primaryport);
|
||||
else
|
||||
config->primaryport = StrDup(defConfig.primaryport);
|
||||
if (config->primaryport == (char *)0)
|
||||
OutOfMem();
|
||||
|
||||
/* Look for non-numeric characters */
|
||||
for (i = 0; config->primaryport[i] != '\000'; i++)
|
||||
if (!isdigit((int)config->primaryport[i]))
|
||||
break;
|
||||
|
||||
if (config->primaryport[i] == '\000') {
|
||||
/* numeric only */
|
||||
bindPort = atoi(config->primaryport);
|
||||
} else {
|
||||
/* non-numeric only */
|
||||
struct servent *pSE;
|
||||
if ((struct servent *)0 ==
|
||||
(pSE = getservbyname(config->primaryport, "tcp"))) {
|
||||
Error("getservbyname(%s) failed", config->primaryport);
|
||||
Bye(EX_OSERR);
|
||||
} else {
|
||||
bindPort = ntohs((unsigned short)pSE->s_port);
|
||||
}
|
||||
}
|
||||
|
||||
/* set up the secondary port to bind to */
|
||||
if (optConf->secondaryport != (char *)0)
|
||||
config->secondaryport = StrDup(optConf->secondaryport);
|
||||
else if (pConfig->secondaryport != (char *)0)
|
||||
config->secondaryport = StrDup(pConfig->secondaryport);
|
||||
else
|
||||
config->secondaryport = StrDup(defConfig.secondaryport);
|
||||
if (config->secondaryport == (char *)0)
|
||||
OutOfMem();
|
||||
|
||||
/* Look for non-numeric characters */
|
||||
for (i = 0; config->secondaryport[i] != '\000'; i++)
|
||||
if (!isdigit((int)config->secondaryport[i]))
|
||||
break;
|
||||
|
||||
if (config->secondaryport[i] == '\000') {
|
||||
/* numeric only */
|
||||
bindBasePort = atoi(config->secondaryport);
|
||||
} else {
|
||||
/* non-numeric only */
|
||||
struct servent *pSE;
|
||||
if ((struct servent *)0 ==
|
||||
(pSE = getservbyname(config->secondaryport, "tcp"))) {
|
||||
Error("getservbyname(%s) failed", config->secondaryport);
|
||||
Bye(EX_OSERR);
|
||||
} else {
|
||||
bindBasePort = ntohs((unsigned short)pSE->s_port);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (optConf->passwdfile != (char *)0)
|
||||
config->passwdfile = StrDup(optConf->passwdfile);
|
||||
else if (pConfig->passwdfile != (char *)0)
|
||||
@ -1727,7 +1702,11 @@ main(argc, argv)
|
||||
/* if no one can use us we need to come up with a default
|
||||
*/
|
||||
if (pACList == (ACCESS *)0)
|
||||
#if USE_IPV6
|
||||
SetDefAccess();
|
||||
#else
|
||||
SetDefAccess(myAddrs, myHostname);
|
||||
#endif
|
||||
|
||||
/* spawn all the children, so fix kids has an initial pid
|
||||
*/
|
||||
@ -1749,13 +1728,15 @@ main(argc, argv)
|
||||
local += pGE->imembers;
|
||||
for (pRC = pRCList; (REMOTE *)0 != pRC; pRC = pRC->pRCnext)
|
||||
remote++;
|
||||
# if USE_UNIX_DOMAIN_SOCKETS
|
||||
setproctitle("master: port 0, %d local, %d remote", local,
|
||||
remote);
|
||||
#else
|
||||
setproctitle("master: port %hu, %d local, %d remote", bindPort,
|
||||
setproctitle("master: port %hu, %d local, %d remote",
|
||||
# if USE_IPV6
|
||||
config->primaryport,
|
||||
# elif USE_UNIX_DOMAIN_SOCKETS
|
||||
0,
|
||||
# else
|
||||
bindPort,
|
||||
# endif
|
||||
local, remote);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: main.h,v 5.54 2009/09/26 09:23:04 bryan Exp $
|
||||
* $Id: main.h,v 5.55 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -39,11 +39,16 @@
|
||||
extern char rcsid[];
|
||||
extern int fAll, fNoinit, fInteractive, fStrip, fDaemon, fReopen,
|
||||
fNoautoreup, fSyntaxOnly;
|
||||
#if USE_IPV6
|
||||
extern struct addrinfo *bindAddr;
|
||||
extern struct addrinfo *bindBaseAddr;
|
||||
#else
|
||||
extern in_addr_t bindAddr;
|
||||
extern struct sockaddr_in in_port;
|
||||
#endif
|
||||
extern unsigned short bindPort, bindBasePort;
|
||||
extern char *pcConfig;
|
||||
extern int cMaxMemb;
|
||||
extern struct sockaddr_in in_port;
|
||||
extern CONFIG *optConf;
|
||||
extern CONFIG *config;
|
||||
extern CONFIG defConfig;
|
||||
@ -58,6 +63,6 @@ extern SSL_CTX *ctx;
|
||||
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));
|
||||
extern void ReopenLogfile(void);
|
||||
extern void ReopenUnifiedlog(void);
|
||||
extern void DumpDataStructures(void);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: master.c,v 5.139 2013/09/23 23:17:42 bryan Exp $
|
||||
* $Id: master.c,v 5.141 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -49,12 +49,7 @@ static unsigned long dmallocMarkClientConnection = 0;
|
||||
|
||||
|
||||
static RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagSawCHLD(int sig)
|
||||
#else
|
||||
FlagSawCHLD(sig)
|
||||
int sig;
|
||||
#endif
|
||||
{
|
||||
fSawCHLD = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -66,12 +61,7 @@ FlagSawCHLD(sig)
|
||||
* Called when master process receives SIGCHLD
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
FixKids(int msfd)
|
||||
#else
|
||||
FixKids(msfd)
|
||||
int msfd;
|
||||
#endif
|
||||
{
|
||||
pid_t pid;
|
||||
int UWbuf;
|
||||
@ -135,12 +125,7 @@ FixKids(msfd)
|
||||
* Called when master process receives SIGTERM
|
||||
*/
|
||||
static RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagQuitIt(int arg)
|
||||
#else
|
||||
FlagQuitIt(arg)
|
||||
int arg;
|
||||
#endif
|
||||
{
|
||||
fSawQuit = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -152,12 +137,7 @@ FlagQuitIt(arg)
|
||||
* want to do something special on SIGINT at some point.
|
||||
*/
|
||||
static RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagSawINT(int arg)
|
||||
#else
|
||||
FlagSawINT(arg)
|
||||
int arg;
|
||||
#endif
|
||||
{
|
||||
fSawQuit = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -166,12 +146,7 @@ FlagSawINT(arg)
|
||||
}
|
||||
|
||||
static RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagSawHUP(int arg)
|
||||
#else
|
||||
FlagSawHUP(arg)
|
||||
int arg;
|
||||
#endif
|
||||
{
|
||||
fSawHUP = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -180,12 +155,7 @@ FlagSawHUP(arg)
|
||||
}
|
||||
|
||||
static RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagSawUSR2(int arg)
|
||||
#else
|
||||
FlagSawUSR2(arg)
|
||||
int arg;
|
||||
#endif
|
||||
{
|
||||
fSawUSR2 = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -194,12 +164,7 @@ FlagSawUSR2(arg)
|
||||
}
|
||||
|
||||
static RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagSawUSR1(int arg)
|
||||
#else
|
||||
FlagSawUSR1(arg)
|
||||
int arg;
|
||||
#endif
|
||||
{
|
||||
fSawUSR1 = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -210,12 +175,7 @@ FlagSawUSR1(arg)
|
||||
/* Signal all the kids...
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SignalKids(int arg)
|
||||
#else
|
||||
SignalKids(arg)
|
||||
int arg;
|
||||
#endif
|
||||
{
|
||||
GRPENT *pGE;
|
||||
|
||||
@ -232,12 +192,7 @@ SignalKids(arg)
|
||||
}
|
||||
|
||||
REMOTE *
|
||||
#if PROTOTYPES
|
||||
FindRemoteConsole(char *args)
|
||||
#else
|
||||
FindRemoteConsole(args)
|
||||
char *args;
|
||||
#endif
|
||||
{
|
||||
REMOTE *pRC;
|
||||
NAMES *name;
|
||||
@ -254,13 +209,7 @@ FindRemoteConsole(args)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
CommandCall(CONSCLIENT *pCL, char *args)
|
||||
#else
|
||||
CommandCall(pCL, args)
|
||||
CONSCLIENT *pCL;
|
||||
char *args;
|
||||
#endif
|
||||
{
|
||||
int found;
|
||||
REMOTE *pRC, *pRCFound;
|
||||
@ -383,13 +332,7 @@ CommandCall(pCL, args)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DropMasterClient(CONSCLIENT *pCLServing, FLAG force)
|
||||
#else
|
||||
DropMasterClient(pCLServing, force)
|
||||
CONSCLIENT *pCLServing;
|
||||
FLAG force;
|
||||
#endif
|
||||
{
|
||||
/* if we have data buffered and aren't forced to close,
|
||||
* we can't close quite yet
|
||||
@ -425,12 +368,7 @@ DropMasterClient(pCLServing, force)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DoNormalRead(CONSCLIENT *pCLServing)
|
||||
#else
|
||||
DoNormalRead(pCLServing)
|
||||
CONSCLIENT *pCLServing;
|
||||
#endif
|
||||
{
|
||||
char *pcCmd;
|
||||
char *pcArgs;
|
||||
@ -586,11 +524,9 @@ DoNormalRead(pCLServing)
|
||||
int iSep = 1;
|
||||
|
||||
if ((GRPENT *)0 != pGroups) {
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
FilePrint(pCLServing->fd, FLAGTRUE, "@0");
|
||||
iSep = 0;
|
||||
#else
|
||||
struct sockaddr_in lcl;
|
||||
#if USE_IPV6 || !USE_UNIX_DOMAIN_SOCKETS
|
||||
SOCKADDR_STYPE lcl;
|
||||
|
||||
socklen_t so = sizeof(lcl);
|
||||
if (-1 ==
|
||||
getsockname(FileFDNum(pCLServing->fd),
|
||||
@ -602,10 +538,25 @@ DoNormalRead(pCLServing)
|
||||
FileFDNum(pCLServing->fd), strerror(errno));
|
||||
iSep = -1;
|
||||
} else {
|
||||
# if USE_IPV6
|
||||
int error;
|
||||
char addr[NI_MAXHOST];
|
||||
error =
|
||||
getnameinfo((struct sockaddr *)&lcl, so, addr,
|
||||
sizeof(addr), NULL, 0,
|
||||
NI_NUMERICHOST);
|
||||
if (!error)
|
||||
FilePrint(pCLServing->fd, FLAGTRUE, "@%s",
|
||||
addr);
|
||||
# else
|
||||
FilePrint(pCLServing->fd, FLAGTRUE, "@%s",
|
||||
inet_ntoa(lcl.sin_addr));
|
||||
# endif
|
||||
iSep = 0;
|
||||
}
|
||||
#else
|
||||
FilePrint(pCLServing->fd, FLAGTRUE, "@0");
|
||||
iSep = 0;
|
||||
#endif
|
||||
}
|
||||
if (iSep >= 0) {
|
||||
@ -723,24 +674,24 @@ DoNormalRead(pCLServing)
|
||||
/* this routine is used by the master console server process (ksb)
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
Master(void)
|
||||
#else
|
||||
Master()
|
||||
#endif
|
||||
{
|
||||
int cfd;
|
||||
int msfd;
|
||||
socklen_t so;
|
||||
fd_set rmask, wmask;
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
struct sockaddr_un master_port;
|
||||
static STRING *portPath = (STRING *)0;
|
||||
#else
|
||||
#if USE_IPV6 || !USE_UNIX_DOMAIN_SOCKETS
|
||||
# if USE_IPV6
|
||||
struct addrinfo *rp;
|
||||
# else
|
||||
struct sockaddr_in master_port;
|
||||
# endif
|
||||
# if HAVE_SETSOCKOPT
|
||||
int true = 1;
|
||||
# endif
|
||||
#else
|
||||
struct sockaddr_un master_port;
|
||||
static STRING *portPath = (STRING *)0;
|
||||
#endif
|
||||
FILE *fp;
|
||||
CONSCLIENT *pCLServing = (CONSCLIENT *)0;
|
||||
@ -780,13 +731,44 @@ Master()
|
||||
|
||||
/* set up port for master to listen on
|
||||
*/
|
||||
#if HAVE_MEMSET
|
||||
#if !USE_IPV6
|
||||
# if HAVE_MEMSET
|
||||
memset((void *)&master_port, 0, sizeof(master_port));
|
||||
#else
|
||||
# else
|
||||
bzero((char *)&master_port, sizeof(master_port));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
for (rp = bindAddr; rp != NULL; rp = rp->ai_next) {
|
||||
if ((msfd =
|
||||
socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol)) < 0)
|
||||
continue;
|
||||
|
||||
# if HAVE_SETSOCKOPT
|
||||
if (setsockopt
|
||||
(msfd, SOL_SOCKET, SO_REUSEADDR, (char *)&true,
|
||||
sizeof(true)) < 0)
|
||||
goto fail;
|
||||
# endif
|
||||
if (!SetFlags(msfd, O_NONBLOCK, 0))
|
||||
goto fail;
|
||||
|
||||
if (bind(msfd, rp->ai_addr, rp->ai_addrlen) == 0)
|
||||
break;
|
||||
|
||||
fail:
|
||||
close(msfd);
|
||||
}
|
||||
|
||||
if (listen(msfd, SOMAXCONN) < 0) {
|
||||
Error("Master(): listen(): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
/* save addrlen for accept */
|
||||
so = rp->ai_addrlen;
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
master_port.sun_family = AF_UNIX;
|
||||
|
||||
if (portPath == (STRING *)0)
|
||||
@ -819,6 +801,11 @@ Master()
|
||||
strerror(errno));
|
||||
return;
|
||||
}
|
||||
# ifdef TRUST_UDS_CRED
|
||||
/* Allow everyone to connect, but we later auth them via SO_PEERCRED */
|
||||
chmod(master_port.sun_path, 0666);
|
||||
# endif
|
||||
|
||||
#else
|
||||
master_port.sin_family = AF_INET;
|
||||
master_port.sin_addr.s_addr = bindAddr;
|
||||
@ -985,7 +972,9 @@ Master()
|
||||
dmallocMarkClientConnection = dmalloc_mark();
|
||||
#endif
|
||||
|
||||
#if !USE_IPV6
|
||||
so = sizeof(struct sockaddr_in);
|
||||
#endif
|
||||
for (cfd = 0; cfd == 0;) {
|
||||
cfd =
|
||||
accept(msfd, (struct sockaddr *)&pCLmfree->cnct_port, &so);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: master.h,v 5.17 2003/10/03 14:23:37 bryan Exp $
|
||||
* $Id: master.h,v 5.18 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -39,5 +39,5 @@
|
||||
*/
|
||||
extern CONSCLIENT *pCLmall;
|
||||
extern CONSCLIENT *pCLmfree;
|
||||
extern void Master PARAMS((void));
|
||||
extern void SignalKids PARAMS((int));
|
||||
extern void Master(void);
|
||||
extern void SignalKids(int);
|
||||
|
1179
conserver/readcfg.c
1179
conserver/readcfg.c
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: readcfg.h,v 5.49 2013/09/23 22:58:21 bryan Exp $
|
||||
* $Id: readcfg.h,v 5.50 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -63,12 +63,12 @@ extern SUBST *taskSubst; /* substitution function data for tasks */
|
||||
extern CONFIG *pConfig; /* settings seen by config parser */
|
||||
extern SUBST *substData; /* substitution function data */
|
||||
|
||||
extern void ReadCfg PARAMS((char *, FILE *));
|
||||
extern void ReReadCfg PARAMS((int, int));
|
||||
extern void DestroyBreakList PARAMS((void));
|
||||
extern void DestroyTaskList PARAMS((void));
|
||||
extern void DestroyUserList PARAMS((void));
|
||||
extern void DestroyConfig PARAMS((CONFIG *));
|
||||
extern NAMES *FindUserList PARAMS((char *));
|
||||
extern NAMES *AddUserList PARAMS((char *));
|
||||
extern CONSENT *FindConsoleName PARAMS((CONSENT *, char *));
|
||||
extern void ReadCfg(char *, FILE *);
|
||||
extern void ReReadCfg(int, int);
|
||||
extern void DestroyBreakList(void);
|
||||
extern void DestroyTaskList(void);
|
||||
extern void DestroyUserList(void);
|
||||
extern void DestroyConfig(CONFIG *);
|
||||
extern NAMES *FindUserList(char *);
|
||||
extern NAMES *AddUserList(char *);
|
||||
extern CONSENT *FindConsoleName(CONSENT *, char *);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: version.h,v 1.79 2014/04/02 04:45:32 bryan Exp $
|
||||
* $Id: version.h,v 1.81 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -15,7 +15,7 @@
|
||||
All rights reserved.\n"
|
||||
|
||||
#define VERSION_MAJOR 8
|
||||
#define VERSION_MINOR 1
|
||||
#define VERSION_REV 20
|
||||
#define VERSION_MINOR 2
|
||||
#define VERSION_REV 0
|
||||
#define VERSION_TEXT "conserver.com version"
|
||||
#define VERSION_UINT (VERSION_MAJOR * 1000000 + VERSION_MINOR * 1000 + VERSION_REV)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: console.c,v 5.189 2014/04/02 00:02:47 bryan Exp $
|
||||
* $Id: console.c,v 5.190 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -36,12 +36,16 @@
|
||||
#include <readconf.h>
|
||||
#include <version.h>
|
||||
#if HAVE_OPENSSL
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/opensslv.h>
|
||||
# include <openssl/ssl.h>
|
||||
# include <openssl/err.h>
|
||||
# include <openssl/opensslv.h>
|
||||
#endif
|
||||
#if HAVE_GSSAPI
|
||||
#include <gssapi/gssapi.h>
|
||||
# include <gssapi/gssapi.h>
|
||||
#endif
|
||||
#if USE_IPV6
|
||||
# include <sys/socket.h>
|
||||
# include <netdb.h>
|
||||
#endif
|
||||
|
||||
|
||||
@ -70,11 +74,7 @@ struct winsize ws;
|
||||
SSL_CTX *ctx = (SSL_CTX *)0;
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
SetupSSL(void)
|
||||
#else
|
||||
SetupSSL()
|
||||
#endif
|
||||
{
|
||||
if (ctx == (SSL_CTX *)0) {
|
||||
char *ciphers;
|
||||
@ -120,11 +120,11 @@ SetupSSL()
|
||||
}
|
||||
ciphers = "ALL:!LOW:!EXP:!MD5:!aNULL:@STRENGTH";
|
||||
} else {
|
||||
#if defined(REQ_SERVER_CERT)
|
||||
# if defined(REQ_SERVER_CERT)
|
||||
ciphers = "ALL:!LOW:!EXP:!MD5:!aNULL:@STRENGTH";
|
||||
#else
|
||||
# else
|
||||
ciphers = "ALL:!LOW:!EXP:!MD5:@STRENGTH";
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, SSLVerifyCallback);
|
||||
SSL_CTX_set_options(ctx,
|
||||
@ -142,12 +142,7 @@ SetupSSL()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
AttemptSSL(CONSFILE *pcf)
|
||||
#else
|
||||
AttemptSSL(pcf)
|
||||
CONSFILE *pcf;
|
||||
#endif
|
||||
{
|
||||
SSL *ssl;
|
||||
|
||||
@ -179,12 +174,7 @@ 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;
|
||||
@ -220,12 +210,7 @@ CanGetGSSContext(servername)
|
||||
}
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
AttemptGSSAPI(CONSFILE *pcf)
|
||||
#else
|
||||
AttemptGSSAPI(pcf)
|
||||
CONSFILE *pcf;
|
||||
#endif
|
||||
{
|
||||
OM_uint32 stmaj, stmin;
|
||||
gss_buffer_desc servertok;
|
||||
@ -257,13 +242,7 @@ AttemptGSSAPI(pcf)
|
||||
/* output a control (or plain) character as a UNIX user would expect it (ksb)
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
PutCtlc(int c, FILE *fp)
|
||||
#else
|
||||
PutCtlc(c, fp)
|
||||
int c;
|
||||
FILE *fp;
|
||||
#endif
|
||||
{
|
||||
if (0 != (0200 & c)) {
|
||||
putc('M', fp);
|
||||
@ -285,12 +264,7 @@ PutCtlc(c, fp)
|
||||
/* output a long message to the user
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
Usage(int wantfull)
|
||||
#else
|
||||
Usage(wantfull)
|
||||
int wantfull;
|
||||
#endif
|
||||
{
|
||||
static char *full[] = {
|
||||
"7 strip the high bit off all console data",
|
||||
@ -354,11 +328,7 @@ Usage(wantfull)
|
||||
/* expain who we are and which revision we are (ksb)
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
Version()
|
||||
#else
|
||||
Version()
|
||||
#endif
|
||||
Version(void)
|
||||
{
|
||||
int i;
|
||||
static STRING *acA1 = (STRING *)0;
|
||||
@ -418,12 +388,12 @@ Version()
|
||||
BuildStringChar('0' + DMALLOC_VERSION_MINOR, acA1);
|
||||
BuildStringChar('.', acA1);
|
||||
BuildStringChar('0' + DMALLOC_VERSION_PATCH, acA1);
|
||||
#if defined(DMALLOC_VERSION_BETA)
|
||||
# if defined(DMALLOC_VERSION_BETA)
|
||||
if (DMALLOC_VERSION_BETA != 0) {
|
||||
BuildString("-b", acA1);
|
||||
BuildStringChar('0' + DMALLOC_VERSION_BETA, acA1);
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
Msg("dmalloc version: %s", acA1->string);
|
||||
#endif
|
||||
#if HAVE_OPENSSL
|
||||
@ -441,12 +411,7 @@ Version()
|
||||
* c a plain character
|
||||
*/
|
||||
static int
|
||||
#if PROTOTYPES
|
||||
ParseChar(char **ppcSrc, char *pcOut)
|
||||
#else
|
||||
ParseChar(ppcSrc, pcOut)
|
||||
char **ppcSrc, *pcOut;
|
||||
#endif
|
||||
{
|
||||
int cvt, n;
|
||||
char *pcScan = *ppcSrc;
|
||||
@ -490,11 +455,7 @@ ParseChar(ppcSrc, pcOut)
|
||||
/*
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
ValidateEsc()
|
||||
#else
|
||||
ValidateEsc()
|
||||
#endif
|
||||
ValidateEsc(void)
|
||||
{
|
||||
unsigned char c1, c2;
|
||||
|
||||
@ -517,12 +478,7 @@ ValidateEsc()
|
||||
/* find the two characters that makeup the users escape sequence (ksb)
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
ParseEsc(char *pcText)
|
||||
#else
|
||||
ParseEsc(pcText)
|
||||
char *pcText;
|
||||
#endif
|
||||
{
|
||||
char *pcTemp;
|
||||
char c1, c2;
|
||||
@ -547,16 +503,15 @@ ParseEsc(pcText)
|
||||
* as a side effect we set ThisHost to a short name for this host
|
||||
*/
|
||||
CONSFILE *
|
||||
#if PROTOTYPES
|
||||
GetPort(char *pcToHost, unsigned short sPort)
|
||||
#else
|
||||
GetPort(pcToHost, sPort)
|
||||
char *pcToHost;
|
||||
unsigned short sPort;
|
||||
#endif
|
||||
{
|
||||
int s;
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
int error;
|
||||
char host[NI_MAXHOST];
|
||||
char serv[NI_MAXSERV];
|
||||
struct addrinfo *ai, *rp, hints;
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
struct sockaddr_un port;
|
||||
static STRING *portPath = (STRING *)0;
|
||||
#else
|
||||
@ -564,13 +519,59 @@ GetPort(pcToHost, sPort)
|
||||
struct sockaddr_in port;
|
||||
#endif
|
||||
|
||||
#if HAVE_MEMSET
|
||||
memset((void *)(&port), '\000', sizeof(port));
|
||||
#if USE_IPV6
|
||||
# if HAVE_MEMSET
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
# else
|
||||
bzero(&hints, sizeof(hints));
|
||||
# endif
|
||||
#else
|
||||
# if HAVE_MEMSET
|
||||
memset((void *)(&port), '\000', sizeof(port));
|
||||
# else
|
||||
bzero((char *)(&port), sizeof(port));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
hints.ai_flags = AI_ADDRCONFIG;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
snprintf(serv, sizeof(serv), "%hu", sPort);
|
||||
|
||||
error = getaddrinfo(pcToHost, serv, &hints, &ai);
|
||||
if (error) {
|
||||
Error("getaddrinfo(%s): %s", pcToHost, gai_strerror(error));
|
||||
return (CONSFILE *)0;
|
||||
}
|
||||
|
||||
rp = ai;
|
||||
while (rp) {
|
||||
error =
|
||||
getnameinfo(rp->ai_addr, rp->ai_addrlen, host, sizeof(host),
|
||||
serv, sizeof(serv),
|
||||
NI_NUMERICHOST | NI_NUMERICSERV);
|
||||
if (error) {
|
||||
continue;
|
||||
}
|
||||
CONDDEBUG((1, "GetPort: hostname=%s, ip=%s, port=%s", pcToHost,
|
||||
host, serv));
|
||||
|
||||
/* set up the socket to talk to the server for all consoles
|
||||
* (it will tell us who to talk to to get a real connection)
|
||||
*/
|
||||
s = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
|
||||
if (s != -1) {
|
||||
if (connect(s, rp->ai_addr, rp->ai_addrlen) == 0)
|
||||
goto success;
|
||||
close(s);
|
||||
}
|
||||
rp = rp->ai_next;
|
||||
}
|
||||
Error("Unable to connect to %s:%s", host, serv);
|
||||
return (CONSFILE *)0;
|
||||
success:
|
||||
freeaddrinfo(ai);
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
if (portPath == (STRING *)0)
|
||||
portPath = AllocString();
|
||||
BuildStringPrint(portPath, "%s/%hu", config->master, sPort);
|
||||
@ -663,11 +664,7 @@ static struct termios o_tios;
|
||||
* we really use cbreak at PUCC because we need even parity...
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
C2Raw()
|
||||
#else
|
||||
C2Raw()
|
||||
#endif
|
||||
C2Raw(void)
|
||||
{
|
||||
struct termios n_tios;
|
||||
|
||||
@ -695,11 +692,7 @@ C2Raw()
|
||||
* put the tty back as it was, however that was
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
C2Cooked()
|
||||
#else
|
||||
C2Cooked()
|
||||
#endif
|
||||
C2Cooked(void)
|
||||
{
|
||||
if (!screwy)
|
||||
return;
|
||||
@ -708,11 +701,7 @@ C2Cooked()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DestroyDataStructures(void)
|
||||
#else
|
||||
DestroyDataStructures()
|
||||
#endif
|
||||
{
|
||||
C2Cooked();
|
||||
if (cfstdout != (CONSFILE *)0)
|
||||
@ -721,21 +710,17 @@ DestroyDataStructures()
|
||||
DestroyConfig(optConf);
|
||||
DestroyConfig(config);
|
||||
DestroyTerminal(pTerm);
|
||||
#if !USE_IPV6
|
||||
if (myAddrs != (struct in_addr *)0)
|
||||
free(myAddrs);
|
||||
#endif
|
||||
DestroyStrings();
|
||||
if (substData != (SUBST *)0)
|
||||
free(substData);
|
||||
}
|
||||
|
||||
char *
|
||||
#if PROTOTYPES
|
||||
ReadReply(CONSFILE *fd, FLAG toEOF)
|
||||
#else
|
||||
ReadReply(fd, toEOF)
|
||||
CONSFILE *fd;
|
||||
FLAG toEOF;
|
||||
#endif
|
||||
{
|
||||
int nr;
|
||||
static char buf[1024];
|
||||
@ -787,11 +772,7 @@ ReadReply(fd, toEOF)
|
||||
}
|
||||
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
ReapVirt(void)
|
||||
#else
|
||||
ReapVirt()
|
||||
#endif
|
||||
{
|
||||
pid_t pid;
|
||||
int UWbuf;
|
||||
@ -832,12 +813,7 @@ static sig_atomic_t fSawReapVirt = 0;
|
||||
static
|
||||
#endif
|
||||
RETSIGTYPE
|
||||
#if PROTOTYPES
|
||||
FlagReapVirt(int sig)
|
||||
#else
|
||||
FlagReapVirt(sig)
|
||||
int sig;
|
||||
#endif
|
||||
{
|
||||
fSawReapVirt = 1;
|
||||
#if !HAVE_SIGACTION
|
||||
@ -847,11 +823,7 @@ FlagReapVirt(sig)
|
||||
|
||||
/* invoke the execcmd command */
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ExecCmd(void)
|
||||
#else
|
||||
ExecCmd()
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
pid_t iNewGrp;
|
||||
@ -929,15 +901,15 @@ ExecCmd()
|
||||
close(1);
|
||||
close(0);
|
||||
|
||||
# if HAVE_SETSID
|
||||
#if HAVE_SETSID
|
||||
iNewGrp = setsid();
|
||||
if (-1 == iNewGrp) {
|
||||
Error("ExecCmd(): setsid(): %s", strerror(errno));
|
||||
iNewGrp = thepid;
|
||||
}
|
||||
# else
|
||||
#else
|
||||
iNewGrp = thepid;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
if (dup(pout[0]) != 0 || dup(pin[1]) != 1) {
|
||||
Error("ExecCmd(): fd sync error");
|
||||
@ -957,12 +929,7 @@ ExecCmd()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
GetUserInput(STRING *str)
|
||||
#else
|
||||
GetUserInput(str)
|
||||
STRING *str;
|
||||
#endif
|
||||
{
|
||||
char c;
|
||||
|
||||
@ -1008,12 +975,7 @@ GetUserInput(str)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DoExec(CONSFILE *pcf)
|
||||
#else
|
||||
DoExec(pcf)
|
||||
CONSFILE *pcf;
|
||||
#endif
|
||||
{
|
||||
showExecData = 1;
|
||||
FileWrite(cfstdout, FLAGFALSE, "exec: ", 6);
|
||||
@ -1063,13 +1025,7 @@ DoExec(pcf)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ExpandString(char *str, CONSFILE *c)
|
||||
#else
|
||||
ExpandString(str, c)
|
||||
char *str;
|
||||
CONSFILE *c;
|
||||
#endif
|
||||
{
|
||||
char s;
|
||||
short backslash = 0;
|
||||
@ -1159,15 +1115,7 @@ ExpandString(str, c)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
PrintSubst(CONSFILE *pcf, char *pcMach, char *string, char *subst)
|
||||
#else
|
||||
PrintSubst(pcf, pcMach, string, subst)
|
||||
CONSFILE *pcf;
|
||||
char *pcMach;
|
||||
char *string;
|
||||
char *subst;
|
||||
#endif
|
||||
{
|
||||
if (string == (char *)0)
|
||||
return;
|
||||
@ -1186,13 +1134,7 @@ PrintSubst(pcf, pcMach, string, subst)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
Interact(CONSFILE *pcf, char *pcMach)
|
||||
#else
|
||||
Interact(pcf, pcMach)
|
||||
CONSFILE *pcf;
|
||||
char *pcMach;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
int nc;
|
||||
@ -1415,14 +1357,8 @@ Interact(pcf, pcMach)
|
||||
/* interact with a group server (ksb)
|
||||
*/
|
||||
void
|
||||
#if PROTOTYPES
|
||||
CallUp(CONSFILE *pcf, char *pcMaster, char *pcMach, char *pcHow,
|
||||
char *result)
|
||||
#else
|
||||
CallUp(pcf, pcMaster, pcMach, pcHow, result)
|
||||
CONSFILE *pcf;
|
||||
char *pcMaster, *pcMach, *pcHow, *result;
|
||||
#endif
|
||||
{
|
||||
int fIn = '-';
|
||||
char *r = (char *)0;
|
||||
@ -1606,14 +1542,7 @@ char *cmdarg = (char *)0;
|
||||
* and ask the machine master at pop.stat for more group leaders
|
||||
*/
|
||||
int
|
||||
#if PROTOTYPES
|
||||
DoCmds(char *master, char *pports, int cmdi)
|
||||
#else
|
||||
DoCmds(master, pports, cmdi)
|
||||
char *master;
|
||||
char *pports;
|
||||
int cmdi;
|
||||
#endif
|
||||
{
|
||||
CONSFILE *pcf;
|
||||
char *t;
|
||||
@ -1657,7 +1586,9 @@ DoCmds(master, pports, cmdi)
|
||||
#endif
|
||||
|
||||
if (*ports == '\000') {
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
port = bindPort;
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
port = 0;
|
||||
#else
|
||||
port = htons(bindPort);
|
||||
@ -1666,7 +1597,9 @@ DoCmds(master, pports, cmdi)
|
||||
Error("invalid port spec for %s: `%s'", serverName, ports);
|
||||
continue;
|
||||
} else {
|
||||
#if USE_UNIX_DOMAIN_SOCKETS
|
||||
#if USE_IPV6
|
||||
port = (short)atoi(ports);
|
||||
#elif USE_UNIX_DOMAIN_SOCKETS
|
||||
port = (short)atoi(ports);
|
||||
#else
|
||||
port = htons((short)atoi(ports));
|
||||
@ -1933,13 +1866,7 @@ DoCmds(master, pports, cmdi)
|
||||
* exit happy or sad
|
||||
*/
|
||||
int
|
||||
#if PROTOTYPES
|
||||
main(int argc, char **argv)
|
||||
#else
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
#endif
|
||||
{
|
||||
char *pcCmd;
|
||||
struct passwd *pwdMe = (struct passwd *)0;
|
||||
@ -2230,8 +2157,9 @@ main(argc, argv)
|
||||
Version();
|
||||
Bye(EX_OK);
|
||||
}
|
||||
|
||||
#if !USE_IPV6
|
||||
ProbeInterfaces(INADDR_ANY);
|
||||
#endif
|
||||
|
||||
if (readSystemConf)
|
||||
ReadConf(CLIENTCONFIGFILE, FLAGFALSE);
|
||||
@ -2485,11 +2413,11 @@ main(argc, argv)
|
||||
#if defined(TIOCGWINSZ)
|
||||
if (interact == FLAGTRUE) {
|
||||
int fd;
|
||||
#if HAVE_MEMSET
|
||||
# if HAVE_MEMSET
|
||||
memset((void *)(&ws), '\000', sizeof(ws));
|
||||
#else
|
||||
# else
|
||||
bzero((char *)(&ws), sizeof(ws));
|
||||
#endif
|
||||
# endif
|
||||
if ((fd = open("/dev/tty", O_RDONLY)) != -1) {
|
||||
ioctl(fd, TIOCGWINSZ, &ws);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $Id: console.man,v 1.65 2013/09/25 22:10:30 bryan Exp $
|
||||
.TH CONSOLE 1 "2013/09/25" "conserver-8.1.20" "conserver"
|
||||
.TH CONSOLE 1 "2013/09/25" "conserver-8.2.0" "conserver"
|
||||
.SH NAME
|
||||
console \- console server client program
|
||||
.SH SYNOPSIS
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: getpassword.c,v 1.8 2003/11/20 13:56:41 bryan Exp $
|
||||
* $Id: getpassword.c,v 1.9 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -31,12 +31,7 @@ static STRING *pass = (STRING *)0;
|
||||
* we really use cbreak at PUCC because we need even parity...
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
C2Raw(int fd)
|
||||
#else
|
||||
C2Raw(fd)
|
||||
int fd;
|
||||
#endif
|
||||
{
|
||||
struct termios n_tios;
|
||||
|
||||
@ -64,12 +59,7 @@ C2Raw(fd)
|
||||
* put the tty back as it was, however that was
|
||||
*/
|
||||
static void
|
||||
#if PROTOTYPES
|
||||
C2Normal(int fd)
|
||||
#else
|
||||
C2Normal(fd)
|
||||
int fd;
|
||||
#endif
|
||||
{
|
||||
if (!screwy)
|
||||
return;
|
||||
@ -78,12 +68,7 @@ C2Normal(fd)
|
||||
}
|
||||
|
||||
char *
|
||||
#if PROTOTYPES
|
||||
GetPassword(char *prompt)
|
||||
#else
|
||||
GetPassword(prompt)
|
||||
char *prompt;
|
||||
#endif
|
||||
{
|
||||
int fd;
|
||||
int nc;
|
||||
@ -140,11 +125,7 @@ GetPassword(prompt)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ClearPassword(void)
|
||||
#else
|
||||
ClearPassword()
|
||||
#endif
|
||||
{
|
||||
if (pass == (STRING *)0 || pass->allocated == 0)
|
||||
return;
|
||||
|
@ -1,10 +1,10 @@
|
||||
/*
|
||||
* $Id: getpassword.h,v 1.3 2003/09/11 09:10:58 bryan Exp $
|
||||
* $Id: getpassword.h,v 1.4 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
* Maintainer/Enhancer: Bryan Stansell (bryan@conserver.com)
|
||||
*/
|
||||
|
||||
extern char *GetPassword PARAMS((char *));
|
||||
extern void *ClearPassword PARAMS((void));
|
||||
extern char *GetPassword(char *);
|
||||
extern void *ClearPassword(void);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: readconf.c,v 5.7 2013/09/18 14:31:39 bryan Exp $
|
||||
* $Id: readconf.c,v 5.8 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -19,12 +19,7 @@ TERM *parserTermDefault = (TERM *)0;
|
||||
TERM *pTerm = (TERM *)0;
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DestroyConfig(CONFIG *c)
|
||||
#else
|
||||
DestroyConfig(c)
|
||||
CONFIG *c;
|
||||
#endif
|
||||
{
|
||||
if (c == (CONFIG *)0)
|
||||
return;
|
||||
@ -48,12 +43,7 @@ DestroyConfig(c)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ApplyConfigDefault(CONFIG *c)
|
||||
#else
|
||||
ApplyConfigDefault(c)
|
||||
CONFIG *c;
|
||||
#endif
|
||||
{
|
||||
if (parserConfigDefault == (CONFIG *)0)
|
||||
return;
|
||||
@ -121,12 +111,7 @@ ApplyConfigDefault(c)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigBegin(char *id)
|
||||
#else
|
||||
ConfigBegin(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigBegin(%s) [%s:%d]", id, file, line));
|
||||
if (id == (char *)0 || id[0] == '\000') {
|
||||
@ -144,11 +129,7 @@ ConfigBegin(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigEnd(void)
|
||||
#else
|
||||
ConfigEnd()
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigEnd() [%s:%d]", file, line));
|
||||
|
||||
@ -170,11 +151,7 @@ ConfigEnd()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigAbort(void)
|
||||
#else
|
||||
ConfigAbort()
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigAbort() [%s:%d]", file, line));
|
||||
if (parserConfigTemp == (CONFIG *)0)
|
||||
@ -185,11 +162,7 @@ ConfigAbort()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigDestroy(void)
|
||||
#else
|
||||
ConfigDestroy()
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigDestroy() [%s:%d]", file, line));
|
||||
|
||||
@ -206,12 +179,7 @@ ConfigDestroy()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
DestroyTerminal(TERM *t)
|
||||
#else
|
||||
DestroyTerminal(t)
|
||||
TERM *t;
|
||||
#endif
|
||||
{
|
||||
if (t == (TERM *)0)
|
||||
return;
|
||||
@ -227,12 +195,7 @@ DestroyTerminal(t)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ApplyTermDefault(TERM *t)
|
||||
#else
|
||||
ApplyTermDefault(t)
|
||||
TERM *t;
|
||||
#endif
|
||||
{
|
||||
if (parserTermDefault == (TERM *)0)
|
||||
return;
|
||||
@ -266,12 +229,7 @@ ApplyTermDefault(t)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalBegin(char *id)
|
||||
#else
|
||||
TerminalBegin(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalBegin(%s) [%s:%d]", id, file, line));
|
||||
if (id == (char *)0 || id[0] == '\000') {
|
||||
@ -289,11 +247,7 @@ TerminalBegin(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalEnd(void)
|
||||
#else
|
||||
TerminalEnd()
|
||||
#endif
|
||||
{
|
||||
static char *term = (char *)0;
|
||||
|
||||
@ -323,11 +277,7 @@ TerminalEnd()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalAbort(void)
|
||||
#else
|
||||
TerminalAbort()
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalAbort() [%s:%d]", file, line));
|
||||
if (parserTermTemp == (TERM *)0)
|
||||
@ -338,11 +288,7 @@ TerminalAbort()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalDestroy(void)
|
||||
#else
|
||||
TerminalDestroy()
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalDestroy() [%s:%d]", file, line));
|
||||
|
||||
@ -359,13 +305,7 @@ TerminalDestroy()
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ProcessYesNo(char *id, FLAG *flag)
|
||||
#else
|
||||
ProcessYesNo(id, flag)
|
||||
char *id;
|
||||
FLAG *flag;
|
||||
#endif
|
||||
{
|
||||
if (id == (char *)0 || id[0] == '\000')
|
||||
*flag = FLAGFALSE;
|
||||
@ -378,12 +318,7 @@ ProcessYesNo(id, flag)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemEscape(char *id)
|
||||
#else
|
||||
ConfigItemEscape(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemEscape(%s) [%s:%d]", id, file, line));
|
||||
|
||||
@ -399,12 +334,7 @@ ConfigItemEscape(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemMaster(char *id)
|
||||
#else
|
||||
ConfigItemMaster(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemMaster(%s) [%s:%d]", id, file, line));
|
||||
|
||||
@ -420,12 +350,7 @@ ConfigItemMaster(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemPlayback(char *id)
|
||||
#else
|
||||
ConfigItemPlayback(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -449,12 +374,7 @@ ConfigItemPlayback(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemPort(char *id)
|
||||
#else
|
||||
ConfigItemPort(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemPort(%s) [%s:%d]", id, file, line));
|
||||
|
||||
@ -470,12 +390,7 @@ ConfigItemPort(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemReplay(char *id)
|
||||
#else
|
||||
ConfigItemReplay(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -499,12 +414,7 @@ ConfigItemReplay(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemSslcredentials(char *id)
|
||||
#else
|
||||
ConfigItemSslcredentials(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemSslcredentials(%s) [%s:%d]", id, file, line));
|
||||
#if HAVE_OPENSSL
|
||||
@ -525,12 +435,7 @@ ConfigItemSslcredentials(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemSslcacertificatefile(char *id)
|
||||
#else
|
||||
ConfigItemSslcacertificatefile(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemSslcacertificatefile(%s) [%s:%d]", id, file,
|
||||
line));
|
||||
@ -552,12 +457,7 @@ ConfigItemSslcacertificatefile(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemSslcacertificatepath(char *id)
|
||||
#else
|
||||
ConfigItemSslcacertificatepath(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemSslcacertificatepath(%s) [%s:%d]", id, file,
|
||||
line));
|
||||
@ -579,12 +479,7 @@ ConfigItemSslcacertificatepath(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemSslrequired(char *id)
|
||||
#else
|
||||
ConfigItemSslrequired(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemSslrequired(%s) [%s:%d]", id, file, line));
|
||||
#if HAVE_OPENSSL
|
||||
@ -597,12 +492,7 @@ ConfigItemSslrequired(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemSslenabled(char *id)
|
||||
#else
|
||||
ConfigItemSslenabled(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemSslenabled(%s) [%s:%d]", id, file, line));
|
||||
#if HAVE_OPENSSL
|
||||
@ -614,24 +504,14 @@ ConfigItemSslenabled(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemStriphigh(char *id)
|
||||
#else
|
||||
ConfigItemStriphigh(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemStriphigh(%s) [%s:%d]", id, file, line));
|
||||
ProcessYesNo(id, &(parserConfigTemp->striphigh));
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ConfigItemUsername(char *id)
|
||||
#else
|
||||
ConfigItemUsername(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "ConfigItemUsername(%s) [%s:%d]", id, file, line));
|
||||
|
||||
@ -649,12 +529,7 @@ ConfigItemUsername(id)
|
||||
SUBST *substData = (SUBST *)0;
|
||||
|
||||
SUBSTTOKEN
|
||||
#if PROTOTYPES
|
||||
SubstToken(char c)
|
||||
#else
|
||||
SubstToken(c)
|
||||
char c;
|
||||
#endif
|
||||
{
|
||||
switch (c) {
|
||||
case 'u':
|
||||
@ -666,14 +541,7 @@ SubstToken(c)
|
||||
}
|
||||
|
||||
int
|
||||
#if PROTOTYPES
|
||||
SubstValue(char c, char **s, int *i)
|
||||
#else
|
||||
SubstValue(c, s, i)
|
||||
char c;
|
||||
char **s;
|
||||
int *i;
|
||||
#endif
|
||||
{
|
||||
int retval = 0;
|
||||
|
||||
@ -696,11 +564,7 @@ SubstValue(c, s, i)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
InitSubstCallback(void)
|
||||
#else
|
||||
InitSubstCallback()
|
||||
#endif
|
||||
{
|
||||
if (substData == (SUBST *)0) {
|
||||
if ((substData = (SUBST *)calloc(1, sizeof(SUBST))) == (SUBST *)0)
|
||||
@ -712,12 +576,7 @@ InitSubstCallback()
|
||||
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalItemAttach(char *id)
|
||||
#else
|
||||
TerminalItemAttach(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalItemAttach(%s) [%s:%d]", id, file, line));
|
||||
|
||||
@ -733,12 +592,7 @@ TerminalItemAttach(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalItemAttachsubst(char *id)
|
||||
#else
|
||||
TerminalItemAttachsubst(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalItemAttachsubst(%s) [%s:%d]", id, file, line));
|
||||
ProcessSubst(substData, (char **)0, &(parserTermTemp->attachsubst),
|
||||
@ -746,12 +600,7 @@ TerminalItemAttachsubst(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalItemDetach(char *id)
|
||||
#else
|
||||
TerminalItemDetach(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalItemDetach(%s) [%s:%d]", id, file, line));
|
||||
|
||||
@ -767,12 +616,7 @@ TerminalItemDetach(id)
|
||||
}
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
TerminalItemDetachsubst(char *id)
|
||||
#else
|
||||
TerminalItemDetachsubst(id)
|
||||
char *id;
|
||||
#endif
|
||||
{
|
||||
CONDDEBUG((1, "TerminalItemDetachsubst(%s) [%s:%d]", id, file, line));
|
||||
ProcessSubst(substData, (char **)0, &(parserTermTemp->detachsubst),
|
||||
@ -812,13 +656,7 @@ SECTION sections[] = {
|
||||
};
|
||||
|
||||
void
|
||||
#if PROTOTYPES
|
||||
ReadConf(char *filename, FLAG verbose)
|
||||
#else
|
||||
ReadConf(filename, verbose)
|
||||
char *filename;
|
||||
FLAG verbose;
|
||||
#endif
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: readconf.h,v 5.6 2013/09/18 14:31:39 bryan Exp $
|
||||
* $Id: readconf.h,v 5.7 2014/04/20 06:45:07 bryan Exp $
|
||||
*
|
||||
* Copyright conserver.com, 2000
|
||||
*
|
||||
@ -37,6 +37,6 @@ extern CONFIG *pConfig;
|
||||
extern TERM *pTerm;
|
||||
extern SUBST *substData;
|
||||
|
||||
extern void ReadConf PARAMS((char *, FLAG));
|
||||
extern void DestroyConfig PARAMS((CONFIG *));
|
||||
extern void DestroyTerminal PARAMS((TERM *));
|
||||
extern void ReadConf(char *, FLAG);
|
||||
extern void DestroyConfig(CONFIG *);
|
||||
extern void DestroyTerminal(TERM *);
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
|
||||
%define pkg conserver
|
||||
%define ver 8.1.20
|
||||
%define ver 8.2.0
|
||||
|
||||
# define the name of the machine on which the main conserver
|
||||
# daemon will be running if you don't want to use the default
|
||||
|
@ -1,7 +1,7 @@
|
||||
PKG="conserver"
|
||||
NAME="Console server and client"
|
||||
CATEGORY="system"
|
||||
VERSION="8.1.20"
|
||||
VERSION="8.2.0"
|
||||
DESC="Console server and client"
|
||||
CLASSES=none
|
||||
ARCH=sparc
|
||||
|
Loading…
Reference in New Issue
Block a user