]> 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 #include "../lib/version.h"
4
5 MODULE_VERSION(QVERSION);
6
7 int csa_docheckhashpass(void *source, int cargc, char **cargv);
8
9 void _init(void) {
10 registercontrolhelpcmd("checkhashpass", NO_RELAY, 3, csa_docheckhashpass, "Usage: checkhashpass <username> <digest> ?junk?");
11 }
12
13 void _fini(void) {
14 deregistercontrolcmd("checkhashpass", csa_docheckhashpass);
15 }
16
17 int csa_docheckhashpass(void *source, int cargc, char **cargv) {
18 nick *sender=(nick *)source;
19 reguser *rup;
20 char *flags;
21
22 if(cargc<3) {
23 controlreply(sender, "CHECKHASHPASS FAIL args");
24 return CMD_ERROR;
25 }
26
27 if (!(rup=findreguserbynick(cargv[0]))) {
28 controlreply(sender, "CHECKHASHPASS FAIL user");
29 return CMD_OK;
30 }
31
32 flags = printflags(QUFLAG_ALL & rup->flags, ruflags);
33 if(UHasSuspension(rup)) {
34 controlreply(sender, "CHECKHASHPASS FAIL suspended %s %s %u", rup->username, flags, rup->ID);
35 } else if(!checkhashpass(rup, cargc<3?NULL:cargv[2], cargv[1])) {
36 controlreply(sender, "CHECKHASHPASS FAIL digest %s %s %u", rup->username, flags, rup->ID);
37 } else {
38 controlreply(sender, "CHECKHASHPASS OK %s %s %u %s", rup->username, flags, rup->ID, rup->email?rup->email->content:"-");
39 }
40
41 return CMD_OK;
42 }