]> jfr.im git - irc/quakenet/newserv.git/blobdiff - chanserv/usercmds/deluser.c
CHANSERV: more checks on lastchannelID / lastuserID
[irc/quakenet/newserv.git] / chanserv / usercmds / deluser.c
index 9da47ae377a6caaa517d246f8f67ab60e5f2ad97..d6f6595e9c89d8bfd42e04819b64f2eb748f8c79 100644 (file)
@@ -20,6 +20,7 @@
 int csu_dodeluser(void *source, int cargc, char **cargv) {
   nick *sender=source;
   reguser *rup=getreguserfromnick(sender), *target;
+  char *reason;
 
   if (!rup)
     return CMD_ERROR;
@@ -29,18 +30,27 @@ int csu_dodeluser(void *source, int cargc, char **cargv) {
     return CMD_ERROR;
   }
 
+  reason = cargv[1];
+  if(!checkreason(sender, reason))
+    return CMD_ERROR;
+
   if (!(target=findreguser(sender, cargv[0])))
     return CMD_ERROR;
-  
+
+  if(target->ID == lastuserID) {
+    chanservsendmessage(sender, "Sorry, can't delete last user -- wait a while and try again.");
+    return CMD_ERROR;
+  }
+
   if(UHasStaffPriv(target)) {
-    cs_log(sender,"DELUSER FAILED username %s (%s)",target->username,cargc>1?cargv[1]:"");
-    chanservwallmessage("%s (%s) just FAILED using DELUSER on %s (%s)", sender->nick, rup->username, target->username, cargv[1]);
+    cs_log(sender,"DELUSER FAILED username %s (reason: %s)",target->username,reason);
+    chanservwallmessage("%s (%s) just FAILED using DELUSER on %s (reason: %s)", sender->nick, rup->username, target->username, reason);
     chanservsendmessage(sender, "Sorry, that user is privileged.");
     return CMD_ERROR;
   }
 
-  cs_log(sender,"DELUSER OK username %s (%s)",target->username,cargv[1]);
-  chanservwallmessage("%s (%s) just used DELUSER on %s (%s)", sender->nick, rup->username, target->username, cargv[1]);
+  cs_log(sender,"DELUSER OK username %s (reason: %s)",target->username,reason);
+  chanservwallmessage("%s (%s) just used DELUSER on %s (reason: %s)", sender->nick, rup->username, target->username, reason);
 
   cs_removeuser(target);