1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>Server class Reference</title>
4 <link href="inspircd.css" rel="stylesheet" type="text/css">
6 <!-- Generated by Doxygen 1.3-rc3 -->
8 <a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center>
9 <hr><h1>Server Class Reference</h1>Allows server output and query functions This class contains methods which allow a module to query the state of the irc server, and produce output to users and other servers.
10 <a href="#_details">More...</a>
12 <code>#include <<a class="el" href="modules_8h-source.html">modules.h</a>></code>
14 Inheritance diagram for Server:<p><center><img src="classServer__inherit__graph.gif" border="0" usemap="#Server__inherit__map" alt="Inheritance graph"></center>
15 <map name="Server__inherit__map">
16 <area href="classclassbase.html" shape="rect" coords="7,16,73,37" alt="">
18 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for Server:<p><center><img src="classServer__coll__graph.gif" border="0" usemap="#Server__coll__map" alt="Collaboration graph"></center>
19 <map name="Server__coll__map">
20 <area href="classclassbase.html" shape="rect" coords="7,106,73,128" alt="">
22 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classServer-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
24 <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
25 <tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="classServer.html#a0">Server</a> ()</td></tr>
26 <tr><td> </td><td><font size=-1><em>Default constructor.</em> <a href="#a0"></a><em></em></font><br><br></td></tr>
27 <tr><td nowrap align=right valign=top>virtual </td><td valign=bottom><a class="el" href="classServer.html#a1">~Server</a> ()</td></tr>
28 <tr><td> </td><td><font size=-1><em>Default destructor.</em> <a href="#a1"></a><em></em></font><br><br></td></tr>
29 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a2">SendOpers</a> (std::string s)</td></tr>
30 <tr><td> </td><td><font size=-1><em>Sends text to all opers.</em> <a href="#a2"></a><em></em></font><br><br></td></tr>
31 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a3">Log</a> (int level, std::string s)</td></tr>
32 <tr><td> </td><td><font size=-1><em>Writes a log string.</em> <a href="#a3"></a><em></em></font><br><br></td></tr>
33 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a4">Send</a> (int Socket, std::string s)</td></tr>
34 <tr><td> </td><td><font size=-1><em>Sends a line of text down a TCP/IP socket.</em> <a href="#a4"></a><em></em></font><br><br></td></tr>
35 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a5">SendServ</a> (int Socket, std::string s)</td></tr>
36 <tr><td> </td><td><font size=-1><em>Sends text from the server to a socket.</em> <a href="#a5"></a><em></em></font><br><br></td></tr>
37 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a6">SendFrom</a> (int Socket, <a class="el" href="classuserrec.html">userrec</a> *User, std::string s)</td></tr>
38 <tr><td> </td><td><font size=-1><em>Sends text from a user to a socket.</em> <a href="#a6"></a><em></em></font><br><br></td></tr>
39 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a7">SendTo</a> (<a class="el" href="classuserrec.html">userrec</a> *Source, <a class="el" href="classuserrec.html">userrec</a> *Dest, std::string s)</td></tr>
40 <tr><td> </td><td><font size=-1><em>Sends text from a user to another user.</em> <a href="#a7"></a><em></em></font><br><br></td></tr>
41 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a8">SendChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *User, <a class="el" href="classchanrec.html">chanrec</a> *Channel, std::string s, bool IncludeSender)</td></tr>
42 <tr><td> </td><td><font size=-1><em>Sends text from a user to a channel (mulicast).</em> <a href="#a8"></a><em></em></font><br><br></td></tr>
43 <tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a9">CommonChannels</a> (<a class="el" href="classuserrec.html">userrec</a> *u1, <a class="el" href="classuserrec.html">userrec</a> *u2)</td></tr>
44 <tr><td> </td><td><font size=-1><em>Returns true if two users share a common channel.</em> <a href="#a9"></a><em></em></font><br><br></td></tr>
45 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a10">SendCommon</a> (<a class="el" href="classuserrec.html">userrec</a> *User, std::string text, bool IncludeSender)</td></tr>
46 <tr><td> </td><td><font size=-1><em>Sends text from a user to one or more channels (mulicast).</em> <a href="#a10"></a><em></em></font><br><br></td></tr>
47 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a11">SendWallops</a> (<a class="el" href="classuserrec.html">userrec</a> *User, std::string text)</td></tr>
48 <tr><td> </td><td><font size=-1><em>Sends a WALLOPS message.</em> <a href="#a11"></a><em></em></font><br><br></td></tr>
49 <tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a12">IsNick</a> (std::string nick)</td></tr>
50 <tr><td> </td><td><font size=-1><em>Returns true if a nick is valid.</em> <a href="#a12"></a><em></em></font><br><br></td></tr>
51 <tr><td nowrap align=right valign=top>virtual <a class="el" href="classuserrec.html">userrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a13">FindNick</a> (std::string nick)</td></tr>
52 <tr><td> </td><td><font size=-1><em>Attempts to look up a nick and return a pointer to it.</em> <a href="#a13"></a><em></em></font><br><br></td></tr>
53 <tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a14">FindChannel</a> (std::string channel)</td></tr>
54 <tr><td> </td><td><font size=-1><em>Attempts to look up a channel and return a pointer to it.</em> <a href="#a14"></a><em></em></font><br><br></td></tr>
55 <tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a15">ChanMode</a> (<a class="el" href="classuserrec.html">userrec</a> *User, <a class="el" href="classchanrec.html">chanrec</a> *Chan)</td></tr>
56 <tr><td> </td><td><font size=-1><em>Attempts to look up a user's privilages on a channel.</em> <a href="#a15"></a><em></em></font><br><br></td></tr>
57 <tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a16">GetServerName</a> ()</td></tr>
58 <tr><td> </td><td><font size=-1><em>Returns the server name of the server where the module is loaded.</em> <a href="#a16"></a><em></em></font><br><br></td></tr>
59 <tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a17">GetNetworkName</a> ()</td></tr>
60 <tr><td> </td><td><font size=-1><em>Returns the network name, global to all linked servers.</em> <a href="#a17"></a><em></em></font><br><br></td></tr>
61 <tr><td nowrap align=right valign=top>virtual <a class="el" href="classAdmin.html">Admin</a> </td><td valign=bottom><a class="el" href="classServer.html#a18">GetAdmin</a> ()</td></tr>
62 <tr><td> </td><td><font size=-1><em>Returns the information of the server as returned by the /ADMIN command.</em> <a href="#a18"></a><em></em></font><br><br></td></tr>
63 <tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a19">AddExtendedMode</a> (char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td></tr>
64 <tr><td> </td><td><font size=-1><em>Adds an extended mode letter which is parsed by a module This allows modules to add extra mode letters, e.g.</em> <a href="#a19"></a><em></em></font><br><br></td></tr>
65 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a20">AddCommand</a> (char *cmd, <a class="el" href="ctables_8h.html#a0">handlerfunc</a> f, char flags, int minparams)</td></tr>
66 <tr><td> </td><td><font size=-1><em>Adds a command to the command table.</em> <a href="#a20"></a><em></em></font><br><br></td></tr>
67 <tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a21">SendMode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
68 <tr><td> </td><td><font size=-1><em>Sends a servermode.</em> <a href="#a21"></a><em></em></font><br><br></td></tr>
70 <hr><a name="_details"></a><h2>Detailed Description</h2>
71 Allows server output and query functions This class contains methods which allow a module to query the state of the irc server, and produce output to users and other servers.
73 All modules should instantiate at least one copy of this class, and use its member functions to perform their tasks.
77 Definition at line <a class="el" href="modules_8h-source.html#l00197">197</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
78 <a name="a0" doxytag="Server::Server"></a><p>
79 <table width="100%" cellpadding="2" cellspacing="0" border="0">
82 <table cellpadding="0" cellspacing="0" border="0">
84 <td class="md" nowrap valign="top"> Server::Server </td>
85 <td class="md" valign="top">( </td>
86 <td class="mdname1" valign="top" nowrap> </td>
87 <td class="md" valign="top">) </td>
88 <td class="md" nowrap></td>
95 <table cellspacing=5 cellpadding=0 border=0>
105 Creates a Server object.
107 Definition at line <a class="el" href="modules_8cpp-source.html#l00125">125</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
109 <div class="fragment"><pre>00126 {
114 <a name="a1" doxytag="Server::~Server"></a><p>
115 <table width="100%" cellpadding="2" cellspacing="0" border="0">
118 <table cellpadding="0" cellspacing="0" border="0">
120 <td class="md" nowrap valign="top"> Server::~Server </td>
121 <td class="md" valign="top">( </td>
122 <td class="mdname1" valign="top" nowrap> </td>
123 <td class="md" valign="top">) </td>
124 <td class="md" nowrap><code> [virtual]</code></td>
131 <table cellspacing=5 cellpadding=0 border=0>
141 Destroys a Server object.
143 Definition at line <a class="el" href="modules_8cpp-source.html#l00129">129</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
145 <div class="fragment"><pre>00130 {
150 <hr><h2>Member Function Documentation</h2>
151 <a name="a20" doxytag="Server::AddCommand"></a><p>
152 <table width="100%" cellpadding="2" cellspacing="0" border="0">
155 <table cellpadding="0" cellspacing="0" border="0">
157 <td class="md" nowrap valign="top"> void Server::AddCommand </td>
158 <td class="md" valign="top">( </td>
159 <td class="md" nowrap valign="top">char * </td>
160 <td class="mdname" nowrap> <em>cmd</em>, </td>
165 <td class="md" nowrap><a class="el" href="ctables_8h.html#a0">handlerfunc</a> </td>
166 <td class="mdname" nowrap> <em>f</em>, </td>
171 <td class="md" nowrap>char </td>
172 <td class="mdname" nowrap> <em>flags</em>, </td>
177 <td class="md" nowrap>int </td>
178 <td class="mdname" nowrap> <em>minparams</em></td>
182 <td class="md">) </td>
183 <td class="md" colspan="2"><code> [virtual]</code></td>
190 <table cellspacing=5 cellpadding=0 border=0>
198 Adds a command to the command table.
200 This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc:<p>
201 typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)<p>
202 When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'.
204 Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
206 References <a class="el" href="modules_8h.html#a13">createcommand()</a>.
208 <div class="fragment"><pre>00144 {
209 00145 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
214 <a name="a19" doxytag="Server::AddExtendedMode"></a><p>
215 <table width="100%" cellpadding="2" cellspacing="0" border="0">
218 <table cellpadding="0" cellspacing="0" border="0">
220 <td class="md" nowrap valign="top"> bool Server::AddExtendedMode </td>
221 <td class="md" valign="top">( </td>
222 <td class="md" nowrap valign="top">char </td>
223 <td class="mdname" nowrap> <em>modechar</em>, </td>
228 <td class="md" nowrap>int </td>
229 <td class="mdname" nowrap> <em>type</em>, </td>
234 <td class="md" nowrap>bool </td>
235 <td class="mdname" nowrap> <em>requires_oper</em>, </td>
240 <td class="md" nowrap>int </td>
241 <td class="mdname" nowrap> <em>params_when_on</em>, </td>
246 <td class="md" nowrap>int </td>
247 <td class="mdname" nowrap> <em>params_when_off</em></td>
251 <td class="md">) </td>
252 <td class="md" colspan="2"><code> [virtual]</code></td>
259 <table cellspacing=5 cellpadding=0 border=0>
267 Adds an extended mode letter which is parsed by a module This allows modules to add extra mode letters, e.g.
269 +x for hostcloak. the "type" parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
271 Definition at line <a class="el" href="modules_8cpp-source.html#l00244">244</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
273 References <a class="el" href="modules_8cpp-source.html#l00089">DoAddExtendedMode()</a>, <a class="el" href="modules_8h-source.html#l00018">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00019">MT_SERVER</a>.
275 <div class="fragment"><pre>00245 {
276 00246 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
278 00248 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
279 00249 <span class="keywordflow">return</span> <span class="keyword">false</span>;
281 00251 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
283 00253 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
284 00254 <span class="keywordflow">return</span> <span class="keyword">false</span>;
286 00256 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
288 00258 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
289 00259 <span class="keywordflow">return</span> <span class="keyword">false</span>;
291 00261 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
296 <a name="a15" doxytag="Server::ChanMode"></a><p>
297 <table width="100%" cellpadding="2" cellspacing="0" border="0">
300 <table cellpadding="0" cellspacing="0" border="0">
302 <td class="md" nowrap valign="top"> std::string Server::ChanMode </td>
303 <td class="md" valign="top">( </td>
304 <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
305 <td class="mdname" nowrap> <em>User</em>, </td>
310 <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
311 <td class="mdname" nowrap> <em>Chan</em></td>
315 <td class="md">) </td>
316 <td class="md" colspan="2"><code> [virtual]</code></td>
323 <table cellspacing=5 cellpadding=0 border=0>
331 Attempts to look up a user's privilages on a channel.
333 This function will return a string containing either @, , +, or an empty string, representing the user's privilages upon the channel you specify.
335 Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
337 <div class="fragment"><pre>00223 {
338 00224 <span class="keywordflow">return</span> cmode(User,Chan);
343 <a name="a9" doxytag="Server::CommonChannels"></a><p>
344 <table width="100%" cellpadding="2" cellspacing="0" border="0">
347 <table cellpadding="0" cellspacing="0" border="0">
349 <td class="md" nowrap valign="top"> bool Server::CommonChannels </td>
350 <td class="md" valign="top">( </td>
351 <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
352 <td class="mdname" nowrap> <em>u1</em>, </td>
357 <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
358 <td class="mdname" nowrap> <em>u2</em></td>
362 <td class="md">) </td>
363 <td class="md" colspan="2"><code> [virtual]</code></td>
370 <table cellspacing=5 cellpadding=0 border=0>
378 Returns true if two users share a common channel.
380 This method is used internally by the NICK and QUIT commands, and the <a class="el" href="classServer.html#a10">Server::SendCommon</a> method.
382 Definition at line <a class="el" href="modules_8cpp-source.html#l00185">185</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
384 <div class="fragment"><pre>00186 {
385 00187 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
390 <a name="a14" doxytag="Server::FindChannel"></a><p>
391 <table width="100%" cellpadding="2" cellspacing="0" border="0">
394 <table cellpadding="0" cellspacing="0" border="0">
396 <td class="md" nowrap valign="top"> <a class="el" href="classchanrec.html">chanrec</a> * Server::FindChannel </td>
397 <td class="md" valign="top">( </td>
398 <td class="md" nowrap valign="top">std::string </td>
399 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
400 <td class="md" valign="top">) </td>
401 <td class="md" nowrap><code> [virtual]</code></td>
408 <table cellspacing=5 cellpadding=0 border=0>
416 Attempts to look up a channel and return a pointer to it.
418 This function will return NULL if the channel does not exist.
420 Definition at line <a class="el" href="modules_8cpp-source.html#l00217">217</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
422 <div class="fragment"><pre>00218 {
423 00219 <span class="keywordflow">return</span> FindChan(channel.c_str());
428 <a name="a13" doxytag="Server::FindNick"></a><p>
429 <table width="100%" cellpadding="2" cellspacing="0" border="0">
432 <table cellpadding="0" cellspacing="0" border="0">
434 <td class="md" nowrap valign="top"> <a class="el" href="classuserrec.html">userrec</a> * Server::FindNick </td>
435 <td class="md" valign="top">( </td>
436 <td class="md" nowrap valign="top">std::string </td>
437 <td class="mdname1" valign="top" nowrap> <em>nick</em> </td>
438 <td class="md" valign="top">) </td>
439 <td class="md" nowrap><code> [virtual]</code></td>
446 <table cellspacing=5 cellpadding=0 border=0>
454 Attempts to look up a nick and return a pointer to it.
456 This function will return NULL if the nick does not exist.
458 Definition at line <a class="el" href="modules_8cpp-source.html#l00212">212</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
460 <div class="fragment"><pre>00213 {
461 00214 <span class="keywordflow">return</span> Find(nick);
466 <a name="a18" doxytag="Server::GetAdmin"></a><p>
467 <table width="100%" cellpadding="2" cellspacing="0" border="0">
470 <table cellpadding="0" cellspacing="0" border="0">
472 <td class="md" nowrap valign="top"> <a class="el" href="classAdmin.html">Admin</a> Server::GetAdmin </td>
473 <td class="md" valign="top">( </td>
474 <td class="mdname1" valign="top" nowrap> </td>
475 <td class="md" valign="top">) </td>
476 <td class="md" nowrap><code> [virtual]</code></td>
483 <table cellspacing=5 cellpadding=0 border=0>
491 Returns the information of the server as returned by the /ADMIN command.
493 See the <a class="el" href="classAdmin.html">Admin</a> class for further information of the return value. The members <a class="el" href="classAdmin.html#m2">Admin::Nick</a>, <a class="el" href="classAdmin.html#m1">Admin::Email</a> and <a class="el" href="classAdmin.html#m0">Admin::Name</a> contain the information for the server where the module is loaded.
495 Definition at line <a class="el" href="modules_8cpp-source.html#l00237">237</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
497 <div class="fragment"><pre>00238 {
498 00239 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
503 <a name="a17" doxytag="Server::GetNetworkName"></a><p>
504 <table width="100%" cellpadding="2" cellspacing="0" border="0">
507 <table cellpadding="0" cellspacing="0" border="0">
509 <td class="md" nowrap valign="top"> std::string Server::GetNetworkName </td>
510 <td class="md" valign="top">( </td>
511 <td class="mdname1" valign="top" nowrap> </td>
512 <td class="md" valign="top">) </td>
513 <td class="md" nowrap><code> [virtual]</code></td>
520 <table cellspacing=5 cellpadding=0 border=0>
528 Returns the network name, global to all linked servers.
532 Definition at line <a class="el" href="modules_8cpp-source.html#l00232">232</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
534 <div class="fragment"><pre>00233 {
535 00234 <span class="keywordflow">return</span> getnetworkname();
540 <a name="a16" doxytag="Server::GetServerName"></a><p>
541 <table width="100%" cellpadding="2" cellspacing="0" border="0">
544 <table cellpadding="0" cellspacing="0" border="0">
546 <td class="md" nowrap valign="top"> std::string Server::GetServerName </td>
547 <td class="md" valign="top">( </td>
548 <td class="mdname1" valign="top" nowrap> </td>
549 <td class="md" valign="top">) </td>
550 <td class="md" nowrap><code> [virtual]</code></td>
557 <table cellspacing=5 cellpadding=0 border=0>
565 Returns the server name of the server where the module is loaded.
569 Definition at line <a class="el" href="modules_8cpp-source.html#l00227">227</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
571 <div class="fragment"><pre>00228 {
572 00229 <span class="keywordflow">return</span> getservername();
577 <a name="a12" doxytag="Server::IsNick"></a><p>
578 <table width="100%" cellpadding="2" cellspacing="0" border="0">
581 <table cellpadding="0" cellspacing="0" border="0">
583 <td class="md" nowrap valign="top"> bool Server::IsNick </td>
584 <td class="md" valign="top">( </td>
585 <td class="md" nowrap valign="top">std::string </td>
586 <td class="mdname1" valign="top" nowrap> <em>nick</em> </td>
587 <td class="md" valign="top">) </td>
588 <td class="md" nowrap><code> [virtual]</code></td>
595 <table cellspacing=5 cellpadding=0 border=0>
603 Returns true if a nick is valid.
605 Nicks for unregistered connections will return false.
607 Definition at line <a class="el" href="modules_8cpp-source.html#l00207">207</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
609 <div class="fragment"><pre>00208 {
610 00209 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
615 <a name="a3" doxytag="Server::Log"></a><p>
616 <table width="100%" cellpadding="2" cellspacing="0" border="0">
619 <table cellpadding="0" cellspacing="0" border="0">
621 <td class="md" nowrap valign="top"> void Server::Log </td>
622 <td class="md" valign="top">( </td>
623 <td class="md" nowrap valign="top">int </td>
624 <td class="mdname" nowrap> <em>level</em>, </td>
629 <td class="md" nowrap>std::string </td>
630 <td class="mdname" nowrap> <em>s</em></td>
634 <td class="md">) </td>
635 <td class="md" colspan="2"><code> [virtual]</code></td>
642 <table cellspacing=5 cellpadding=0 border=0>
652 This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
654 Definition at line <a class="el" href="modules_8cpp-source.html#l00138">138</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
656 <div class="fragment"><pre>00139 {
657 00140 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
662 <a name="a4" doxytag="Server::Send"></a><p>
663 <table width="100%" cellpadding="2" cellspacing="0" border="0">
666 <table cellpadding="0" cellspacing="0" border="0">
668 <td class="md" nowrap valign="top"> void Server::Send </td>
669 <td class="md" valign="top">( </td>
670 <td class="md" nowrap valign="top">int </td>
671 <td class="mdname" nowrap> <em>Socket</em>, </td>
676 <td class="md" nowrap>std::string </td>
677 <td class="mdname" nowrap> <em>s</em></td>
681 <td class="md">) </td>
682 <td class="md" colspan="2"><code> [virtual]</code></td>
689 <table cellspacing=5 cellpadding=0 border=0>
697 Sends a line of text down a TCP/IP socket.
699 This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
701 Definition at line <a class="el" href="modules_8cpp-source.html#l00153">153</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
703 <div class="fragment"><pre>00154 {
704 00155 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
709 <a name="a8" doxytag="Server::SendChannel"></a><p>
710 <table width="100%" cellpadding="2" cellspacing="0" border="0">
713 <table cellpadding="0" cellspacing="0" border="0">
715 <td class="md" nowrap valign="top"> void Server::SendChannel </td>
716 <td class="md" valign="top">( </td>
717 <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
718 <td class="mdname" nowrap> <em>User</em>, </td>
723 <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
724 <td class="mdname" nowrap> <em>Channel</em>, </td>
729 <td class="md" nowrap>std::string </td>
730 <td class="mdname" nowrap> <em>s</em>, </td>
735 <td class="md" nowrap>bool </td>
736 <td class="mdname" nowrap> <em>IncludeSender</em></td>
740 <td class="md">) </td>
741 <td class="md" colspan="2"><code> [virtual]</code></td>
748 <table cellspacing=5 cellpadding=0 border=0>
756 Sends text from a user to a channel (mulicast).
758 This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
760 Definition at line <a class="el" href="modules_8cpp-source.html#l00173">173</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
762 <div class="fragment"><pre>00174 {
763 00175 <span class="keywordflow">if</span> (IncludeSender)
765 00177 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
767 00179 <span class="keywordflow">else</span>
769 00181 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
775 <a name="a10" doxytag="Server::SendCommon"></a><p>
776 <table width="100%" cellpadding="2" cellspacing="0" border="0">
779 <table cellpadding="0" cellspacing="0" border="0">
781 <td class="md" nowrap valign="top"> void Server::SendCommon </td>
782 <td class="md" valign="top">( </td>
783 <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
784 <td class="mdname" nowrap> <em>User</em>, </td>
789 <td class="md" nowrap>std::string </td>
790 <td class="mdname" nowrap> <em>text</em>, </td>
795 <td class="md" nowrap>bool </td>
796 <td class="mdname" nowrap> <em>IncludeSender</em></td>
800 <td class="md">) </td>
801 <td class="md" colspan="2"><code> [virtual]</code></td>
808 <table cellspacing=5 cellpadding=0 border=0>
816 Sends text from a user to one or more channels (mulicast).
818 This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
820 Definition at line <a class="el" href="modules_8cpp-source.html#l00190">190</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
822 <div class="fragment"><pre>00191 {
823 00192 <span class="keywordflow">if</span> (IncludeSender)
825 00194 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
827 00196 <span class="keywordflow">else</span>
829 00198 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
835 <a name="a6" doxytag="Server::SendFrom"></a><p>
836 <table width="100%" cellpadding="2" cellspacing="0" border="0">
839 <table cellpadding="0" cellspacing="0" border="0">
841 <td class="md" nowrap valign="top"> void Server::SendFrom </td>
842 <td class="md" valign="top">( </td>
843 <td class="md" nowrap valign="top">int </td>
844 <td class="mdname" nowrap> <em>Socket</em>, </td>
849 <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
850 <td class="mdname" nowrap> <em>User</em>, </td>
855 <td class="md" nowrap>std::string </td>
856 <td class="mdname" nowrap> <em>s</em></td>
860 <td class="md">) </td>
861 <td class="md" colspan="2"><code> [virtual]</code></td>
868 <table cellspacing=5 cellpadding=0 border=0>
876 Sends text from a user to a socket.
878 This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
880 Definition at line <a class="el" href="modules_8cpp-source.html#l00163">163</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
882 <div class="fragment"><pre>00164 {
883 00165 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
888 <a name="a21" doxytag="Server::SendMode"></a><p>
889 <table width="100%" cellpadding="2" cellspacing="0" border="0">
892 <table cellpadding="0" cellspacing="0" border="0">
894 <td class="md" nowrap valign="top"> void Server::SendMode </td>
895 <td class="md" valign="top">( </td>
896 <td class="md" nowrap valign="top">char ** </td>
897 <td class="mdname" nowrap> <em>parameters</em>, </td>
902 <td class="md" nowrap>int </td>
903 <td class="mdname" nowrap> <em>pcnt</em>, </td>
908 <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
909 <td class="mdname" nowrap> <em>user</em></td>
913 <td class="md">) </td>
914 <td class="md" colspan="2"><code> [virtual]</code></td>
921 <table cellspacing=5 cellpadding=0 border=0>
931 you must format the parameters array with the target, modes and parameters for those modes.<p>
934 modes[0] = ChannelName;<p>
936 modes[2] = user->nick;<p>
937 Srv->SendMode(modes,3,user);<p>
938 The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
940 Definition at line <a class="el" href="modules_8cpp-source.html#l00148">148</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
942 References <a class="el" href="modules_8h.html#a14">server_mode()</a>.
944 <div class="fragment"><pre>00149 {
945 00150 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
950 <a name="a2" doxytag="Server::SendOpers"></a><p>
951 <table width="100%" cellpadding="2" cellspacing="0" border="0">
954 <table cellpadding="0" cellspacing="0" border="0">
956 <td class="md" nowrap valign="top"> void Server::SendOpers </td>
957 <td class="md" valign="top">( </td>
958 <td class="md" nowrap valign="top">std::string </td>
959 <td class="mdname1" valign="top" nowrap> <em>s</em> </td>
960 <td class="md" valign="top">) </td>
961 <td class="md" nowrap><code> [virtual]</code></td>
968 <table cellspacing=5 cellpadding=0 border=0>
976 Sends text to all opers.
978 This method sends a server notice to all opers with the usermode +s.
980 Definition at line <a class="el" href="modules_8cpp-source.html#l00133">133</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
982 <div class="fragment"><pre>00134 {
983 00135 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
988 <a name="a5" doxytag="Server::SendServ"></a><p>
989 <table width="100%" cellpadding="2" cellspacing="0" border="0">
992 <table cellpadding="0" cellspacing="0" border="0">
994 <td class="md" nowrap valign="top"> void Server::SendServ </td>
995 <td class="md" valign="top">( </td>
996 <td class="md" nowrap valign="top">int </td>
997 <td class="mdname" nowrap> <em>Socket</em>, </td>
1002 <td class="md" nowrap>std::string </td>
1003 <td class="mdname" nowrap> <em>s</em></td>
1007 <td class="md">) </td>
1008 <td class="md" colspan="2"><code> [virtual]</code></td>
1015 <table cellspacing=5 cellpadding=0 border=0>
1023 Sends text from the server to a socket.
1025 This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
1027 Definition at line <a class="el" href="modules_8cpp-source.html#l00158">158</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
1029 <div class="fragment"><pre>00159 {
1030 00160 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
1035 <a name="a7" doxytag="Server::SendTo"></a><p>
1036 <table width="100%" cellpadding="2" cellspacing="0" border="0">
1039 <table cellpadding="0" cellspacing="0" border="0">
1041 <td class="md" nowrap valign="top"> void Server::SendTo </td>
1042 <td class="md" valign="top">( </td>
1043 <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
1044 <td class="mdname" nowrap> <em>Source</em>, </td>
1049 <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
1050 <td class="mdname" nowrap> <em>Dest</em>, </td>
1055 <td class="md" nowrap>std::string </td>
1056 <td class="mdname" nowrap> <em>s</em></td>
1060 <td class="md">) </td>
1061 <td class="md" colspan="2"><code> [virtual]</code></td>
1068 <table cellspacing=5 cellpadding=0 border=0>
1076 Sends text from a user to another user.
1078 This method writes a line of text to a user, with a user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459)
1080 Definition at line <a class="el" href="modules_8cpp-source.html#l00168">168</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
1082 <div class="fragment"><pre>00169 {
1083 00170 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
1088 <a name="a11" doxytag="Server::SendWallops"></a><p>
1089 <table width="100%" cellpadding="2" cellspacing="0" border="0">
1092 <table cellpadding="0" cellspacing="0" border="0">
1094 <td class="md" nowrap valign="top"> void Server::SendWallops </td>
1095 <td class="md" valign="top">( </td>
1096 <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
1097 <td class="mdname" nowrap> <em>User</em>, </td>
1102 <td class="md" nowrap>std::string </td>
1103 <td class="mdname" nowrap> <em>text</em></td>
1107 <td class="md">) </td>
1108 <td class="md" colspan="2"><code> [virtual]</code></td>
1115 <table cellspacing=5 cellpadding=0 border=0>
1123 Sends a WALLOPS message.
1125 This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
1127 Definition at line <a class="el" href="modules_8cpp-source.html#l00202">202</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
1129 <div class="fragment"><pre>00203 {
1130 00204 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
1135 <hr>The documentation for this class was generated from the following files:<ul>
1136 <li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
1137 <hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:09 2004 for InspIRCd by
1138 <a href="http://www.doxygen.org/index.html">
1139 <img src="doxygen.png" alt="doxygen" align="middle" border=0
1140 width=110 height=53></a>1.3-rc3 </small></address>