X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/d914d1cbfd541d1c1302ac989a8c5b7d57d25f55..c0601d1e22c5c3749ea94c1c4359f9223b732fe4:/src/shun.c?ds=sidebyside diff --git a/src/shun.c b/src/shun.c index 1809764..61bed7f 100644 --- a/src/shun.c +++ b/src/shun.c @@ -3,9 +3,9 @@ * * This file is part of x3. * - * srvx is free software; you can redistribute it and/or modify + * x3 is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -122,12 +122,6 @@ shun_remove(const char *target, int announce) timeq_add(new_first->expires, shun_expire, 0); } } -#ifdef WITH_PROTOCOL_BAHAMUT - /* Bahamut is sort of lame: It permanently remembers any AKILLs - * with durations longer than a day, and will never auto-expire - * them. So when the time comes, we'd better remind it. */ - announce = 1; -#endif if (announce) irc_unshun(target); return res; @@ -170,8 +164,6 @@ static char * shun_alternate_target(const char *target) { const char *hostname; - unsigned long ip; - char *res; /* If no host part, bail. */ if (!(hostname = strchr(target, '@'))) @@ -179,23 +171,17 @@ shun_alternate_target(const char *target) /* If host part contains wildcards, bail. */ if (hostname[strcspn(hostname, "*?/")]) return NULL; - /* If host part looks like an IP, parse it that way. */ - if (!hostname[strspn(hostname+1, "0123456789.")+1]) { - struct in_addr in; - struct hostent *he; - if (inet_aton(hostname+1, &in) - && (he = gethostbyaddr((char*)&in, sizeof(in), AF_INET))) { - res = malloc((hostname - target) + 2 + strlen(he->h_name)); - sprintf(res, "%.*s@%s", hostname - target, target, he->h_name); - return res; - } else - return NULL; - } else if (getipbyname(hostname+1, &ip)) { - res = malloc((hostname - target) + 18); - sprintf(res, "%.*s@%lu.%lu.%lu.%lu", hostname - target, target, ip & 255, (ip >> 8) & 255, (ip >> 16) & 255, (ip >> 24) & 255); - return res; - } else - return NULL; + /* Get parsed address and canonical name for host. */ +#if 0 + irc_in_addr_t in; /* move this to the right place */ + if (irc_pton(&in, NULL, hostname+1)) { + if (getnameinfo(/*TODO*/)) + return NULL; + } else if (!getaddrinfo(/*TODO*/)) { + } else return NULL; +#else + return NULL; +#endif } struct shun * @@ -312,7 +298,7 @@ shun_saxdb_write(struct saxdb_context *ctx) } static void -shun_db_cleanup(void) +shun_db_cleanup(UNUSED_ARG(void *extra)) { heap_delete(shun_heap); dict_delete(shun_dict); @@ -325,7 +311,7 @@ shun_init(void) shun_dict = dict_new(); dict_set_free_data(shun_dict, free_shun_from_dict); saxdb_register("shun", shun_saxdb_read, shun_saxdb_write); - reg_exit_func(shun_db_cleanup); + reg_exit_func(shun_db_cleanup, NULL); } struct shun_discrim * @@ -439,3 +425,4 @@ shun_discrim_search(struct shun_discrim *discrim, shun_search_func gsf, void *da heap_remove_pred(shun_heap, shun_search_helper, &search); return search.hits; } +