113e3f4d6SMark Murray /* 213e3f4d6SMark Murray * Copyright (c) 1989, 1993 313e3f4d6SMark Murray * The Regents of the University of California. All rights reserved. 413e3f4d6SMark Murray * 513e3f4d6SMark Murray * Redistribution and use in source and binary forms, with or without 613e3f4d6SMark Murray * modification, are permitted provided that the following conditions 713e3f4d6SMark Murray * are met: 813e3f4d6SMark Murray * 1. Redistributions of source code must retain the above copyright 913e3f4d6SMark Murray * notice, this list of conditions and the following disclaimer. 1013e3f4d6SMark Murray * 2. Redistributions in binary form must reproduce the above copyright 1113e3f4d6SMark Murray * notice, this list of conditions and the following disclaimer in the 1213e3f4d6SMark Murray * documentation and/or other materials provided with the distribution. 1313e3f4d6SMark Murray * 3. All advertising materials mentioning features or use of this software 1413e3f4d6SMark Murray * must display the following acknowledgement: 1513e3f4d6SMark Murray * This product includes software developed by the University of 1613e3f4d6SMark Murray * California, Berkeley and its contributors. 1713e3f4d6SMark Murray * 4. Neither the name of the University nor the names of its contributors 1813e3f4d6SMark Murray * may be used to endorse or promote products derived from this software 1913e3f4d6SMark Murray * without specific prior written permission. 2013e3f4d6SMark Murray * 2113e3f4d6SMark Murray * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2213e3f4d6SMark Murray * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2313e3f4d6SMark Murray * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2413e3f4d6SMark Murray * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2513e3f4d6SMark Murray * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2613e3f4d6SMark Murray * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2713e3f4d6SMark Murray * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2813e3f4d6SMark Murray * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2913e3f4d6SMark Murray * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3013e3f4d6SMark Murray * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3113e3f4d6SMark Murray * SUCH DAMAGE. 3213e3f4d6SMark Murray * 3313e3f4d6SMark Murray * @(#)telnetd.h 8.1 (Berkeley) 6/4/93 3413e3f4d6SMark Murray */ 3513e3f4d6SMark Murray 3613e3f4d6SMark Murray 3713e3f4d6SMark Murray #include <config.h> 3813e3f4d6SMark Murray 3913e3f4d6SMark Murray #include <stdio.h> 4013e3f4d6SMark Murray #include <stdarg.h> 4113e3f4d6SMark Murray #include <stdlib.h> 4213e3f4d6SMark Murray #include <string.h> 4313e3f4d6SMark Murray 4413e3f4d6SMark Murray #ifdef HAVE_SYS_TYPES_H 4513e3f4d6SMark Murray #include <sys/types.h> 4613e3f4d6SMark Murray #endif 4713e3f4d6SMark Murray #ifdef HAVE_SYS_PARAM_H 4813e3f4d6SMark Murray #include <sys/param.h> 4913e3f4d6SMark Murray #endif 5013e3f4d6SMark Murray 5113e3f4d6SMark Murray #ifdef HAVE_SYS_SOCKET_H 5213e3f4d6SMark Murray #include <sys/socket.h> 5313e3f4d6SMark Murray #endif 5413e3f4d6SMark Murray #ifdef TIME_WITH_SYS_TIME 5513e3f4d6SMark Murray #include <sys/time.h> 5613e3f4d6SMark Murray #include <time.h> 5713e3f4d6SMark Murray #elif defined(HAVE_SYS_TIME_H) 5813e3f4d6SMark Murray #include <sys/time.h> 5913e3f4d6SMark Murray #else 6013e3f4d6SMark Murray #include <time.h> 6113e3f4d6SMark Murray #endif 6213e3f4d6SMark Murray 6313e3f4d6SMark Murray #ifdef HAVE_SYS_RESOURCE_H 6413e3f4d6SMark Murray #include <sys/resource.h> 6513e3f4d6SMark Murray #endif /* HAVE_SYS_RESOURCE_H */ 6613e3f4d6SMark Murray 6713e3f4d6SMark Murray #ifdef HAVE_SYS_WAIT_H 6813e3f4d6SMark Murray #include <sys/wait.h> 6913e3f4d6SMark Murray #endif 7013e3f4d6SMark Murray 7113e3f4d6SMark Murray #ifdef HAVE_FCNTL_H 7213e3f4d6SMark Murray #include <fcntl.h> 7313e3f4d6SMark Murray #endif 7413e3f4d6SMark Murray #ifdef HAVE_SYS_FILE_H 7513e3f4d6SMark Murray #include <sys/file.h> 7613e3f4d6SMark Murray #endif 7713e3f4d6SMark Murray #ifdef HAVE_SYS_STAT_H 7813e3f4d6SMark Murray #include <sys/stat.h> 7913e3f4d6SMark Murray #endif 8013e3f4d6SMark Murray 8113e3f4d6SMark Murray /* including both <sys/ioctl.h> and <termios.h> in SunOS 4 generates a 8213e3f4d6SMark Murray lot of warnings */ 8313e3f4d6SMark Murray 8413e3f4d6SMark Murray #if defined(HAVE_SYS_IOCTL_H) && SunOS != 40 8513e3f4d6SMark Murray #include <sys/ioctl.h> 8613e3f4d6SMark Murray #endif 8713e3f4d6SMark Murray #ifdef HAVE_SYS_FILIO_H 8813e3f4d6SMark Murray #include <sys/filio.h> 8913e3f4d6SMark Murray #endif 9013e3f4d6SMark Murray 9113e3f4d6SMark Murray #ifdef HAVE_NETINET_IN_H 9213e3f4d6SMark Murray #include <netinet/in.h> 9313e3f4d6SMark Murray #endif 9413e3f4d6SMark Murray #ifdef HAVE_NETINET_IN6_H 9513e3f4d6SMark Murray #include <netinet/in6.h> 9613e3f4d6SMark Murray #endif 9713e3f4d6SMark Murray #ifdef HAVE_NETINET6_IN6_H 9813e3f4d6SMark Murray #include <netinet6/in6.h> 9913e3f4d6SMark Murray #endif 10013e3f4d6SMark Murray 10113e3f4d6SMark Murray #ifdef HAVE_ARPA_INET_H 10213e3f4d6SMark Murray #include <arpa/inet.h> 10313e3f4d6SMark Murray #endif 10413e3f4d6SMark Murray 10513e3f4d6SMark Murray #include <signal.h> 10613e3f4d6SMark Murray #include <errno.h> 10713e3f4d6SMark Murray #ifdef HAVE_NETDB_H 10813e3f4d6SMark Murray #include <netdb.h> 10913e3f4d6SMark Murray #endif 11013e3f4d6SMark Murray #ifdef HAVE_SYSLOG_H 11113e3f4d6SMark Murray #include <syslog.h> 11213e3f4d6SMark Murray #endif 11313e3f4d6SMark Murray #include <ctype.h> 11413e3f4d6SMark Murray 11513e3f4d6SMark Murray #ifdef HAVE_UNISTD_H 11613e3f4d6SMark Murray #include <unistd.h> 11713e3f4d6SMark Murray #endif 11813e3f4d6SMark Murray 11913e3f4d6SMark Murray #include <termios.h> 12013e3f4d6SMark Murray 12113e3f4d6SMark Murray #ifdef HAVE_PTY_H 12213e3f4d6SMark Murray #include <pty.h> 12313e3f4d6SMark Murray #endif 12413e3f4d6SMark Murray 125c19800e8SDoug Rabson #ifdef STREAMSPTY 126c19800e8SDoug Rabson #ifdef HAVE_SAC_H 127c19800e8SDoug Rabson #include <sac.h> 128c19800e8SDoug Rabson #endif 129c19800e8SDoug Rabson #ifdef HAVE_SYS_STROPTS_H 130c19800e8SDoug Rabson #include <sys/stropts.h> 131c19800e8SDoug Rabson #endif 132c19800e8SDoug Rabson 133c19800e8SDoug Rabson # include <stropts.h> 134c19800e8SDoug Rabson 135c19800e8SDoug Rabson #ifdef HAVE_SYS_UIO_H 136c19800e8SDoug Rabson #include <sys/uio.h> 137c19800e8SDoug Rabson #ifdef __hpux 138c19800e8SDoug Rabson #undef SE 139c19800e8SDoug Rabson #endif 140c19800e8SDoug Rabson #endif 141c19800e8SDoug Rabson #ifdef HAVE_SYS_STREAM_H 142c19800e8SDoug Rabson #include <sys/stream.h> 143c19800e8SDoug Rabson #endif 144c19800e8SDoug Rabson 145c19800e8SDoug Rabson #endif /* STREAMSPTY */ 146c19800e8SDoug Rabson 147c19800e8SDoug Rabson #undef NOERROR 148c19800e8SDoug Rabson 14913e3f4d6SMark Murray #include "defs.h" 15013e3f4d6SMark Murray 15113e3f4d6SMark Murray #ifndef _POSIX_VDISABLE 15213e3f4d6SMark Murray # ifdef VDISABLE 15313e3f4d6SMark Murray # define _POSIX_VDISABLE VDISABLE 15413e3f4d6SMark Murray # else 15513e3f4d6SMark Murray # define _POSIX_VDISABLE ((unsigned char)'\377') 15613e3f4d6SMark Murray # endif 15713e3f4d6SMark Murray #endif 15813e3f4d6SMark Murray 15913e3f4d6SMark Murray 16013e3f4d6SMark Murray #ifdef HAVE_SYS_PTY_H 16113e3f4d6SMark Murray #include <sys/pty.h> 16213e3f4d6SMark Murray #endif 16313e3f4d6SMark Murray #ifdef HAVE_SYS_SELECT_H 16413e3f4d6SMark Murray #include <sys/select.h> 16513e3f4d6SMark Murray #endif 16613e3f4d6SMark Murray 16713e3f4d6SMark Murray #ifdef HAVE_SYS_PTYIO_H 16813e3f4d6SMark Murray #include <sys/ptyio.h> 16913e3f4d6SMark Murray #endif 17013e3f4d6SMark Murray 17113e3f4d6SMark Murray #ifdef HAVE_SYS_UTSNAME_H 17213e3f4d6SMark Murray #include <sys/utsname.h> 17313e3f4d6SMark Murray #endif 17413e3f4d6SMark Murray 17513e3f4d6SMark Murray #ifdef HAVE_PATHS_H 17613e3f4d6SMark Murray #include <paths.h> 17713e3f4d6SMark Murray #endif 17813e3f4d6SMark Murray 1795e9cd1aeSAssar Westerlund #ifdef HAVE_ARPA_TELNET_H 1805e9cd1aeSAssar Westerlund #include <arpa/telnet.h> 1815e9cd1aeSAssar Westerlund #endif 1825e9cd1aeSAssar Westerlund 1835e9cd1aeSAssar Westerlund #include "ext.h" 1845e9cd1aeSAssar Westerlund 18513e3f4d6SMark Murray #ifdef SOCKS 18613e3f4d6SMark Murray #include <socks.h> 18713e3f4d6SMark Murray /* This doesn't belong here. */ 18813e3f4d6SMark Murray struct tm *localtime(const time_t *); 18913e3f4d6SMark Murray struct hostent *gethostbyname(const char *); 19013e3f4d6SMark Murray #endif 19113e3f4d6SMark Murray 19213e3f4d6SMark Murray #ifdef AUTHENTICATION 19313e3f4d6SMark Murray #include <libtelnet/auth.h> 19413e3f4d6SMark Murray #include <libtelnet/misc.h> 19513e3f4d6SMark Murray #ifdef ENCRYPTION 19613e3f4d6SMark Murray #include <libtelnet/encrypt.h> 19713e3f4d6SMark Murray #endif 19813e3f4d6SMark Murray #endif 19913e3f4d6SMark Murray 20013e3f4d6SMark Murray #ifdef HAVE_LIBUTIL_H 20113e3f4d6SMark Murray #include <libutil.h> 20213e3f4d6SMark Murray #endif 20313e3f4d6SMark Murray 20413e3f4d6SMark Murray #include <roken.h> 20513e3f4d6SMark Murray 20613e3f4d6SMark Murray /* Don't use the system login, use our version instead */ 20713e3f4d6SMark Murray 20813e3f4d6SMark Murray /* BINDIR should be defined somewhere else... */ 20913e3f4d6SMark Murray 21013e3f4d6SMark Murray #ifndef BINDIR 21113e3f4d6SMark Murray #define BINDIR "/usr/athena/bin" 21213e3f4d6SMark Murray #endif 21313e3f4d6SMark Murray 21413e3f4d6SMark Murray #undef _PATH_LOGIN 21513e3f4d6SMark Murray #define _PATH_LOGIN BINDIR "/login" 21613e3f4d6SMark Murray 21713e3f4d6SMark Murray /* fallbacks */ 21813e3f4d6SMark Murray 21913e3f4d6SMark Murray #ifndef _PATH_DEV 22013e3f4d6SMark Murray #define _PATH_DEV "/dev/" 22113e3f4d6SMark Murray #endif 22213e3f4d6SMark Murray 22313e3f4d6SMark Murray #ifndef _PATH_TTY 22413e3f4d6SMark Murray #define _PATH_TTY "/dev/tty" 22513e3f4d6SMark Murray #endif /* _PATH_TTY */ 22613e3f4d6SMark Murray 22713e3f4d6SMark Murray #ifdef DIAGNOSTICS 22813e3f4d6SMark Murray #define DIAG(a,b) if (diagnostic & (a)) b 22913e3f4d6SMark Murray #else 23013e3f4d6SMark Murray #define DIAG(a,b) 23113e3f4d6SMark Murray #endif 23213e3f4d6SMark Murray 23313e3f4d6SMark Murray /* other external variables */ 23413e3f4d6SMark Murray extern char **environ; 23513e3f4d6SMark Murray 23613e3f4d6SMark Murray /* prototypes */ 23713e3f4d6SMark Murray 23813e3f4d6SMark Murray /* appends data to nfrontp and advances */ 23913e3f4d6SMark Murray int output_data (const char *format, ...) 24013e3f4d6SMark Murray #ifdef __GNUC__ 24113e3f4d6SMark Murray __attribute__ ((format (printf, 1, 2))) 24213e3f4d6SMark Murray #endif 24313e3f4d6SMark Murray ; 244c19800e8SDoug Rabson 245c19800e8SDoug Rabson #ifdef ENCRYPTION 246c19800e8SDoug Rabson extern int require_encryption; 247c19800e8SDoug Rabson #endif 248