X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_uping.c;h=8854a247295f38222a3f8c9177faa6ac99439e02;hb=1570a04e15bec6b2945e4351b1e05211aecdcacc;hp=132eef01a8e5836f80a0c39d9df48c5a04f408b8;hpb=c822b17fc369072d121c696e65e5884b1f5abda2;p=ircu2.10.12-pk.git diff --git a/ircd/m_uping.c b/ircd/m_uping.c index 132eef0..8854a24 100644 --- a/ircd/m_uping.c +++ b/ircd/m_uping.c @@ -79,17 +79,12 @@ * note: it is guaranteed that parv[0]..parv[parc-1] are all * non-NULL pointers. */ -#if 0 -/* - * No need to include handlers.h here the signatures must match - * and we don't need to force a rebuild of all the handlers everytime - * we add a new one to the list. --Bleep - */ -#include "handlers.h" -#endif /* 0 */ +#include "config.h" + #include "client.h" #include "hash.h" #include "ircd.h" +#include "ircd_log.h" #include "ircd_reply.h" #include "ircd_string.h" #include "match.h" @@ -102,7 +97,7 @@ #include "uping.h" -#include +/* #include -- Now using assert in ircd_log.h */ #include #include @@ -127,16 +122,17 @@ int ms_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) assert(0 != sptr); if (!IsAnOper(sptr)) { - sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); + send_reply(sptr, ERR_NOPRIVILEGES); return 0; } if (parc < 5) { - sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING"); + send_reply(sptr, ERR_NEEDMOREPARAMS, "UPING"); return 0; } - if (hunt_server(1, cptr, sptr, "%s%s " TOK_UPING " %s %s %s %s", 3, parc, parv) != HUNTED_ISME) + if (hunt_server_cmd(sptr, CMD_UPING, cptr, 1, "%s %s %C %s", 3, parc, parv) + != HUNTED_ISME) return 0; /* * Determine port: First user supplied, then default : 7007 @@ -146,12 +142,8 @@ int ms_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (EmptyString(parv[4]) || (count = atoi(parv[4])) <= 0) { - if (MyUser(sptr)) - sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s", - me.name, parv[0], parv[4]); - else - sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Illegal number of packets: %s", - NumServ(&me), NumNick(sptr), parv[4]); + sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING : Illegal number of " + "packets: %s", sptr, parv[4]); return 0; } /* @@ -159,14 +151,10 @@ int ms_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) */ if ((aconf = conf_find_server(parv[1]))) uping_server(sptr, aconf, port, count); - else { - if (MyUser(sptr)) - sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf", - me.name, parv[0], parv[1]); - else - sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Host %s not listed in ircd.conf", - NumServ(&me), NumNick(sptr), parv[1]); - } + else + sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING: Host %s not listed in " + "ircd.conf", sptr, parv[1]); + return 0; } @@ -194,18 +182,18 @@ int mo_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) assert(IsAnOper(sptr)); if (parc < 2) { - sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING"); + send_reply(sptr, ERR_NEEDMOREPARAMS, "UPING"); return 0; } if (parc == 2) { parv[parc++] = UDP_PORT; - parv[parc++] = me.name; + parv[parc++] = cli_name(&me); parv[parc++] = "5"; } else if (parc == 3) { if (IsDigit(*parv[2])) - parv[parc++] = me.name; + parv[parc++] = cli_name(&me); else { parv[parc++] = parv[2]; parv[2] = UDP_PORT; @@ -216,7 +204,7 @@ int mo_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (IsDigit(*parv[2])) { if (IsDigit(*parv[3])) { parv[parc++] = parv[3]; - parv[3] = me.name; + parv[3] = cli_name(&me); } else parv[parc++] = "5"; @@ -227,7 +215,8 @@ int mo_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) parv[2] = UDP_PORT; } } - if (hunt_server(1, cptr, sptr, "%s%s " TOK_UPING " %s %s %s %s", 3, parc, parv) != HUNTED_ISME) + if (hunt_server_cmd(sptr, CMD_UPING, sptr, 1, "%s %s %C %s", 3, parc, parv) + != HUNTED_ISME) return 0; /* * Determine port: First user supplied, then default : 7007 @@ -237,12 +226,8 @@ int mo_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (EmptyString(parv[4]) || (count = atoi(parv[4])) <= 0) { - if (MyUser(sptr)) - sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s", - me.name, parv[0], parv[4]); - else - sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Illegal number of packets: %s", - NumServ(&me), NumNick(sptr), parv[4]); + sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING: Illegal number of " + "packets: %s", sptr, parv[4]); return 0; } /* @@ -251,182 +236,8 @@ int mo_uping(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if ((aconf = conf_find_server(parv[1]))) uping_server(sptr, aconf, port, count); else { - if (MyUser(sptr)) - sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf", - me.name, parv[0], parv[1]); - else - sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Host %s not listed in ircd.conf", - NumServ(&me), NumNick(sptr), parv[1]); - } - return 0; -} - - -#if 0 -/* - * m_uping -- by Run - * - * parv[0] = sender prefix - * parv[1] = pinged server - * parv[2] = port - * parv[3] = hunted server - * parv[4] = number of requested pings - */ -int m_uping(struct Client* cptr, struct Client *sptr, int parc, char *parv[]) -{ - struct ConfItem *aconf; - int port; - int fd; - struct UPing* pptr = 0; - - if (!IsPrivileged(sptr)) - { - sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); - return -1; - } - - if (parc < 2) - { - sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING"); - return 0; - } - - if (MyUser(sptr)) - { - if (parc == 2) - { - parv[parc++] = UDP_PORT; - parv[parc++] = me.name; - parv[parc++] = "5"; - } - else if (parc == 3) - { - if (IsDigit(*parv[2])) - parv[parc++] = me.name; - else - { - parv[parc++] = parv[2]; - parv[2] = UDP_PORT; - } - parv[parc++] = "5"; - } - else if (parc == 4) - { - if (IsDigit(*parv[2])) - { - if (IsDigit(*parv[3])) - { - parv[parc++] = parv[3]; - parv[3] = me.name; - } - else - parv[parc++] = "5"; - } - else - { - parv[parc++] = parv[3]; - parv[3] = parv[2]; - parv[2] = UDP_PORT; - } - } - } - if (hunt_server(1, cptr, sptr, ":%s UPING %s %s %s %s", 3, parc, parv) != HUNTED_ISME) - return 0; - - if (BadPtr(parv[4]) || atoi(parv[4]) <= 0) - { - if (MyUser(sptr) || Protocol(cptr) < 10) - sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s", - me.name, parv[0], parv[4]); - else - sendto_one(sptr, "%s NOTICE %s%s :UPING: Illegal number of packets: %s", - NumServ(&me), NumNick(sptr), parv[4]); - return 0; + sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING: Host %s not listed in " + "ircd.conf", sptr, parv[1]); } - - /* Check if a CONNECT would be possible at all (adapted from m_connect) */ - for (aconf = GlobalConfList; aconf; aconf = aconf->next) - { - if (aconf->status == CONF_SERVER && - match(parv[1], aconf->name) == 0) - break; - } - if (!aconf) - { - for (aconf = GlobalConfList; aconf; aconf = aconf->next) - { - if (aconf->status == CONF_SERVER && - (match(parv[1], aconf->host) == 0 || - match(parv[1], strchr(aconf->host, '@') + 1) == 0)) - break; - } - } - if (!aconf) - { - if (MyUser(sptr) || Protocol(cptr) < 10) - sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf", - me.name, parv[0], parv[1]); - else - sendto_one(sptr, - "%s NOTICE %s%s :UPING: Host %s not listed in ircd.conf", - NumServ(&me), NumNick(sptr), parv[1]); - return 0; - } - - if (IsUPing(sptr)) - cancel_ping(sptr, sptr); /* Cancel previous ping request */ - - /* - * Determine port: First user supplied, then default : 7007 - */ - if (BadPtr(parv[2]) || (port = atoi(parv[2])) <= 0) - port = atoi(UDP_PORT); - - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { - int err = errno; - sendto_ops("m_uping: socket: %s", (err != EMFILE) - ? ((strerror(err)) ? strerror(err) : "Unknown error") : "No more sockets"); - if (MyUser(sptr) || Protocol(cptr) < 10) - sendto_one(sptr, - ":%s NOTICE %s :UPING: Unable to create udp ping socket", - me.name, parv[0]); - else - sendto_one(sptr, - "%s NOTICE %s%s :UPING: Unable to create udp ping socket", - NumServ(&me), NumNick(sptr)); - ircd_log(L_ERROR, "UPING: Unable to create UDP socket"); - return 0; - } - - if (!os_set_nonblocking(fd)) { - if (MyUser(sptr) || Protocol(cptr) < 10) - sendto_one(sptr, ":%s NOTICE %s :UPING: Can't set fd non-blocking", - me.name, parv[0]); - else - sendto_one(sptr, "%s NOTICE %s%s :UPING: Can't set fd non-blocking", - NumServ(&me), NumNick(sptr)); - close(fd); - return 0; - } - pptr = (struct UPing*) MyMalloc(sizeof(struct UPing)); - assert(0 != pptr); - memset(pptr, 0, sizeof(struct UPing)); - - pptr->fd = fd; - pptr->sin.sin_port = htons(port); - pptr->sin.sin_addr.s_addr = aconf->ipnum.s_addr; - pptr->sin.sin_family = AF_INET; - pptr->count = IRCD_MIN(20, atoi(parv[4])); - strcpy(pptr->name, aconf->host); - pptr->client = sptr; - pptr->index = -1; - - pptr->next = pingList; - pingList = pptr; - - SetUPing(sptr); - ping_server(pptr); return 0; } -#endif /* 0 */ -