]> jfr.im git - irc/quakenet/newserv.git/blobdiff - chanserv/authcmds/getpassword.c
LUA: add bindings for newserv's scheduling, and adjust old API to use it.
[irc/quakenet/newserv.git] / chanserv / authcmds / getpassword.c
index 88e6837d76d69b508a4a111f4e2c143d8a9436b7..03af6700693a98155971551ebcb43f535190bb4b 100644 (file)
@@ -2,11 +2,14 @@
  *
  *
  * CMDNAME: getpassword
+ * CMDALIASES: getpass
  * CMDLEVEL: QCMD_OPER
  * CMDARGS: 2
  * CMDDESC: Gets a users password
  * CMDFUNC: csa_dogetpw
  * CMDPROTO: int csa_dogetpw(void *source, int cargc, char **cargv);
+ * CMDHELP: Usage: @UCOMMAND@ <username> <reason>
+ * CMDHELP: Fetches the password for the specified username.
  */
 
 #include "../chanserv.h"
@@ -19,8 +22,9 @@ int csa_dogetpw(void *source, int cargc, char **cargv) {
   reguser *rup;
   nick *sender=source;
   reguser *srup=getreguserfromnick(sender);
+  char *reason;
 
-  if (cargc<1) {
+  if (cargc<2) {
     chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "getpassword");
     return CMD_ERROR;
   }
@@ -28,15 +32,19 @@ int csa_dogetpw(void *source, int cargc, char **cargv) {
   if (!(rup=findreguser(sender, cargv[0])))
     return CMD_ERROR;
 
-  if(UHasHelperPriv(rup)) {
-    cs_log(sender,"GETPASSWORD FAILED username %s",rup->username);
-    chanservwallmessage("%s (%s) just FAILED using GETPASSWORD on %s", sender->nick, srup->username, rup->username);
+  reason = cargv[1];
+  if(!checkreason(sender, reason))
+    return CMD_ERROR;
+
+  if(UHasStaffPriv(rup)) {
+    cs_log(sender,"GETPASSWORD FAILED username %s (reason: %s)",rup->username, reason);
+    chanservwallmessage("%s (%s) just FAILED using GETPASSWORD on %s (reason: %s)", sender->nick, srup->username, rup->username, reason);
     chanservsendmessage(sender, "Sorry, that user is privileged.");
     return CMD_ERROR;
   }
 
-  cs_log(sender,"GETPASSWORD OK username %s",rup->username);
-  chanservwallmessage("%s (%s) just used GETPASSWORD on %s", sender->nick, srup->username, rup->username);
+  cs_log(sender,"GETPASSWORD OK username %s (reason: %s)",rup->username, reason);
+  chanservwallmessage("%s (%s) just used GETPASSWORD on %s (reason: %s)", sender->nick, srup->username, rup->username, reason);
 
   chanservsendmessage(sender, "Password is currently: %s",rup->password);
   return CMD_OK;