]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chanserv_relay.c
Seperate out checkhashpass into it's own seperate module: chanserv_relay.
[irc/quakenet/newserv.git] / chanserv / chanserv_relay.c
CommitLineData
354b3c0a
CP
1#include "chanserv.h"
2#include "../control/control.h"
3
4int csa_docheckhashpass(void *source, int cargc, char **cargv);
5
6void _init(void) {
7 registercontrolhelpcmd("checkhashpass", NO_RELAY, 3, csa_docheckhashpass, "Usage: checkhashpass <username> <digest> ?junk?");
8}
9
10void _fini(void) {
11 deregistercontrolcmd("checkhashpass", csa_docheckhashpass);
12}
13
14int csa_docheckhashpass(void *source, int cargc, char **cargv) {
15 nick *sender=(nick *)source;
16 reguser *rup;
17 char *flags;
18
19 if(cargc<3) {
20 controlreply(sender, "CHECKHASHPASS FAIL args");
21 return CMD_ERROR;
22 }
23
24 if (!(rup=findreguserbynick(cargv[0]))) {
25 controlreply(sender, "CHECKHASHPASS FAIL user");
26 return CMD_OK;
27 }
28
29 flags = printflags(QUFLAG_ALL & rup->flags, ruflags);
30 if(UHasSuspension(rup)) {
31 controlreply(sender, "CHECKHASHPASS FAIL suspended %s %s %u", rup->username, flags, rup->ID);
32 } else if(!checkhashpass(rup, cargc<3?NULL:cargv[2], cargv[1])) {
33 controlreply(sender, "CHECKHASHPASS FAIL digest %s %s %u", rup->username, flags, rup->ID);
34 } else {
35 controlreply(sender, "CHECKHASHPASS OK %s %s %u %s", rup->username, flags, rup->ID, rup->email?rup->email->content:"-");
36 }
37
38 return CMD_OK;
39}