X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Flocate_host.c;h=64879eefbb797115d5037b89572205a702977611;hb=HEAD;hp=5ef13c8eb6df5f937bf76fef70e03ea0519c484e;hpb=346f8cd942d1a0a48cc396651750945655fe8d39;p=citadel.git diff --git a/citadel/locate_host.c b/citadel/locate_host.c deleted file mode 100644 index 5ef13c8eb..000000000 --- a/citadel/locate_host.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * $Id$ - * - * locate the originating host - * - */ - -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "citadel.h" -#include "server.h" -#include "serv_extensions.h" -#include "locate_host.h" -#include "sysdep_decls.h" -#include "config.h" -#include "tools.h" -#include "domain.h" - -void locate_host(char *tbuf, size_t n, - char *abuf, size_t na, - const struct in_addr *addr) -{ - struct hostent *ch; - const char *i; - char *j; - int a1, a2, a3, a4; - char address_string[SIZ]; - - lprintf(9, "locate_host() called\n"); - -#ifdef HAVE_NONREENTRANT_NETDB - begin_critical_section(S_NETDB); -#endif - - i = (const char *) addr; - a1 = ((*i++) & 0xff); - a2 = ((*i++) & 0xff); - a3 = ((*i++) & 0xff); - a4 = ((*i++) & 0xff); - sprintf(address_string, "%d.%d.%d.%d", a1, a2, a3, a4); - - if (abuf != NULL) { - safestrncpy(abuf, address_string, na); - } - - if ((ch = gethostbyaddr((const char *) addr, - sizeof(*addr), AF_INET)) == NULL) { -bad_dns: - safestrncpy(tbuf, address_string, n); - goto end; /* because we might need to end the critical - section */ - } - /* check if the forward DNS agrees; if not, they're spoofing */ - j = strdoop(ch->h_name); - ch = gethostbyname(j); - phree(j); - if (ch == NULL) - goto bad_dns; - - /* check address for consistency */ - for (; *ch->h_addr_list; ch->h_addr_list++) - if (!memcmp(*ch->h_addr_list, addr, - sizeof *addr)) { - safestrncpy(tbuf, ch->h_name, 63); - goto end; - } - goto bad_dns; /* they were spoofing. report a numeric IP - address. */ - - end: - -#ifdef HAVE_NONREENTRANT_NETDB - end_critical_section(S_NETDB); -#endif - - tbuf[63] = 0; - lprintf(9, "locate_host() exiting\n"); -} - - -/* - * Check to see if a host is on some sort of spam list (RBL) - * If spammer, returns nonzero and places reason in 'message_to_spammer' - */ -int rbl_check_addr(struct in_addr *addr, char *message_to_spammer) -{ - const char *i; - int a1, a2, a3, a4; - char tbuf[SIZ]; - int rbl; - int num_rbl; - char rbl_domains[SIZ]; - - strcpy(message_to_spammer, "ok"); - - i = (const char *) addr; - a1 = ((*i++) & 0xff); - a2 = ((*i++) & 0xff); - a3 = ((*i++) & 0xff); - a4 = ((*i++) & 0xff); - - /* See if we have any RBL domains configured */ - num_rbl = get_hosts(rbl_domains, "rbl"); - if (num_rbl < 1) return(0); - - /* Try all configured RBL's */ - for (rbl=0; rblclient_socket, (struct sockaddr *) &sin, &len)) { - return(rbl_check_addr(&sin.sin_addr, message_to_spammer)); - } - return(0); -}