1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/* NickServ core functions
*
* (C) 2003-2011 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
*
* Based on the original code of Epona by Lara.
* Based on the original code of Services by Andy Church.
*/
/*************************************************************************/
#include "module.h"
class CommandNSSetPrivate : public Command
{
public:
CommandNSSetPrivate(const Anope::string &spermission = "") : Command("PRIVATE", 2, 2, spermission)
{
}
CommandReturn Execute(CommandSource &source, const std::vector<Anope::string> ¶ms)
{
NickAlias *na = findnick(params[0]);
if (!na)
throw CoreException("NULL na in CommandNSSetPrivate");
NickCore *nc = na->nc;
Anope::string param = params[1];
if (param.equals_ci("ON"))
{
nc->SetFlag(NI_PRIVATE);
source.Reply(_("Private option is now \002\002 for \002%s\002."), nc->display.c_str());
}
else if (param.equals_ci("OFF"))
{
nc->UnsetFlag(NI_PRIVATE);
source.Reply(_("Private option is now \002\002 for \002%s\002."), nc->display.c_str());
}
else
this->OnSyntaxError(source, "PRIVATE");
return MOD_CONT;
}
bool OnHelp(CommandSource &source, const Anope::string &)
{
source.Reply(_("Syntax: \002SET PRIVATE {ON | OFF}\002\n"
" \n"
"Turns %s's privacy option on or off for your nick.\n"
"With \002PRIVATE\002 set, your nickname will not appear in\n"
"nickname lists generated with %s's \002LIST\002 command.\n"
"(However, anyone who knows your nickname can still get\n"
"information on it using the \002INFO\002 command.)"),
NickServ->nick.c_str(), NickServ->nick.c_str());
return true;
}
void OnSyntaxError(CommandSource &source, const Anope::string &)
{
SyntaxError(source, "SET PRIVATE", _("SET PRIVATE {ON | OFF}"));
}
void OnServHelp(CommandSource &source)
{
source.Reply(_(" PRIVATE Prevent the nickname from appearing in a \002%R%s LIST\002"), ChanServ->nick.c_str());
}
};
class CommandNSSASetPrivate : public CommandNSSetPrivate
{
public:
CommandNSSASetPrivate() : CommandNSSetPrivate("nickserv/saset/private")
{
}
bool OnHelp(CommandSource &source, const Anope::string &)
{
source.Reply(_("Syntax: \002SASET \037nickname\037 PRIVATE {ON | OFF}\002\n"
" \n"
"Turns %s's privacy option on or off for the nick.\n"
"With \002PRIVATE\002 set, the nickname will not appear in\n"
"nickname lists generated with %s's \002LIST\002 command.\n"
"(However, anyone who knows the nickname can still get\n"
"information on it using the \002INFO\002 command.)"),
NickServ->nick.c_str(), NickServ->nick.c_str());
return true;
}
void OnSyntaxError(CommandSource &source, const Anope::string &)
{
SyntaxError(source, "SASET PRIVATE", _("SASET \037nickname\037 PRIVATE {ON | OFF}"));
}
void OnServHelp(CommandSource &source)
{
}
};
class NSSetPrivate : public Module
{
CommandNSSetPrivate commandnssetprivate;
CommandNSSASetPrivate commandnssasetprivate;
public:
NSSetPrivate(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
{
this->SetAuthor("Anope");
this->SetType(CORE);
Command *c = FindCommand(NickServ, "SET");
if (c)
c->AddSubcommand(this, &commandnssetprivate);
c = FindCommand(NickServ, "SASET");
if (c)
c->AddSubcommand(this, &commandnssasetprivate);
}
~NSSetPrivate()
{
Command *c = FindCommand(NickServ, "SET");
if (c)
c->DelSubcommand(&commandnssetprivate);
c = FindCommand(NickServ, "SASET");
if (c)
c->DelSubcommand(&commandnssasetprivate);
}
};
MODULE_INIT(NSSetPrivate)
|