]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chanserv_relay.c
Merge.
[irc/quakenet/newserv.git] / chanserv / chanserv_relay.c
1 #include "chanserv.h"
2 #include "../control/control.h"
3
4 int csa_docheckhashpass(void *source, int cargc, char **cargv);
5
6 void _init(void) {
7 registercontrolhelpcmd("checkhashpass", NO_RELAY, 3, csa_docheckhashpass, "Usage: checkhashpass <username> <digest> ?junk?");
8 }
9
10 void _fini(void) {
11 deregistercontrolcmd("checkhashpass", csa_docheckhashpass);
12 }
13
14 int 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 }