]> jfr.im git - irc/quakenet/newserv.git/commitdiff
password rules
authorPaul <redacted>
Sat, 2 Jun 2007 19:41:35 +0000 (19:41 +0000)
committerPaul <redacted>
Sat, 2 Jun 2007 19:41:35 +0000 (19:41 +0000)
chanserv/authcmds/newpass.c

index 40fa51abf7d5e10f524371a25105db0753c6787f..62724fed934c2b75a614ba49f0c7626ba78f01c6 100644 (file)
@@ -18,6 +18,7 @@
 int csa_donewpw(void *source, int cargc, char **cargv) {
   reguser *rup;
   nick *sender=source;
+  int i, cntweak = 0, cntdigits = 0 , cntletters = 0;
 
   if (cargc<3) {
     chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "newpass");
@@ -45,6 +46,21 @@ int csa_donewpw(void *source, int cargc, char **cargv) {
     return CMD_ERROR;
   }
 
+  for ( i = 0; cargv[1][i] && i < PASSLEN; i++ ) {
+    if ( cargv[1][i] == cargv[1][i+1] || cargv[1][i] + 1 == cargv[1][i+1] || cargv[1][i] - 1 == cargv[1][i+1] )
+      cntweak++;
+    if(isdigit(cargv[1][i]))
+      cntdigits++;
+    if(islower(cargv[1][i]) || isupper(cargv[1][i]))
+      cntletters++;
+  }
+
+  if( cntweak > 3 || !cntdigits || !cntletters) {
+    chanservstdmessage(sender, QM_PWTOWEAK); /* new password is weak */
+    cs_log(sender,"NEWPASS FAIL username %s password to weak %s",rup->username,cargv[1]);
+    return CMD_ERROR;
+  }
+
   setpassword(rup, cargv[1]);
   rup->lastauth=time(NULL);
   chanservstdmessage(sender, QM_PWCHANGED);