X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Ftcpdchk.c;h=f98417033ff669a6446a0871009249494c859d59;hp=5b9d234167e1ae71e0f77d6a381b2f9dbd0fc7b6;hb=a6b61b9f8b6576e8159a4e7e6aee88bba7e5d07d;hpb=c6e47cbbff56f39f6d81b079ebaeac41d793d4d9 diff --git a/src/tcpdchk.c b/src/tcpdchk.c index 5b9d234..f984170 100644 --- a/src/tcpdchk.c +++ b/src/tcpdchk.c @@ -1,100 +1,108 @@ -/* - * Copyright (c) 1995-2000, Index Data +/* This file is part of the YAZ toolkit. + * Copyright (C) Index Data * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: tcpdchk.c,v $ - * Revision 1.1 2003-10-27 12:21:35 adam - * Source restructure. yaz-marcdump part of installation - * - * Revision 1.5 2000/02/28 11:20:06 adam - * Using autoconf. New definitions: YAZ_BEGIN_CDECL/YAZ_END_CDECL. - * - * Revision 1.4 1999/11/30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.3 1999/08/27 09:40:32 adam - * Renamed logf function to yaz_log. Removed VC++ project files. - * - * Revision 1.2 1999/04/20 09:56:48 adam - * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun). - * Modified all encoders/decoders to reflect this change. - * - * Revision 1.1 1999/04/16 14:45:55 adam - * Added interface for tcpd wrapper for access control. - * */ +/** + * \file tcpdchk.c + * \brief Implements TCP WRAPPER check. + */ + +#if HAVE_CONFIG_H +#include +#endif #include #include -#include -#include - -#if HAVE_TCPD_H -#include -#include +#ifdef WIN32 +#include +#endif +#if HAVE_SYS_TYPES_H +#include +#endif -int allow_severity = LOG_INFO; -int deny_severity = LOG_WARNING; +#if HAVE_NETINET_IN_H +#include +#endif -#ifdef LOG_DEBUG -#undef LOG_DEBUG +#if HAVE_ARPA_INET_H +#include #endif -#ifdef LOG_WARN -#undef LOG_WARN + +#if HAVE_SYS_SOCKET_H +/* freebsd wants this for AF_INET */ +#include #endif +#if HAVE_NETDB_H +#include #endif +#include #include #include + +#if HAVE_TCPD_H +#include +#include + +int allow_severity = LOG_INFO; /* not YLOG !! */ +int deny_severity = LOG_WARNING; + +#endif + int check_ip_tcpd(void *cd, const char *addr, int len, int type) { const char *daemon_name = (const char *) cd; if (type == AF_INET) { - if (daemon_name && *daemon_name) - { + if (daemon_name && *daemon_name) + { #if HAVE_TCPD_H - struct request_info request_info; - int i; -#endif - char *host_name = 0, *host_addr = 0; - struct hostent *host; - - struct sockaddr_in *addr_in = (struct sockaddr_in *) addr; - - if ((host = gethostbyaddr((char*)&addr_in->sin_addr, - sizeof(addr_in->sin_addr), - AF_INET))) - host_name = (char*) host->h_name; - host_addr = inet_ntoa(addr_in->sin_addr); -#if HAVE_TCPD_H - if (host_addr) - request_init(&request_info, RQ_DAEMON, daemon_name, - RQ_CLIENT_NAME, host_name, - RQ_CLIENT_SIN, addr_in, - RQ_CLIENT_ADDR, host_addr, 0); - else - request_init(&request_info, RQ_DAEMON, daemon_name, - RQ_CLIENT_SIN, addr_in, - RQ_CLIENT_ADDR, host_addr, 0); - i = hosts_access(&request_info); - if (!i) - { - yaz_log (LOG_DEBUG, "access denied from %s", - host_name ? host_name : host_addr); - return 1; - } - yaz_log (LOG_DEBUG, "access granted from %s", - host_name ? host_name : host_addr); + struct request_info request_info; + int i; + char *host_name = 0, *host_addr = 0; + struct hostent *host; + + struct sockaddr_in *addr_in = (struct sockaddr_in *) addr; + + if ((host = gethostbyaddr((char*)&addr_in->sin_addr, + sizeof(addr_in->sin_addr), + AF_INET))) + host_name = (char*) host->h_name; + host_addr = inet_ntoa(addr_in->sin_addr); + if (host_addr && host_name) + request_init(&request_info, RQ_DAEMON, daemon_name, + RQ_CLIENT_NAME, host_name, + RQ_CLIENT_SIN, addr_in, + RQ_CLIENT_ADDR, host_addr, 0); + else + request_init(&request_info, RQ_DAEMON, daemon_name, + RQ_CLIENT_SIN, addr_in, 0); + i = hosts_access(&request_info); + if (!i) + { + yaz_log(YLOG_DEBUG, "access denied from %s", + host_name ? host_name : host_addr); + return 1; + } + yaz_log(YLOG_DEBUG, "access granted from %s", + host_name ? host_name : host_addr); #endif - } + } } return 0; } +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +