]> jfr.im git - irc/quakenet/newserv.git/blobdiff - localuser/localuser.c
Implement --help parameter.
[irc/quakenet/newserv.git] / localuser / localuser.c
index dd11918b901a4eee813157d1a520c6a4bf193f8d..35c13ebe840cfcc57131a794f942df9969006ac1 100644 (file)
@@ -148,6 +148,9 @@ nick *registerlocaluserflags(char *nickname, char *ident, char *host, char *real
     }
   }
 
+  newuser->cloak_count = 0;
+  newuser->cloak_extra = NULL;
+
   if (connected) {
     /* Check for nick collision */
     if ((np=getnickbynick(nickname))!=NULL) {
@@ -178,7 +181,9 @@ int renamelocaluser(nick *np, char *newnick) {
   nick *np2;
   char ipbuf[25];
   time_t timestamp=getnettime();
-  
+  void *harg[2];
+  char oldnick[NICKLEN+1];
+
   if (!np)
     return -1;
   
@@ -188,13 +193,18 @@ int renamelocaluser(nick *np, char *newnick) {
   if (homeserver(np->numeric)!=mylongnum) 
     return -1;
 
+  strncpy(oldnick,np->nick,NICKLEN);
+  oldnick[NICKLEN]='\0';
+  harg[0]=(void *)np;
+  harg[1]=(void *)oldnick;
+
   if ((np2=getnickbynick(newnick))) {
     if (np2==np) {
       /* Case only name change */
       strncpy(np->nick,newnick,NICKLEN);
       np->nick[NICKLEN]='\0';
       irc_send("%s N %s %jd",iptobase64(ipbuf, &(np->p_ipaddr), sizeof(ipbuf), 1),np->nick,(intmax_t)np->timestamp);
-      triggerhook(HOOK_NICK_RENAME,np);     
+      triggerhook(HOOK_NICK_RENAME,harg);     
       return 0;
     } else {
       /* Kill other user and drop through */
@@ -209,7 +219,7 @@ int renamelocaluser(nick *np, char *newnick) {
   np->nick[NICKLEN]='\0';
   addnicktohash(np);
   irc_send("%s N %s %jd",longtonumeric(np->numeric,5),np->nick,(intmax_t)np->timestamp);
-  triggerhook(HOOK_NICK_RENAME,np);
+  triggerhook(HOOK_NICK_RENAME,harg);
   
   return 0;
 }
@@ -636,3 +646,20 @@ void localusersetaccountflags(authname *anp, u_int64_t accountflags) {
 
   triggerhook(HOOK_AUTH_FLAGSUPDATED, arg);
 }
+
+void localuseraddcloaktarget(nick *np, nick *target) {
+  char snumeric[10], tnumeric[10];
+
+  strcpy(snumeric, longtonumeric(np->numeric,5));
+  strcpy(tnumeric, longtonumeric(target->numeric,5));
+
+  irc_send("%s CA %s", snumeric, tnumeric);
+
+  addcloaktarget(np, target);
+}
+
+void localuserclearcloaktargets(nick *np) {
+  irc_send("%s CU", longtonumeric(np->numeric,5));
+  clearcloaktargets(np);
+}
+