]>
Commit | Line | Data |
---|---|---|
20b9980a | 1 | #include "../chanserv.h" |
4a3ebc9e | 2 | #include "../../lib/stringbuf.h" |
6d349eb0 | 3 | #include "chanserv_newsearch.h" |
20b9980a CP |
4 | #include <stdio.h> |
5 | #include <stdarg.h> | |
6 | ||
4a3ebc9e CP |
7 | static char *concatargs(int cargc, char **cargv) { |
8 | static char bigbuf[1024]; | |
9 | StringBuf b; | |
10 | int i; | |
11 | ||
12 | sbinit(&b, bigbuf, sizeof(bigbuf)); | |
13 | for(i=0;i<cargc;i++) { | |
14 | sbaddstr(&b, cargv[i]); | |
15 | sbaddchar(&b, ' '); | |
16 | } | |
17 | sbterminate(&b); | |
18 | ||
19 | return bigbuf; | |
20 | } | |
21 | ||
20b9980a CP |
22 | static void chanservmessagewrapper(nick *np, char *format, ...) { |
23 | char buf[1024]; | |
24 | va_list ap; | |
25 | ||
26 | va_start(ap, format); | |
27 | vsnprintf(buf, sizeof(buf), format, ap); | |
28 | va_end(ap); | |
29 | ||
30 | chanservsendmessage(np, "%s", buf); | |
31 | } | |
32 | ||
33 | static void chanservwallwrapper(int level, char *format, ...) { | |
34 | char buf[1024]; | |
35 | va_list ap; | |
36 | ||
37 | va_start(ap, format); | |
38 | vsnprintf(buf, sizeof(buf), format, ap); | |
39 | va_end(ap); | |
40 | ||
41 | chanservwallmessage("%s", buf); | |
42 | } | |
43 | ||
44 | int cs_donicksearch(void *source, int cargc, char **cargv) { | |
45 | nick *sender=source; | |
46 | ||
47 | if (cargc < 1) { | |
48 | chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "nicksearch"); | |
49 | return CMD_ERROR; | |
50 | } | |
51 | ||
4a3ebc9e | 52 | cs_log(source, "NICKSEARCH %s", concatargs(cargc, cargv)); |
20b9980a CP |
53 | do_nicksearch_real(chanservmessagewrapper, chanservwallwrapper, source, cargc, cargv); |
54 | ||
55 | chanservstdmessage(sender, QM_DONE); | |
56 | return CMD_OK; | |
57 | } | |
58 | ||
59 | int cs_dochansearch(void *source, int cargc, char **cargv) { | |
60 | nick *sender=source; | |
61 | ||
62 | if (cargc < 1) { | |
63 | chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "chansearch"); | |
64 | return CMD_ERROR; | |
65 | } | |
66 | ||
4a3ebc9e | 67 | cs_log(source, "CHANSEARCH %s", concatargs(cargc, cargv)); |
20b9980a CP |
68 | do_chansearch_real(chanservmessagewrapper, chanservwallwrapper, source, cargc, cargv); |
69 | ||
70 | chanservstdmessage(sender, QM_DONE); | |
71 | return CMD_OK; | |
72 | } | |
73 | ||
6d349eb0 CP |
74 | int cs_dousersearch(void *source, int cargc, char **cargv) { |
75 | nick *sender=source; | |
76 | ||
77 | if (cargc < 1) { | |
78 | chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "usersearch"); | |
79 | return CMD_ERROR; | |
80 | } | |
81 | ||
4a3ebc9e | 82 | cs_log(source, "USERSEARCH %s", concatargs(cargc, cargv)); |
6d349eb0 CP |
83 | do_usersearch_real(chanservmessagewrapper, chanservwallwrapper, source, cargc, cargv); |
84 | ||
85 | chanservstdmessage(sender, QM_DONE); | |
86 | return CMD_OK; | |
87 | } | |
88 | ||
2181a10f CP |
89 | void showheader(void *source, void *header) { |
90 | long iheader = (long)header; | |
91 | ||
92 | chanservstdmessage(source, iheader); | |
93 | } | |
94 | ||
e1c7b7a9 | 95 | int cs_dospewemail(void *source, int cargc, char **cargv) { |
68d05acb | 96 | searchASTExpr tree; |
6d349eb0 | 97 | |
d98f606a CP |
98 | if(cargc < 1) { |
99 | chanservstdmessage(source, QM_NOTENOUGHPARAMS, "spewemail"); | |
100 | return CMD_ERROR; | |
101 | } | |
6d349eb0 | 102 | |
4a3ebc9e CP |
103 | cs_log(source, "SPEWEMAIL %s", cargv[0]); |
104 | ||
6d349eb0 | 105 | tree = NSASTNode(match_parse, NSASTNode(qemail_parse), NSASTLiteral(cargv[0])); |
68d05acb | 106 | return ast_usersearch(&tree, chanservmessagewrapper, source, chanservwallwrapper, printauth, showheader, (void *)QM_SPEWHEADER, 2000); |
6d349eb0 CP |
107 | } |
108 | ||
e1c7b7a9 | 109 | int cs_dospewdb(void *source, int cargc, char **cargv) { |
68d05acb | 110 | searchASTExpr tree; |
6d349eb0 | 111 | |
d98f606a CP |
112 | if(cargc < 1) { |
113 | chanservstdmessage(source, QM_NOTENOUGHPARAMS, "spewdb"); | |
114 | return CMD_ERROR; | |
115 | } | |
6d349eb0 | 116 | |
4a3ebc9e CP |
117 | cs_log(source, "SPEWDB %s", cargv[0]); |
118 | ||
6d349eb0 CP |
119 | tree = |
120 | NSASTNode(or_parse, | |
121 | NSASTNode(match_parse, NSASTNode(qusername_parse), NSASTLiteral(cargv[0])), | |
122 | NSASTNode(match_parse, NSASTNode(qsuspendreason_parse), NSASTLiteral(cargv[0])), | |
123 | NSASTNode(match_parse, NSASTNode(qemail_parse), NSASTLiteral(cargv[0])), | |
124 | NSASTNode(match_parse, NSASTNode(qlasthost_parse), NSASTLiteral(cargv[0])), | |
125 | ); | |
68d05acb | 126 | return ast_usersearch(&tree, chanservmessagewrapper, source, chanservwallwrapper, printauth, showheader, (void *)QM_SPEWHEADER, 2000); |
6d349eb0 CP |
127 | } |
128 |