]> jfr.im git - irc/quakenet/newserv.git/blob - nterface/nterfacer_spamscan2.c
Added spamscan nterfacer module.
[irc/quakenet/newserv.git] / nterface / nterfacer_spamscan2.c
1 /*
2 nterfacer spamscan2 module
3 Copyright (C) 2005 Chris Porter.
4
5 */
6
7 #include "../localuser/localuserchannel.h"
8 #include "../channel/channel.h"
9
10 #include "../spamscan2/spamscan2.h"
11
12 #include "library.h"
13 #include "nterfacer.h"
14
15 #define ERR_TARGET_NOT_FOUND 0x01
16 #define ERR_CHANNEL_NOT_REGISTERED 0x02
17 #define ERR_PROFILE_DOES_NOT_EXIST 0x03
18
19 int handle_getprofile(struct rline *li, int argc, char **argv);
20 int handle_setprofile(struct rline *li, int argc, char **argv);
21
22 struct service_node *s_node;
23
24 void _init(void) {
25 s_node = register_service("S");
26 if(!s_node)
27 return;
28
29 register_handler(s_node, "getprofile", 1, handle_getprofile);
30 register_handler(s_node, "setprofile", 2, handle_setprofile);
31 }
32
33 void _fini(void) {
34 if(s_node)
35 deregister_service(s_node);
36 }
37
38 int handle_getprofile(struct rline *li, int argc, char **argv) {
39 spamscan_channelsettings *cs;
40
41 if(argv[0][0] != '#')
42 return ri_error(li, ERR_TARGET_NOT_FOUND, "Channel not found");
43
44 cs = spamscan_getchannelsettings(argv[0], 0);
45 if(!cs)
46 return ri_error(li, ERR_CHANNEL_NOT_REGISTERED, "Channel not registered");
47
48 ri_append(li, cs->cp?cs->cp->profilename:"unknown");
49 return ri_final(li);
50 }
51
52 int handle_setprofile(struct rline *li, int argc, char **argv) {
53 spamscan_channelsettings *cs;
54 spamscan_channelprofile *cp;
55
56 if(argv[0][0] != '#')
57 return ri_error(li, ERR_TARGET_NOT_FOUND, "Channel not found");
58
59 cs = spamscan_getchannelsettings(argv[0], 0);
60 if(!cs)
61 return ri_error(li, ERR_CHANNEL_NOT_REGISTERED, "Channel not registered");
62
63 cp = spamscan_getchannelprofile(argv[1], 0);
64 if(!cp)
65 return ri_error(li, ERR_PROFILE_DOES_NOT_EXIST, "Profile does not exist");
66
67 /* TODO: beat Cruicky till he refactors this functionality */
68 cs->cp = cp;
69 cs->modified = time(NULL);
70 cs->modifiedby = spamscan_getaccountsettings("nterfacer", 1);
71 spamscan_updatechanneldb(cs);
72
73 ri_append(li, "Done.");
74 return ri_final(li);
75 }
76