X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/ad740380e68eca0756c5b869d3e013fb1acc7824..f6ecfee93e749a205c09ff49005a7e47d053fe8d:/ticketauth/ticketauth.c diff --git a/ticketauth/ticketauth.c b/ticketauth/ticketauth.c index 99de1260..40bd8b5d 100644 --- a/ticketauth/ticketauth.c +++ b/ticketauth/ticketauth.c @@ -13,6 +13,8 @@ #include "../localuser/localuser.h" #include "../core/hooks.h" #include "../irc/irc.h" + +#define CS_NODB #include "../chanserv/chanserv.h" #define WARN_CHANNEL "#twilightzone" @@ -34,8 +36,10 @@ int ta_ticketauth(void *source, int cargc, char **cargv) { return CMD_ERROR; } - if(cargc != 6) + if(cargc != 6) { + controlreply(np, "%d\n", cargc); return CMD_USAGE; + } acc = cargv[0]; expiry = atoi(cargv[1]); @@ -57,14 +61,14 @@ int ta_ticketauth(void *source, int cargc, char **cargv) { } hmacsha256_init(&hmac, (unsigned char *)sharedsecret->content, sharedsecret->length); - snprintf(buffer, sizeof(buffer), "%s %d %d %s", acc, expiry, id, junk); + snprintf(buffer, sizeof(buffer), "%s %d %d %s %s", acc, expiry, id, flags, junk); hmacsha256_update(&hmac, (unsigned char *)buffer, strlen(buffer)); hmacsha256_final(&hmac, digest); /* hahahaha */ snprintf(buffer, sizeof(buffer), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", digest[0], digest[1], digest[2], digest[3], digest[4], digest[5], digest[6], digest[7], digest[8], digest[9], digest[10], digest[11], digest[12], digest[13], digest[14], digest[15], digest[16], digest[17], digest[18], digest[19], digest[20], digest[21], digest[22], digest[23], digest[24], digest[25], digest[26], digest[27], digest[28], digest[29], digest[30], digest[31]); - if(strcasecmp(buffer, uhmac)) { + if(hmac_strcmp(buffer, uhmac)) { controlwall(NO_OPER, NL_MISC, "%s!%s@%s attempted to TICKETAUTH as %s (bad HMAC)", np->nick, np->ident, np->host->name->content, acc); controlreply(np, "Bad HMAC."); return CMD_ERROR; @@ -78,7 +82,7 @@ int ta_ticketauth(void *source, int cargc, char **cargv) { controlreply(np, "Ticket valid, authing. . ."); - localusersetaccount(np, acc, id, 0, cs_accountflagmap_str(flags)); + localusersetaccount(np, acc, id, cs_accountflagmap_str(flags), 0); controlreply(np, "Done."); return CMD_OK; @@ -96,7 +100,7 @@ void _init() { return; } - registercontrolhelpcmd("ticketauth", NO_OPERED, 5, ta_ticketauth, "Usage: ticketauth "); + registercontrolhelpcmd("ticketauth", NO_OPERED, 6, ta_ticketauth, "Usage: ticketauth "); } void _fini() {