X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/c86edd1d9e5994aea33cfad3164e4827e591e7e6..8c684fca9c7dbb4a2601628c744be9236ee68641:/chanserv/chanserv_protect.c?ds=sidebyside diff --git a/chanserv/chanserv_protect.c b/chanserv/chanserv_protect.c index d43ce9f0..fb113175 100644 --- a/chanserv/chanserv_protect.c +++ b/chanserv/chanserv_protect.c @@ -2,10 +2,11 @@ * Nick protection system for the chanserv */ +#include #include "chanserv.h" #include "../core/schedule.h" #include "../localuser/localuser.h" - +#include "../lib/irc_string.h" #define PROTECTTIME 60 /* How long you have to renick if you encroach.. */ @@ -21,8 +22,7 @@ void _init() { registerhook(HOOK_NICK_NEWNICK, csp_freenick); registerhook(HOOK_NICK_ACCOUNT, csp_freenick); - chanservaddcommand("claimnick", QCMD_HELPER, 0, csp_doclaimnick, - "Reclaims your nickname if it has been stolen."); + chanservaddcommand("claimnick", QCMD_STAFF, 0, csp_doclaimnick, "Reclaims your nickname if it has been stolen.",""); } void _fini() { @@ -52,6 +52,7 @@ void _fini() { void csp_handlenick(int hooknum, void *arg) { nick *np=arg; reguser *rup; + char userhostbuf[USERLEN+HOSTLEN+2]; /* Check that it's a protected nick */ if (!(rup=findreguserbynick(np->nick)) || !UIsProtect(rup)) @@ -71,6 +72,12 @@ void csp_handlenick(int hooknum, void *arg) { rup->stealcount=0; return; } + + if (rup->lastuserhost) { + sprintf(userhostbuf,"%s@%s",np->ident,np->host->name->content); + if (!ircd_strcmp(userhostbuf, rup->lastuserhost->content)) + return; + } if (IsOper(np) || homeserver(np->numeric)==mylongnum) return;