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>InspIRCd: userrec class Reference</title>
4 <link href="inspircd.css" rel="stylesheet" type="text/css">
6 <!-- Generated by Doxygen 1.3.3 -->
7 <div class="qindex"><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></div>
8 <h1>userrec Class Reference</h1>Holds all information about a user This class stores all information about a user connected to the irc server.
9 <a href="#_details">More...</a>
11 <code>#include <<a class="el" href="users_8h-source.html">users.h</a>></code>
13 Inherits <a class="el" href="classconnection.html">connection</a>.
15 <a href="classuserrec-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
17 <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
18 <tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a0">userrec</a> ()</td></tr>
20 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a1">~userrec</a> ()</td></tr>
22 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual char * </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a2">GetFullHost</a> ()</td></tr>
24 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. </em> <a href="#a2"></a><em><br><br></td></tr>
25 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual char * </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a3">GetFullRealHost</a> ()</td></tr>
27 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. </em> <a href="#a3"></a><em><br><br></td></tr>
28 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a4">IsInvited</a> (char *channel)</td></tr>
30 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if a user is invited to a channel. </em> <a href="#a4"></a><em><br><br></td></tr>
31 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a5">InviteTo</a> (char *channel)</td></tr>
33 <tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). </em> <a href="#a5"></a><em><br><br></td></tr>
34 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a6">RemoveInvite</a> (char *channel)</td></tr>
36 <tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a channel from a users invite list. </em> <a href="#a6"></a><em><br><br></td></tr>
37 <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a7">HasPermission</a> (char *command)</td></tr>
39 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. </em> <a href="#a7"></a><em><br><br></td></tr>
40 <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a8">AddBuffer</a> (std::string a)</td></tr>
42 <tr><td class="mdescLeft"> </td><td class="mdescRight">This method adds data to the buffer of the user. </em> <a href="#a8"></a><em><br><br></td></tr>
43 <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a9">BufferIsReady</a> ()</td></tr>
45 <tr><td class="mdescLeft"> </td><td class="mdescRight">This method returns true if the buffer contains at least one carriage return character (e.g. </em> <a href="#a9"></a><em><br><br></td></tr>
46 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a10">ClearBuffer</a> ()</td></tr>
48 <tr><td class="mdescLeft"> </td><td class="mdescRight">This function clears the entire buffer by setting it to an empty string. </em> <a href="#a10"></a><em><br><br></td></tr>
49 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a11">GetBuffer</a> ()</td></tr>
51 <tr><td class="mdescLeft"> </td><td class="mdescRight">This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string. </em> <a href="#a11"></a><em><br><br></td></tr>
52 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a12">SetWriteError</a> (std::string error)</td></tr>
54 <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the write error for a connection. </em> <a href="#a12"></a><em><br><br></td></tr>
55 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a13">GetWriteError</a> ()</td></tr>
57 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the write error which last occured on this connection or an empty string if none occured. </em> <a href="#a13"></a><em><br><br></td></tr>
58 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a14">AddWriteBuf</a> (std::string data)</td></tr>
60 <tr><td class="mdescLeft"> </td><td class="mdescRight">Adds to the user's write buffer. </em> <a href="#a14"></a><em><br><br></td></tr>
61 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a15">FlushWriteBuf</a> ()</td></tr>
63 <tr><td class="mdescLeft"> </td><td class="mdescRight">Flushes as much of the user's buffer to the file descriptor as possible. </em> <a href="#a15"></a><em><br><br></td></tr>
64 <tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
65 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o0">nick</a> [NICKMAX]</td></tr>
67 <tr><td class="mdescLeft"> </td><td class="mdescRight">The users nickname. </em> <a href="#o0"></a><em><br><br></td></tr>
68 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o1">ident</a> [16]</td></tr>
70 <tr><td class="mdescLeft"> </td><td class="mdescRight">The users ident reply. </em> <a href="#o1"></a><em><br><br></td></tr>
71 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o2">dhost</a> [160]</td></tr>
73 <tr><td class="mdescLeft"> </td><td class="mdescRight">The host displayed to non-opers (used for cloaking etc). </em> <a href="#o2"></a><em><br><br></td></tr>
74 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o3">fullname</a> [128]</td></tr>
76 <tr><td class="mdescLeft"> </td><td class="mdescRight">The users full name. </em> <a href="#o3"></a><em><br><br></td></tr>
77 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o4">modes</a> [MAXBUF]</td></tr>
79 <tr><td class="mdescLeft"> </td><td class="mdescRight">The user's mode string. </em> <a href="#o4"></a><em><br><br></td></tr>
80 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classucrec.html">ucrec</a> </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o5">chans</a> [MAXCHANS]</td></tr>
82 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o6">server</a> [256]</td></tr>
84 <tr><td class="mdescLeft"> </td><td class="mdescRight">The server the user is connected to. </em> <a href="#o6"></a><em><br><br></td></tr>
85 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o7">awaymsg</a> [512]</td></tr>
87 <tr><td class="mdescLeft"> </td><td class="mdescRight">The user's away message. </em> <a href="#o7"></a><em><br><br></td></tr>
88 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o8">result</a> [256]</td></tr>
90 <tr><td class="mdescLeft"> </td><td class="mdescRight">Stores the result of the last GetFullHost or GetRealHost call. </em> <a href="#o8"></a><em><br><br></td></tr>
91 <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o9">flood</a></td></tr>
93 <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. </em> <a href="#o9"></a><em><br><br></td></tr>
94 <tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o10">timeout</a></td></tr>
96 <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected. </em> <a href="#o10"></a><em><br><br></td></tr>
97 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o11">oper</a> [NICKMAX]</td></tr>
99 <tr><td class="mdescLeft"> </td><td class="mdescRight">The oper type they logged in as, if they are an oper. </em> <a href="#o11"></a><em><br><br></td></tr>
100 <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o12">dns_done</a></td></tr>
102 <tr><td class="mdescLeft"> </td><td class="mdescRight">True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. </em> <a href="#o12"></a><em><br><br></td></tr>
103 <tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o13">pingmax</a></td></tr>
105 <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of seconds between PINGs for this user (set from <connect:allow> tag. </em> <a href="#o13"></a><em><br><br></td></tr>
106 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o14">password</a> [MAXBUF]</td></tr>
108 <tr><td class="mdescLeft"> </td><td class="mdescRight">Password specified by the user when they registered. </em> <a href="#o14"></a><em><br><br></td></tr>
109 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o15">recvq</a></td></tr>
111 <tr><td class="mdescLeft"> </td><td class="mdescRight">User's receive queue. </em> <a href="#o15"></a><em><br><br></td></tr>
112 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o16">sendq</a></td></tr>
114 <tr><td class="mdescLeft"> </td><td class="mdescRight">User's send queue. </em> <a href="#o16"></a><em><br><br></td></tr>
115 <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o17">lines_in</a></td></tr>
117 <tr><td class="mdescLeft"> </td><td class="mdescRight">Flood counters. </em> <a href="#o17"></a><em><br><br></td></tr>
118 <tr><td class="memItemLeft" nowrap align=right valign=top>time_t </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o18">reset_due</a></td></tr>
120 <tr><td class="memItemLeft" nowrap align=right valign=top>long </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o19">threshold</a></td></tr>
122 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o20">WriteError</a></td></tr>
124 <tr><td class="memItemLeft" nowrap align=right valign=top>long </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o21">sendqmax</a></td></tr>
126 <tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size this user's sendq can become. </em> <a href="#o21"></a><em><br><br></td></tr>
127 <tr><td class="memItemLeft" nowrap align=right valign=top>long </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o22">recvqmax</a></td></tr>
129 <tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size this user's recvq can become. </em> <a href="#o22"></a><em><br><br></td></tr>
130 <tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
131 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="users_8h.html#a6">InvitedList</a> </td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#r0">invites</a></td></tr>
133 <tr><td class="mdescLeft"> </td><td class="mdescRight">A list of channels the user has a pending invite to. </em> <a href="#r0"></a><em><br><br></td></tr>
135 <hr><a name="_details"></a><h2>Detailed Description</h2>
136 Holds all information about a user This class stores all information about a user connected to the irc server.
138 Everything about a connection is stored here primarily, from the user's socket ID (file descriptor) through to the user's nickname and hostname. Use the Find method of the server class to locate a specific user by nickname.
142 Definition at line <a class="el" href="users_8h-source.html#l00108">108</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
143 <a name="a0" doxytag="userrec::userrec"></a><p>
144 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
147 <table cellpadding="0" cellspacing="0" border="0">
149 <td class="md" nowrap valign="top"> userrec::userrec </td>
150 <td class="md" valign="top">( </td>
151 <td class="mdname1" valign="top" nowrap> </td>
152 <td class="md" valign="top"> ) </td>
153 <td class="md" nowrap></td>
160 <table cellspacing=5 cellpadding=0 border=0>
170 Definition at line <a class="el" href="users_8cpp-source.html#l00028">28</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
172 References <a class="el" href="users_8h-source.html#l00151">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00227">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00231">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00233">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00142">chans</a>, <a class="el" href="connection_8h-source.html#l00235">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00239">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00130">dhost</a>, <a class="el" href="users_8h-source.html#l00179">dns_done</a>, <a class="el" href="connection_8h-source.html#l00215">connection::fd</a>, <a class="el" href="users_8h-source.html#l00162">flood</a>, <a class="el" href="users_8h-source.html#l00134">fullname</a>, <a class="el" href="connection_8h-source.html#l00243">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00219">connection::host</a>, <a class="el" href="users_8h-source.html#l00125">ident</a>, <a class="el" href="connection_8h-source.html#l00265">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00114">invites</a>, <a class="el" href="connection_8h-source.html#l00223">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00257">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00204">lines_in</a>, <a class="el" href="users_8h-source.html#l00140">modes</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, <a class="el" href="connection_8h-source.html#l00269">connection::nping</a>, <a class="el" href="users_8h-source.html#l00175">oper</a>, <a class="el" href="connection_8h-source.html#l00249">connection::port</a>, <a class="el" href="users_8h-source.html#l00195">recvq</a>, <a class="el" href="connection_8h-source.html#l00253">connection::registered</a>, <a class="el" href="users_8h-source.html#l00205">reset_due</a>, <a class="el" href="users_8h-source.html#l00156">result</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, <a class="el" href="users_8h-source.html#l00146">server</a>, <a class="el" href="connection_8h-source.html#l00261">connection::signon</a>, <a class="el" href="channels_8cpp-source.html#l00107">TIME</a>, <a class="el" href="users_8h-source.html#l00168">timeout</a>, and <a class="el" href="channels_8h-source.html#l00228">ucrec::uc_modes</a>.
174 <div class="fragment"><pre>00029 {
175 00030 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
176 00031 strcpy(nick,<span class="stringliteral">""</span>);
177 00032 strcpy(ip,<span class="stringliteral">"127.0.0.1"</span>);
178 00033 <a class="code" href="classuserrec.html#o10">timeout</a> = 0;
179 00034 strcpy(ident,<span class="stringliteral">""</span>);
180 00035 strcpy(host,<span class="stringliteral">""</span>);
181 00036 strcpy(dhost,<span class="stringliteral">""</span>);
182 00037 strcpy(fullname,<span class="stringliteral">""</span>);
183 00038 strcpy(modes,<span class="stringliteral">""</span>);
184 00039 strcpy(server,<span class="stringliteral">""</span>);
185 00040 strcpy(awaymsg,<span class="stringliteral">""</span>);
186 00041 strcpy(oper,<span class="stringliteral">""</span>);
187 00042 <a class="code" href="classuserrec.html#o18">reset_due</a> = <a class="code" href="channels_8cpp.html#a37">TIME</a>;
188 00043 <a class="code" href="classuserrec.html#o17">lines_in</a> = 0;
189 00044 <a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="classconnection.html#o10">lastping</a> = <a class="code" href="classconnection.html#o11">signon</a> = <a class="code" href="classconnection.html#o12">idle_lastmsg</a> = <a class="code" href="classconnection.html#o13">nping</a> = <a class="code" href="classconnection.html#o9">registered</a> = 0;
190 00045 <a class="code" href="classuserrec.html#o9">flood</a> = <a class="code" href="classconnection.html#o8">port</a> = <a class="code" href="classconnection.html#o3">bytes_in</a> = <a class="code" href="classconnection.html#o4">bytes_out</a> = <a class="code" href="classconnection.html#o5">cmds_in</a> = <a class="code" href="classconnection.html#o6">cmds_out</a> = 0;
191 00046 <a class="code" href="classconnection.html#o7">haspassed</a> = <span class="keyword">false</span>;
192 00047 <a class="code" href="classuserrec.html#o12">dns_done</a> = <span class="keyword">false</span>;
193 00048 <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
194 00049 <a class="code" href="classuserrec.html#o16">sendq</a> = <span class="stringliteral">""</span>;
195 00050 strcpy(result,<span class="stringliteral">""</span>);
196 00051 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < MAXCHANS; i++)
198 00053 this-><a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a> = NULL;
199 00054 this-><a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o0">uc_modes</a> = 0;
201 00056 <a class="code" href="classuserrec.html#r0">invites</a>.clear();
206 <a name="a1" doxytag="userrec::~userrec"></a><p>
207 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
210 <table cellpadding="0" cellspacing="0" border="0">
212 <td class="md" nowrap valign="top"> virtual userrec::~<a class="el" href="classuserrec.html">userrec</a> </td>
213 <td class="md" valign="top">( </td>
214 <td class="mdname1" valign="top" nowrap> </td>
215 <td class="md" valign="top"> ) </td>
216 <td class="md" nowrap><code> [inline, virtual]</code></td>
223 <table cellspacing=5 cellpadding=0 border=0>
233 Definition at line <a class="el" href="users_8h-source.html#l00222">222</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
235 <div class="fragment"><pre>00222 { }
239 <hr><h2>Member Function Documentation</h2>
240 <a name="a8" doxytag="userrec::AddBuffer"></a><p>
241 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
244 <table cellpadding="0" cellspacing="0" border="0">
246 <td class="md" nowrap valign="top"> bool userrec::AddBuffer </td>
247 <td class="md" valign="top">( </td>
248 <td class="md" nowrap valign="top">std::string </td>
249 <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
250 <td class="md" valign="top"> ) </td>
251 <td class="md" nowrap></td>
258 <table cellspacing=5 cellpadding=0 border=0>
266 This method adds data to the buffer of the user.
268 The buffer can grow to any size within limits of the available memory, managed by the size of a std::string, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted.
270 Definition at line <a class="el" href="users_8cpp-source.html#l00169">169</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
272 References <a class="el" href="users_8h-source.html#l00195">recvq</a>, <a class="el" href="users_8h-source.html#l00218">recvqmax</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.
274 <div class="fragment"><pre>00170 {
275 00171 std::string b = <span class="stringliteral">""</span>;
276 00172 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < a.length(); i++)
277 00173 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) && (a[i] != <span class="charliteral">'\0'</span>) && (a[i] != 7))
279 00175 std::stringstream stream(recvq);
280 00176 stream << b;
281 00177 <a class="code" href="classuserrec.html#o15">recvq</a> = stream.str();
282 00178 <span class="keywordtype">int</span> i = 0;
283 00179 <span class="comment">// count the size of the first line in the buffer.</span>
284 00180 <span class="keywordflow">while</span> (i < <a class="code" href="classuserrec.html#o15">recvq</a>.length())
286 00182 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
287 00183 <span class="keywordflow">break</span>;
289 00185 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>.length() > this-><a class="code" href="classuserrec.html#o22">recvqmax</a>)
291 00187 this-><a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
292 00188 WriteOpers(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#o15">recvq</a>.length(),this-><a class="code" href="classuserrec.html#o22">recvqmax</a>);
294 00190 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
295 00191 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
296 00192 <span class="keywordflow">return</span> (i < 600);
301 <a name="a14" doxytag="userrec::AddWriteBuf"></a><p>
302 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
305 <table cellpadding="0" cellspacing="0" border="0">
307 <td class="md" nowrap valign="top"> void userrec::AddWriteBuf </td>
308 <td class="md" valign="top">( </td>
309 <td class="md" nowrap valign="top">std::string </td>
310 <td class="mdname1" valign="top" nowrap> <em>data</em> </td>
311 <td class="md" valign="top"> ) </td>
312 <td class="md" nowrap></td>
319 <table cellspacing=5 cellpadding=0 border=0>
327 Adds to the user's write buffer.
329 You may add any amount of text up to this users sendq value, if you exceed the sendq value, <a class="el" href="classuserrec.html#a12">SetWriteError()</a> will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.
331 Definition at line <a class="el" href="users_8cpp-source.html#l00225">225</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
333 References <a class="el" href="users_8cpp-source.html#l00271">GetWriteError()</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, <a class="el" href="users_8h-source.html#l00214">sendqmax</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.
335 <div class="fragment"><pre>00226 {
336 00227 <span class="keywordflow">if</span> (this-><a class="code" href="classuserrec.html#a13">GetWriteError</a>() != <span class="stringliteral">""</span>)
337 00228 <span class="keywordflow">return</span>;
338 00229 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length() > this-><a class="code" href="classuserrec.html#o21">sendqmax</a>)
340 00231 WriteOpers(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length(),this-><a class="code" href="classuserrec.html#o21">sendqmax</a>);
341 00232 this-><a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
342 00233 <span class="keywordflow">return</span>;
344 00235 std::stringstream stream;
345 00236 stream << <a class="code" href="classuserrec.html#o16">sendq</a> << data;
346 00237 <a class="code" href="classuserrec.html#o16">sendq</a> = stream.str();
351 <a name="a9" doxytag="userrec::BufferIsReady"></a><p>
352 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
355 <table cellpadding="0" cellspacing="0" border="0">
357 <td class="md" nowrap valign="top"> bool userrec::BufferIsReady </td>
358 <td class="md" valign="top">( </td>
359 <td class="mdname1" valign="top" nowrap> </td>
360 <td class="md" valign="top"> ) </td>
361 <td class="md" nowrap></td>
368 <table cellspacing=5 cellpadding=0 border=0>
376 This method returns true if the buffer contains at least one carriage return character (e.g.
378 one complete line may be read)
380 Definition at line <a class="el" href="users_8cpp-source.html#l00195">195</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
382 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
384 <div class="fragment"><pre>00196 {
385 00197 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classuserrec.html#o15">recvq</a>.length(); i++)
386 00198 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i] == <span class="charliteral">'\n'</span>)
387 00199 <span class="keywordflow">return</span> <span class="keyword">true</span>;
388 00200 <span class="keywordflow">return</span> <span class="keyword">false</span>;
393 <a name="a10" doxytag="userrec::ClearBuffer"></a><p>
394 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
397 <table cellpadding="0" cellspacing="0" border="0">
399 <td class="md" nowrap valign="top"> void userrec::ClearBuffer </td>
400 <td class="md" valign="top">( </td>
401 <td class="mdname1" valign="top" nowrap> </td>
402 <td class="md" valign="top"> ) </td>
403 <td class="md" nowrap></td>
410 <table cellspacing=5 cellpadding=0 border=0>
418 This function clears the entire buffer by setting it to an empty string.
422 Definition at line <a class="el" href="users_8cpp-source.html#l00203">203</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
424 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
426 Referenced by <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00681">Server::UserToPseudo()</a>.
428 <div class="fragment"><pre>00204 {
429 00205 <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
434 <a name="a15" doxytag="userrec::FlushWriteBuf"></a><p>
435 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
438 <table cellpadding="0" cellspacing="0" border="0">
440 <td class="md" nowrap valign="top"> void userrec::FlushWriteBuf </td>
441 <td class="md" valign="top">( </td>
442 <td class="mdname1" valign="top" nowrap> </td>
443 <td class="md" valign="top"> ) </td>
444 <td class="md" nowrap></td>
451 <table cellspacing=5 cellpadding=0 border=0>
459 Flushes as much of the user's buffer to the file descriptor as possible.
461 This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method.
463 Definition at line <a class="el" href="users_8cpp-source.html#l00241">241</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
465 References <a class="el" href="connection_8h-source.html#l00231">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00239">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.
467 <div class="fragment"><pre>00242 {
468 00243 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length())
470 00245 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-><a class="code" href="classuserrec.html#o16">sendq</a>.c_str();
471 00246 <span class="keywordtype">int</span> n_sent = write(this->fd,tb,this->sendq.length());
472 00247 <span class="keywordflow">if</span> (n_sent == -1)
474 00249 this-><a class="code" href="classuserrec.html#a12">SetWriteError</a>(strerror(errno));
476 00251 <span class="keywordflow">else</span>
478 00253 <span class="comment">// advance the queue</span>
480 00255 this-><a class="code" href="classuserrec.html#o16">sendq</a> = tb;
481 00256 <span class="comment">// update the user's stats counters</span>
482 00257 this-><a class="code" href="classconnection.html#o4">bytes_out</a> += n_sent;
483 00258 this-><a class="code" href="classconnection.html#o6">cmds_out</a>++;
490 <a name="a11" doxytag="userrec::GetBuffer"></a><p>
491 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
494 <table cellpadding="0" cellspacing="0" border="0">
496 <td class="md" nowrap valign="top"> std::string userrec::GetBuffer </td>
497 <td class="md" valign="top">( </td>
498 <td class="mdname1" valign="top" nowrap> </td>
499 <td class="md" valign="top"> ) </td>
500 <td class="md" nowrap></td>
507 <table cellspacing=5 cellpadding=0 border=0>
515 This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string.
517 This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use <a class="el" href="classuserrec.html#a9">BufferIsReady()</a> to check if it is ok to read the buffer before calling <a class="el" href="classuserrec.html#a11">GetBuffer()</a>.
519 Definition at line <a class="el" href="users_8cpp-source.html#l00208">208</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
521 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
523 <div class="fragment"><pre>00209 {
524 00210 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a> == <span class="stringliteral">""</span>)
525 00211 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
526 00212 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#o15">recvq</a>.c_str();
527 00213 std::string ret = <span class="stringliteral">""</span>;
528 00214 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) && (strlen(line)))
530 00216 ret = ret + *line;
533 00219 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
535 00221 <a class="code" href="classuserrec.html#o15">recvq</a> = line;
536 00222 <span class="keywordflow">return</span> ret;
541 <a name="a2" doxytag="userrec::GetFullHost"></a><p>
542 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
545 <table cellpadding="0" cellspacing="0" border="0">
547 <td class="md" nowrap valign="top"> char * userrec::GetFullHost </td>
548 <td class="md" valign="top">( </td>
549 <td class="mdname1" valign="top" nowrap> </td>
550 <td class="md" valign="top"> ) </td>
551 <td class="md" nowrap><code> [virtual]</code></td>
558 <table cellspacing=5 cellpadding=0 border=0>
566 Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form.
570 Definition at line <a class="el" href="users_8cpp-source.html#l00061">61</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
572 References <a class="el" href="users_8h-source.html#l00130">dhost</a>, <a class="el" href="users_8h-source.html#l00125">ident</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, and <a class="el" href="users_8h-source.html#l00156">result</a>.
574 <div class="fragment"><pre>00062 {
575 00063 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
576 00064 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#o8">result</a>;
581 <a name="a3" doxytag="userrec::GetFullRealHost"></a><p>
582 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
585 <table cellpadding="0" cellspacing="0" border="0">
587 <td class="md" nowrap valign="top"> char * userrec::GetFullRealHost </td>
588 <td class="md" valign="top">( </td>
589 <td class="mdname1" valign="top" nowrap> </td>
590 <td class="md" valign="top"> ) </td>
591 <td class="md" nowrap><code> [virtual]</code></td>
598 <table cellspacing=5 cellpadding=0 border=0>
606 Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form.
608 If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
610 Definition at line <a class="el" href="users_8cpp-source.html#l00068">68</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
612 References <a class="el" href="connection_8h-source.html#l00219">connection::host</a>, <a class="el" href="users_8h-source.html#l00125">ident</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, and <a class="el" href="users_8h-source.html#l00156">result</a>.
614 <div class="fragment"><pre>00069 {
615 00070 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
616 00071 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#o8">result</a>;
621 <a name="a13" doxytag="userrec::GetWriteError"></a><p>
622 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
625 <table cellpadding="0" cellspacing="0" border="0">
627 <td class="md" nowrap valign="top"> std::string userrec::GetWriteError </td>
628 <td class="md" valign="top">( </td>
629 <td class="mdname1" valign="top" nowrap> </td>
630 <td class="md" valign="top"> ) </td>
631 <td class="md" nowrap></td>
638 <table cellspacing=5 cellpadding=0 border=0>
646 Returns the write error which last occured on this connection or an empty string if none occured.
650 Definition at line <a class="el" href="users_8cpp-source.html#l00271">271</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
652 References <a class="el" href="users_8h-source.html#l00210">WriteError</a>.
654 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>.
656 <div class="fragment"><pre>00272 {
657 00273 <span class="keywordflow">return</span> this-><a class="code" href="classuserrec.html#o20">WriteError</a>;
662 <a name="a7" doxytag="userrec::HasPermission"></a><p>
663 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
666 <table cellpadding="0" cellspacing="0" border="0">
668 <td class="md" nowrap valign="top"> bool userrec::HasPermission </td>
669 <td class="md" valign="top">( </td>
670 <td class="md" nowrap valign="top">char * </td>
671 <td class="mdname1" valign="top" nowrap> <em>command</em> </td>
672 <td class="md" valign="top"> ) </td>
673 <td class="md" nowrap></td>
680 <table cellspacing=5 cellpadding=0 border=0>
688 Returns true or false for if a user can execute a privilaged oper command.
690 This is done by looking up their oper type from <a class="el" href="classuserrec.html#o11">userrec::oper</a>, then referencing this to their oper classes and checking the commands they can execute.
692 Definition at line <a class="el" href="users_8cpp-source.html#l00117">117</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
694 References <a class="el" href="channels_8cpp-source.html#l00101">config_f</a>, and <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.
696 <div class="fragment"><pre>00118 {
697 00119 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
698 00120 <span class="keywordtype">char</span>* mycmd;
699 00121 <span class="keywordtype">char</span>* savept;
700 00122 <span class="keywordtype">char</span>* savept2;
702 00124 <span class="comment">// are they even an oper at all?</span>
703 00125 <span class="keywordflow">if</span> (strchr(this->modes,<span class="charliteral">'o'</span>))
705 00127 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper"</span>,this->nick);
706 00128 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j < ConfValueEnum(<span class="stringliteral">"type"</span>,&config_f); j++)
708 00130 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&config_f);
709 00131 <span class="keywordflow">if</span> (!strcmp(TypeName,this->oper))
711 00133 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper of type '%s'"</span>,this->nick,this->oper);
712 00134 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&config_f);
713 00135 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&savept);
714 00136 <span class="keywordflow">while</span> (myclass)
716 00138 log(DEBUG,<span class="stringliteral">"*** HasPermission: checking classtype '%s'"</span>,myclass);
717 00139 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k < ConfValueEnum(<span class="stringliteral">"class"</span>,&config_f); k++)
719 00141 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&config_f);
720 00142 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
722 00144 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&config_f);
723 00145 log(DEBUG,<span class="stringliteral">"*** HasPermission: found class named %s with commands: '%s'"</span>,ClassName,CommandList);
726 00148 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&savept2);
727 00149 <span class="keywordflow">while</span> (mycmd)
729 00151 <span class="keywordflow">if</span> (!strcasecmp(mycmd,command))
731 00153 log(DEBUG,<span class="stringliteral">"*** Command %s found, returning true"</span>,command);
732 00154 <span class="keywordflow">return</span> <span class="keyword">true</span>;
734 00156 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept2);
738 00160 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept);
743 00165 <span class="keywordflow">return</span> <span class="keyword">false</span>;
748 <a name="a5" doxytag="userrec::InviteTo"></a><p>
749 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
752 <table cellpadding="0" cellspacing="0" border="0">
754 <td class="md" nowrap valign="top"> void userrec::InviteTo </td>
755 <td class="md" valign="top">( </td>
756 <td class="md" nowrap valign="top">char * </td>
757 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
758 <td class="md" valign="top"> ) </td>
759 <td class="md" nowrap><code> [virtual]</code></td>
766 <table cellspacing=5 cellpadding=0 border=0>
774 Adds a channel to a users invite list (invites them to a channel).
778 Definition at line <a class="el" href="users_8cpp-source.html#l00088">88</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
780 References <a class="el" href="users_8h-source.html#l00039">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.
782 <div class="fragment"><pre>00089 {
783 00090 <a class="code" href="classInvited.html">Invited</a> i;
784 00091 strlcpy(i.<a class="code" href="classInvited.html#o0">channel</a>,channel,CHANMAX);
785 00092 <a class="code" href="classuserrec.html#r0">invites</a>.push_back(i);
790 <a name="a4" doxytag="userrec::IsInvited"></a><p>
791 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
794 <table cellpadding="0" cellspacing="0" border="0">
796 <td class="md" nowrap valign="top"> bool userrec::IsInvited </td>
797 <td class="md" valign="top">( </td>
798 <td class="md" nowrap valign="top">char * </td>
799 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
800 <td class="md" valign="top"> ) </td>
801 <td class="md" nowrap><code> [virtual]</code></td>
808 <table cellspacing=5 cellpadding=0 border=0>
816 Returns true if a user is invited to a channel.
820 Definition at line <a class="el" href="users_8cpp-source.html#l00074">74</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
822 References <a class="el" href="users_8h-source.html#l00114">invites</a>.
824 <div class="fragment"><pre>00075 {
825 00076 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#r0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#r0">invites</a>.end(); i++)
827 00078 <span class="keywordflow">if</span> (i->channel) {
828 00079 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
830 00081 <span class="keywordflow">return</span> <span class="keyword">true</span>;
834 00085 <span class="keywordflow">return</span> <span class="keyword">false</span>;
839 <a name="a6" doxytag="userrec::RemoveInvite"></a><p>
840 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
843 <table cellpadding="0" cellspacing="0" border="0">
845 <td class="md" nowrap valign="top"> void userrec::RemoveInvite </td>
846 <td class="md" valign="top">( </td>
847 <td class="md" nowrap valign="top">char * </td>
848 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
849 <td class="md" valign="top"> ) </td>
850 <td class="md" nowrap><code> [virtual]</code></td>
857 <table cellspacing=5 cellpadding=0 border=0>
865 Removes a channel from a users invite list.
867 This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
869 Definition at line <a class="el" href="users_8cpp-source.html#l00095">95</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
871 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.
873 <div class="fragment"><pre>00096 {
874 00097 log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
875 00098 <span class="keywordflow">if</span> (channel)
877 00100 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#r0">invites</a>.size())
879 00102 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#r0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#r0">invites</a>.end(); i++)
881 00104 <span class="keywordflow">if</span> (i->channel)
883 00106 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
885 00108 <a class="code" href="classuserrec.html#r0">invites</a>.erase(i);
886 00109 <span class="keywordflow">return</span>;
896 <a name="a12" doxytag="userrec::SetWriteError"></a><p>
897 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
900 <table cellpadding="0" cellspacing="0" border="0">
902 <td class="md" nowrap valign="top"> void userrec::SetWriteError </td>
903 <td class="md" valign="top">( </td>
904 <td class="md" nowrap valign="top">std::string </td>
905 <td class="mdname1" valign="top" nowrap> <em>error</em> </td>
906 <td class="md" valign="top"> ) </td>
907 <td class="md" nowrap></td>
914 <table cellspacing=5 cellpadding=0 border=0>
922 Sets the write error for a connection.
924 This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged.
926 Definition at line <a class="el" href="users_8cpp-source.html#l00263">263</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
928 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00210">WriteError</a>.
930 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00241">FlushWriteBuf()</a>.
932 <div class="fragment"><pre>00264 {
933 00265 log(DEBUG,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this->nick,error.c_str());
934 00266 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
935 00267 <span class="keywordflow">if</span> (this-><a class="code" href="classuserrec.html#o20">WriteError</a> == <span class="stringliteral">""</span>)
936 00268 this-><a class="code" href="classuserrec.html#o20">WriteError</a> = error;
941 <hr><h2>Member Data Documentation</h2>
942 <a name="o7" doxytag="userrec::awaymsg"></a><p>
943 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
946 <table cellpadding="0" cellspacing="0" border="0">
948 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o7">userrec::awaymsg</a>[512]
953 <table cellspacing=5 cellpadding=0 border=0>
961 The user's away message.
963 If this string is empty, the user is not marked as away.
965 Definition at line <a class="el" href="users_8h-source.html#l00151">151</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
967 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
970 <a name="o5" doxytag="userrec::chans"></a><p>
971 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
974 <table cellpadding="0" cellspacing="0" border="0">
976 <td class="md" nowrap valign="top"> <a class="el" href="classucrec.html">ucrec</a> <a class="el" href="classuserrec.html#o5">userrec::chans</a>[MAXCHANS]
981 <table cellspacing=5 cellpadding=0 border=0>
991 Definition at line <a class="el" href="users_8h-source.html#l00142">142</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
993 Referenced by <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
996 <a name="o2" doxytag="userrec::dhost"></a><p>
997 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1000 <table cellpadding="0" cellspacing="0" border="0">
1002 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o2">userrec::dhost</a>[160]
1007 <table cellspacing=5 cellpadding=0 border=0>
1015 The host displayed to non-opers (used for cloaking etc).
1017 This usually matches the value of <a class="el" href="classconnection.html#o1">userrec::host</a>.
1019 Definition at line <a class="el" href="users_8h-source.html#l00130">130</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1021 Referenced by <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1024 <a name="o12" doxytag="userrec::dns_done"></a><p>
1025 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1028 <table cellpadding="0" cellspacing="0" border="0">
1030 <td class="md" nowrap valign="top"> bool <a class="el" href="classuserrec.html#o12">userrec::dns_done</a>
1035 <table cellspacing=5 cellpadding=0 border=0>
1043 True when <a class="el" href="classDNS.html">DNS</a> lookups are completed.
1047 Definition at line <a class="el" href="users_8h-source.html#l00179">179</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1049 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1052 <a name="o9" doxytag="userrec::flood"></a><p>
1053 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1056 <table cellpadding="0" cellspacing="0" border="0">
1058 <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o9">userrec::flood</a>
1063 <table cellspacing=5 cellpadding=0 border=0>
1071 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood.
1075 Definition at line <a class="el" href="users_8h-source.html#l00162">162</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1077 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1080 <a name="o3" doxytag="userrec::fullname"></a><p>
1081 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1084 <table cellpadding="0" cellspacing="0" border="0">
1086 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o3">userrec::fullname</a>[128]
1091 <table cellspacing=5 cellpadding=0 border=0>
1099 The users full name.
1103 Definition at line <a class="el" href="users_8h-source.html#l00134">134</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1105 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1108 <a name="o1" doxytag="userrec::ident"></a><p>
1109 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1112 <table cellpadding="0" cellspacing="0" border="0">
1114 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o1">userrec::ident</a>[16]
1119 <table cellspacing=5 cellpadding=0 border=0>
1127 The users ident reply.
1131 Definition at line <a class="el" href="users_8h-source.html#l00125">125</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1133 Referenced by <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00068">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00681">Server::UserToPseudo()</a>. </td>
1136 <a name="r0" doxytag="userrec::invites"></a><p>
1137 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1140 <table cellpadding="0" cellspacing="0" border="0">
1142 <td class="md" nowrap valign="top"> <a class="el" href="users_8h.html#a6">InvitedList</a> <a class="el" href="classuserrec.html#r0">userrec::invites</a><code> [private]</code>
1147 <table cellspacing=5 cellpadding=0 border=0>
1155 A list of channels the user has a pending invite to.
1159 Definition at line <a class="el" href="users_8h-source.html#l00114">114</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1161 Referenced by <a class="el" href="users_8cpp-source.html#l00088">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00074">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00095">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1164 <a name="o17" doxytag="userrec::lines_in"></a><p>
1165 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1168 <table cellpadding="0" cellspacing="0" border="0">
1170 <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o17">userrec::lines_in</a>
1175 <table cellspacing=5 cellpadding=0 border=0>
1187 Definition at line <a class="el" href="users_8h-source.html#l00204">204</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1189 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1192 <a name="o4" doxytag="userrec::modes"></a><p>
1193 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1196 <table cellpadding="0" cellspacing="0" border="0">
1198 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o4">userrec::modes</a>[MAXBUF]
1203 <table cellspacing=5 cellpadding=0 border=0>
1211 The user's mode string.
1213 This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit.
1215 Definition at line <a class="el" href="users_8h-source.html#l00140">140</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1217 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1220 <a name="o0" doxytag="userrec::nick"></a><p>
1221 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1224 <table cellpadding="0" cellspacing="0" border="0">
1226 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o0">userrec::nick</a>[NICKMAX]
1231 <table cellspacing=5 cellpadding=0 border=0>
1241 An invalid nickname indicates an unregistered connection prior to the NICK command.
1243 Definition at line <a class="el" href="users_8h-source.html#l00121">121</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1245 Referenced by <a class="el" href="modules_8cpp-source.html#l00967">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00068">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1248 <a name="o11" doxytag="userrec::oper"></a><p>
1249 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1252 <table cellpadding="0" cellspacing="0" border="0">
1254 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o11">userrec::oper</a>[NICKMAX]
1259 <table cellspacing=5 cellpadding=0 border=0>
1267 The oper type they logged in as, if they are an oper.
1269 This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag.
1271 Definition at line <a class="el" href="users_8h-source.html#l00175">175</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1273 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1276 <a name="o14" doxytag="userrec::password"></a><p>
1277 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1280 <table cellpadding="0" cellspacing="0" border="0">
1282 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o14">userrec::password</a>[MAXBUF]
1287 <table cellspacing=5 cellpadding=0 border=0>
1295 Password specified by the user when they registered.
1297 This is stored even if the block doesnt need a password, so that modules may check it.
1299 Definition at line <a class="el" href="users_8h-source.html#l00189">189</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
1302 <a name="o13" doxytag="userrec::pingmax"></a><p>
1303 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1306 <table cellpadding="0" cellspacing="0" border="0">
1308 <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classuserrec.html#o13">userrec::pingmax</a>
1313 <table cellspacing=5 cellpadding=0 border=0>
1321 Number of seconds between PINGs for this user (set from <connect:allow> tag.
1325 Definition at line <a class="el" href="users_8h-source.html#l00183">183</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
1328 <a name="o15" doxytag="userrec::recvq"></a><p>
1329 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1332 <table cellpadding="0" cellspacing="0" border="0">
1334 <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o15">userrec::recvq</a>
1339 <table cellspacing=5 cellpadding=0 border=0>
1347 User's receive queue.
1349 Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
1351 Definition at line <a class="el" href="users_8h-source.html#l00195">195</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1353 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00195">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00203">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00208">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1356 <a name="o22" doxytag="userrec::recvqmax"></a><p>
1357 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1360 <table cellpadding="0" cellspacing="0" border="0">
1362 <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o22">userrec::recvqmax</a>
1367 <table cellspacing=5 cellpadding=0 border=0>
1375 Maximum size this user's recvq can become.
1379 Definition at line <a class="el" href="users_8h-source.html#l00218">218</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1381 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>. </td>
1384 <a name="o18" doxytag="userrec::reset_due"></a><p>
1385 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1388 <table cellpadding="0" cellspacing="0" border="0">
1390 <td class="md" nowrap valign="top"> time_t <a class="el" href="classuserrec.html#o18">userrec::reset_due</a>
1395 <table cellspacing=5 cellpadding=0 border=0>
1405 Definition at line <a class="el" href="users_8h-source.html#l00205">205</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1407 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1410 <a name="o8" doxytag="userrec::result"></a><p>
1411 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1414 <table cellpadding="0" cellspacing="0" border="0">
1416 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o8">userrec::result</a>[256]
1421 <table cellspacing=5 cellpadding=0 border=0>
1429 Stores the result of the last GetFullHost or GetRealHost call.
1431 You may use this to increase the speed of use of this class.
1433 Definition at line <a class="el" href="users_8h-source.html#l00156">156</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1435 Referenced by <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00068">GetFullRealHost()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1438 <a name="o16" doxytag="userrec::sendq"></a><p>
1439 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1442 <table cellpadding="0" cellspacing="0" border="0">
1444 <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o16">userrec::sendq</a>
1449 <table cellspacing=5 cellpadding=0 border=0>
1459 Lines waiting to be sent are stored here until their buffer is flushed.
1461 Definition at line <a class="el" href="users_8h-source.html#l00200">200</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1463 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00241">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1466 <a name="o21" doxytag="userrec::sendqmax"></a><p>
1467 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1470 <table cellpadding="0" cellspacing="0" border="0">
1472 <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o21">userrec::sendqmax</a>
1477 <table cellspacing=5 cellpadding=0 border=0>
1485 Maximum size this user's sendq can become.
1489 Definition at line <a class="el" href="users_8h-source.html#l00214">214</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1491 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>. </td>
1494 <a name="o6" doxytag="userrec::server"></a><p>
1495 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1498 <table cellpadding="0" cellspacing="0" border="0">
1500 <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o6">userrec::server</a>[256]
1505 <table cellspacing=5 cellpadding=0 border=0>
1513 The server the user is connected to.
1517 Definition at line <a class="el" href="users_8h-source.html#l00146">146</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1519 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1522 <a name="o19" doxytag="userrec::threshold"></a><p>
1523 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1526 <table cellpadding="0" cellspacing="0" border="0">
1528 <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o19">userrec::threshold</a>
1533 <table cellspacing=5 cellpadding=0 border=0>
1543 Definition at line <a class="el" href="users_8h-source.html#l00206">206</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
1546 <a name="o10" doxytag="userrec::timeout"></a><p>
1547 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1550 <table cellpadding="0" cellspacing="0" border="0">
1552 <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classuserrec.html#o10">userrec::timeout</a>
1557 <table cellspacing=5 cellpadding=0 border=0>
1565 Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected.
1569 Definition at line <a class="el" href="users_8h-source.html#l00168">168</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1571 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>. </td>
1574 <a name="o20" doxytag="userrec::WriteError"></a><p>
1575 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1578 <table cellpadding="0" cellspacing="0" border="0">
1580 <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o20">userrec::WriteError</a>
1585 <table cellspacing=5 cellpadding=0 border=0>
1595 Definition at line <a class="el" href="users_8h-source.html#l00210">210</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1597 Referenced by <a class="el" href="users_8cpp-source.html#l00271">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>. </td>
1600 <hr>The documentation for this class was generated from the following files:<ul>
1601 <li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
1602 <hr size="1"><address style="align: right;"><small>Generated on Thu May 12 22:59:06 2005 for InspIRCd by
1603 <a href="http://www.doxygen.org/index.html">
1604 <img src="doxygen.png" alt="doxygen" align="middle" border=0 >
1605 </a>1.3.3 </small></address>