X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fuser_ops.c;h=6baed0b2ee2607b20cba91b333a19c4d3ecec395;hb=4b70719359d4be829a4a78f2198a9da61f36f652;hp=4f4ba6795d57581541be5d51cf308b1fa556e592;hpb=7918457330dd8ccfe0f2fdb5aa4f642409031573;p=citadel.git diff --git a/citadel/user_ops.c b/citadel/user_ops.c index 4f4ba6795..6baed0b2e 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -1200,6 +1200,8 @@ void CtdlSetPassword(char *new_pw) */ void cmd_setp(char *new_pw) { + int generate_random_password = 0; + if (CtdlAccessCheck(ac_logged_in)) { return; } @@ -1212,14 +1214,23 @@ void cmd_setp(char *new_pw) ERROR + NOT_HERE); return; } - strproc(new_pw); - if (IsEmptyStr(new_pw)) { - cprintf("%d Password unchanged.\n", CIT_OK); - return; - } - CtdlSetPassword(new_pw); - cprintf("%d Password changed.\n", CIT_OK); + if (!strcasecmp(new_pw, "GENERATE_RANDOM_PASSWORD")) { + char random_password[17]; + generate_random_password = 1; + snprintf(random_password, sizeof random_password, "%08lx%08lx", random(), random()); + CtdlSetPassword(random_password); + cprintf("%d %s\n", CIT_OK, random_password); + } + else { + strproc(new_pw); + if (IsEmptyStr(new_pw)) { + cprintf("%d Password unchanged.\n", CIT_OK); + return; + } + CtdlSetPassword(new_pw); + cprintf("%d Password changed.\n", CIT_OK); + } }