ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/ermyth/modules/nickserv/mark.C
Revision: 1.5
Committed: Tue Aug 28 22:18:30 2007 UTC (19 years, 1 month ago) by pippijn
Content type: text/plain
Branch: MAIN
Changes since 1.4: +3 -3 lines
Log Message:
added type traits

File Contents

# User Rev Content
1 pippijn 1.1 /*
2 pippijn 1.4 * Copyright © 2005 William Pitcock
3 pippijn 1.2 * Rights to this code are as documented in doc/pod/license.pod.
4 pippijn 1.1 *
5     * Marking for nicknames.
6     *
7 pippijn 1.5 * $Id: mark.C,v 1.4 2007-08-28 17:08:10 pippijn Exp $
8 pippijn 1.1 */
9    
10     #include "atheme.h"
11 pippijn 1.4 #include <ermyth/module.h>
12 pippijn 1.1 #include <account/myuser.h>
13    
14 pippijn 1.5 static char const rcsid[] = "$Id: mark.C,v 1.4 2007-08-28 17:08:10 pippijn Exp $";
15 pippijn 1.1
16 pippijn 1.4 REGISTER_MODULE ("nickserv/mark", false, "The Ermyth Team <http://ermyth.schmorp.de>");
17 pippijn 1.1
18     static void ns_cmd_mark (sourceinfo_t *si, int parc, char *parv[]);
19    
20 pippijn 1.4 command_t const ns_mark = { "MARK", N_("Adds a note to a user."), PRIV_MARK, 3, ns_cmd_mark };
21 pippijn 1.1
22 pippijn 1.4 E cmdvec ns_cmdtree;
23     E helpvec ns_helptree;
24 pippijn 1.1
25 pippijn 1.4 bool
26     _modinit (module *m)
27 pippijn 1.1 {
28     ns_cmdtree << ns_mark;
29     help_addentry (ns_helptree, "MARK", "help/nickserv/mark", NULL);
30 pippijn 1.4
31     return true;
32 pippijn 1.1 }
33    
34     void
35     _moddeinit ()
36     {
37     ns_cmdtree >> ns_mark;
38     help_delentry (ns_helptree, "MARK");
39     }
40    
41     static void
42     ns_cmd_mark (sourceinfo_t *si, int parc, char *parv[])
43     {
44     char *target = parv[0];
45     char *action = parv[1];
46     char *info = parv[2];
47     myuser_t *mu;
48    
49     if (!target || !action)
50     {
51     command_fail (si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "MARK");
52     command_fail (si, fault_needmoreparams, _("Usage: MARK <target> <ON|OFF> [note]"));
53     return;
54     }
55    
56 pippijn 1.5 if (!(mu = myuser_t::find_ext (target)))
57 pippijn 1.1 {
58     command_fail (si, fault_nosuch_target, _("\2%s\2 is not registered."), target);
59     return;
60     }
61    
62     if (!strcasecmp (action, "ON"))
63     {
64     if (!info)
65     {
66     command_fail (si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "MARK");
67     command_fail (si, fault_needmoreparams, _("Usage: MARK <target> ON <note>"));
68     return;
69     }
70    
71     if (mu->find_metadata ("private:mark:setter"))
72     {
73     command_fail (si, fault_badparams, _("\2%s\2 is already marked."), target);
74     return;
75     }
76    
77     mu->add_metadata ("private:mark:setter", get_oper_name (si));
78     mu->add_metadata ("private:mark:reason", info);
79 pippijn 1.4 mu->add_metadata ("private:mark:timestamp", itoa (NOW));
80 pippijn 1.1
81     wallops ("%s marked the nickname \2%s\2.", get_oper_name (si), target);
82     logcommand (si, CMDLOG_ADMIN, "MARK %s ON (reason: %s)", target, info);
83     command_success_nodata (si, _("\2%s\2 is now marked."), target);
84     }
85     else if (!strcasecmp (action, "OFF"))
86     {
87     if (!mu->find_metadata ("private:mark:setter"))
88     {
89     command_fail (si, fault_badparams, _("\2%s\2 is not marked."), target);
90     return;
91     }
92    
93     mu->del_metadata ("private:mark:setter");
94     mu->del_metadata ("private:mark:reason");
95     mu->del_metadata ("private:mark:timestamp");
96    
97     wallops ("%s unmarked the nickname \2%s\2.", get_oper_name (si), target);
98     logcommand (si, CMDLOG_ADMIN, "MARK %s OFF", target);
99     command_success_nodata (si, _("\2%s\2 is now unmarked."), target);
100     }
101     else
102     {
103     command_fail (si, fault_needmoreparams, STR_INVALID_PARAMS, "MARK");
104     command_fail (si, fault_needmoreparams, _("Usage: MARK <target> <ON|OFF> [note]"));
105     }
106     }