]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/classuserrec.html
Documented new recvq and sendq stuff
[user/henk/code/inspircd.git] / docs / module-doc / classuserrec.html
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">
5 </head><body>
6 <!-- Generated by Doxygen 1.3.3 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;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>
10 <p>
11 <code>#include &lt;<a class="el" href="users_8h-source.html">users.h</a>&gt;</code>
12 <p>
13 Inherits <a class="el" href="classconnection.html">connection</a>.
14 <p>
15 <a href="classuserrec-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
16 <tr><td></td></tr>
17 <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
18 <tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a0">userrec</a> ()</td></tr>
19
20 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a1">~userrec</a> ()</td></tr>
21
22 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a2">GetFullHost</a> ()</td></tr>
23
24 <tr><td class="mdescLeft">&nbsp;</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 *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a3">GetFullRealHost</a> ()</td></tr>
26
27 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a4">IsInvited</a> (char *channel)</td></tr>
29
30 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a5">InviteTo</a> (char *channel)</td></tr>
32
33 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a6">RemoveInvite</a> (char *channel)</td></tr>
35
36 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a7">HasPermission</a> (char *command)</td></tr>
38
39 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a8">AddBuffer</a> (std::string a)</td></tr>
41
42 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a9">BufferIsReady</a> ()</td></tr>
44
45 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a10">ClearBuffer</a> ()</td></tr>
47
48 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a11">GetBuffer</a> ()</td></tr>
50
51 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a12">SetWriteError</a> (std::string error)</td></tr>
53
54 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a13">GetWriteError</a> ()</td></tr>
56
57 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a14">AddWriteBuf</a> (std::string data)</td></tr>
59
60 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a15">FlushWriteBuf</a> ()</td></tr>
62
63 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o0">nick</a> [NICKMAX]</td></tr>
66
67 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o1">ident</a> [64]</td></tr>
69
70 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o2">dhost</a> [256]</td></tr>
72
73 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o3">fullname</a> [128]</td></tr>
75
76 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o4">modes</a> [MAXBUF]</td></tr>
78
79 <tr><td class="mdescLeft">&nbsp;</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>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o5">chans</a> [MAXCHANS]</td></tr>
81
82 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o6">server</a> [256]</td></tr>
83
84 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o7">awaymsg</a> [512]</td></tr>
86
87 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o8">result</a> [256]</td></tr>
89
90 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o9">flood</a></td></tr>
92
93 <tr><td class="mdescLeft">&nbsp;</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 long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o10">timeout</a></td></tr>
95
96 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o11">oper</a> [NICKMAX]</td></tr>
98
99 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o12">dns_done</a></td></tr>
101
102 <tr><td class="mdescLeft">&nbsp;</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 long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o13">pingmax</a></td></tr>
104
105 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag. </em> <a href="#o13"></a><em><br><br></td></tr>
106 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o14">password</a> [MAXBUF]</td></tr>
107
108 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o15">recvq</a></td></tr>
110
111 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o16">sendq</a></td></tr>
113
114 <tr><td class="mdescLeft">&nbsp;</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>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o17">lines_in</a></td></tr>
116
117 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o18">reset_due</a></td></tr>
119
120 <tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o19">threshold</a></td></tr>
121
122 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o20">WriteError</a></td></tr>
123
124 <tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o21">sendqmax</a></td></tr>
125
126 <tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o22">recvqmax</a></td></tr>
128
129 <tr><td class="mdescLeft">&nbsp;</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>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#r0">invites</a></td></tr>
132
133 <tr><td class="mdescLeft">&nbsp;</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>
134 </table>
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. 
137 <p>
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. 
139 <p>
140
141 <p>
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 &amp; Destructor Documentation</h2>
143 <a name="a0" doxytag="userrec::userrec"></a><p>
144 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
145   <tr>
146     <td class="mdRow">
147       <table cellpadding="0" cellspacing="0" border="0">
148         <tr>
149           <td class="md" nowrap valign="top"> userrec::userrec </td>
150           <td class="md" valign="top">(&nbsp;</td>
151           <td class="mdname1" valign="top" nowrap>          </td>
152           <td class="md" valign="top">&nbsp;)&nbsp;</td>
153           <td class="md" nowrap></td>
154         </tr>
155
156       </table>
157     </td>
158   </tr>
159 </table>
160 <table cellspacing=5 cellpadding=0 border=0>
161   <tr>
162     <td>
163       &nbsp;
164     </td>
165     <td>
166
167 <p>
168
169 <p>
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>.
171 <p>
172 References <a class="el" href="users_8h-source.html#l00151">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00231">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00235">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00268">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00142">chans</a>, <a class="el" href="connection_8h-source.html#l00239">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00243">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#l00247">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#l00273">connection::idle_lastmsg</a>, <a class="el" href="connection_8h-source.html#l00227">connection::inbuf</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#l00265">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#l00277">connection::nping</a>, <a class="el" href="users_8h-source.html#l00175">oper</a>, <a class="el" href="connection_8h-source.html#l00253">connection::port</a>, <a class="el" href="users_8h-source.html#l00195">recvq</a>, <a class="el" href="connection_8h-source.html#l00257">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#l00269">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#l00263">ucrec::uc_modes</a>.
173 <p>
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(inbuf,<span class="stringliteral">""</span>);
185 00040         strcpy(server,<span class="stringliteral">""</span>);
186 00041         strcpy(awaymsg,<span class="stringliteral">""</span>);
187 00042         strcpy(oper,<span class="stringliteral">""</span>);
188 00043         <a class="code" href="classuserrec.html#o18">reset_due</a> = <a class="code" href="channels_8cpp.html#a37">TIME</a>;
189 00044         <a class="code" href="classuserrec.html#o17">lines_in</a> = 0;
190 00045         <a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="classconnection.html#o12">lastping</a> = <a class="code" href="classconnection.html#o13">signon</a> = <a class="code" href="classconnection.html#o14">idle_lastmsg</a> = <a class="code" href="classconnection.html#o15">nping</a> = <a class="code" href="classconnection.html#o10">registered</a> = 0;
191 00046         <a class="code" href="classuserrec.html#o9">flood</a> = <a class="code" href="classconnection.html#o9">port</a> = <a class="code" href="classconnection.html#o4">bytes_in</a> = <a class="code" href="classconnection.html#o5">bytes_out</a> = <a class="code" href="classconnection.html#o6">cmds_in</a> = <a class="code" href="classconnection.html#o7">cmds_out</a> = 0;
192 00047         <a class="code" href="classconnection.html#o8">haspassed</a> = <span class="keyword">false</span>;
193 00048         <a class="code" href="classuserrec.html#o12">dns_done</a> = <span class="keyword">false</span>;
194 00049         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
195 00050         <a class="code" href="classuserrec.html#o16">sendq</a> = <span class="stringliteral">""</span>;
196 00051         strcpy(result,<span class="stringliteral">""</span>);
197 00052         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
198 00053         {
199 00054                 this-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a> = NULL;
200 00055                 this-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o0">uc_modes</a> = 0;
201 00056         }
202 00057         <a class="code" href="classuserrec.html#r0">invites</a>.clear();
203 00058 }
204 </pre></div>    </td>
205   </tr>
206 </table>
207 <a name="a1" doxytag="userrec::~userrec"></a><p>
208 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
209   <tr>
210     <td class="mdRow">
211       <table cellpadding="0" cellspacing="0" border="0">
212         <tr>
213           <td class="md" nowrap valign="top"> virtual userrec::~<a class="el" href="classuserrec.html">userrec</a> </td>
214           <td class="md" valign="top">(&nbsp;</td>
215           <td class="mdname1" valign="top" nowrap>          </td>
216           <td class="md" valign="top">&nbsp;)&nbsp;</td>
217           <td class="md" nowrap><code> [inline, virtual]</code></td>
218         </tr>
219
220       </table>
221     </td>
222   </tr>
223 </table>
224 <table cellspacing=5 cellpadding=0 border=0>
225   <tr>
226     <td>
227       &nbsp;
228     </td>
229     <td>
230
231 <p>
232
233 <p>
234 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 <p>
236 <div class="fragment"><pre>00222 {  }
237 </pre></div>    </td>
238   </tr>
239 </table>
240 <hr><h2>Member Function Documentation</h2>
241 <a name="a8" doxytag="userrec::AddBuffer"></a><p>
242 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
243   <tr>
244     <td class="mdRow">
245       <table cellpadding="0" cellspacing="0" border="0">
246         <tr>
247           <td class="md" nowrap valign="top"> bool userrec::AddBuffer </td>
248           <td class="md" valign="top">(&nbsp;</td>
249           <td class="md" nowrap valign="top">std::string&nbsp;</td>
250           <td class="mdname1" valign="top" nowrap> <em>a</em>          </td>
251           <td class="md" valign="top">&nbsp;)&nbsp;</td>
252           <td class="md" nowrap></td>
253         </tr>
254
255       </table>
256     </td>
257   </tr>
258 </table>
259 <table cellspacing=5 cellpadding=0 border=0>
260   <tr>
261     <td>
262       &nbsp;
263     </td>
264     <td>
265
266 <p>
267 This method adds data to the buffer of the user. 
268 <p>
269 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 <p>
271 Definition at line <a class="el" href="users_8cpp-source.html#l00170">170</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
272 <p>
273 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#l00264">SetWriteError()</a>.
274 <p>
275 <div class="fragment"><pre>00171 {
276 00172         std::string b = <span class="stringliteral">""</span>;
277 00173         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
278 00174                 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) &amp;&amp; (a[i] != <span class="charliteral">'\0'</span>) &amp;&amp; (a[i] != 7))
279 00175                         b = b + a[i];
280 00176         std::stringstream stream(recvq);
281 00177         stream &lt;&lt; b;
282 00178         <a class="code" href="classuserrec.html#o15">recvq</a> = stream.str();
283 00179         <span class="keywordtype">int</span> i = 0;
284 00180         <span class="comment">// count the size of the first line in the buffer.</span>
285 00181         <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length())
286 00182         {
287 00183                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
288 00184                         <span class="keywordflow">break</span>;
289 00185         }
290 00186         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>.length() &gt; this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>)
291 00187         {
292 00188                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
293 00189                 WriteOpers(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#o15">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>);
294 00190         }
295 00191         <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
296 00192         <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
297 00193         <span class="keywordflow">return</span> (i &lt; 600);
298 00194 }
299 </pre></div>    </td>
300   </tr>
301 </table>
302 <a name="a14" doxytag="userrec::AddWriteBuf"></a><p>
303 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
304   <tr>
305     <td class="mdRow">
306       <table cellpadding="0" cellspacing="0" border="0">
307         <tr>
308           <td class="md" nowrap valign="top"> void userrec::AddWriteBuf </td>
309           <td class="md" valign="top">(&nbsp;</td>
310           <td class="md" nowrap valign="top">std::string&nbsp;</td>
311           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
312           <td class="md" valign="top">&nbsp;)&nbsp;</td>
313           <td class="md" nowrap></td>
314         </tr>
315
316       </table>
317     </td>
318   </tr>
319 </table>
320 <table cellspacing=5 cellpadding=0 border=0>
321   <tr>
322     <td>
323       &nbsp;
324     </td>
325     <td>
326
327 <p>
328 Adds to the user's write buffer. 
329 <p>
330 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 <p>
332 Definition at line <a class="el" href="users_8cpp-source.html#l00226">226</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
333 <p>
334 References <a class="el" href="users_8cpp-source.html#l00272">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#l00264">SetWriteError()</a>.
335 <p>
336 <div class="fragment"><pre>00227 {
337 00228         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classuserrec.html#a13">GetWriteError</a>() != <span class="stringliteral">""</span>)
338 00229                 <span class="keywordflow">return</span>;
339 00230         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length() &gt; this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>)
340 00231         {
341 00232                 WriteOpers(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>);
342 00233                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
343 00234                 <span class="keywordflow">return</span>;
344 00235         }
345 00236         std::stringstream stream;
346 00237         stream &lt;&lt; <a class="code" href="classuserrec.html#o16">sendq</a> &lt;&lt; data;
347 00238         <a class="code" href="classuserrec.html#o16">sendq</a> = stream.str();
348 00239 }
349 </pre></div>    </td>
350   </tr>
351 </table>
352 <a name="a9" doxytag="userrec::BufferIsReady"></a><p>
353 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
354   <tr>
355     <td class="mdRow">
356       <table cellpadding="0" cellspacing="0" border="0">
357         <tr>
358           <td class="md" nowrap valign="top"> bool userrec::BufferIsReady </td>
359           <td class="md" valign="top">(&nbsp;</td>
360           <td class="mdname1" valign="top" nowrap>          </td>
361           <td class="md" valign="top">&nbsp;)&nbsp;</td>
362           <td class="md" nowrap></td>
363         </tr>
364
365       </table>
366     </td>
367   </tr>
368 </table>
369 <table cellspacing=5 cellpadding=0 border=0>
370   <tr>
371     <td>
372       &nbsp;
373     </td>
374     <td>
375
376 <p>
377 This method returns true if the buffer contains at least one carriage return character (e.g. 
378 <p>
379 one complete line may be read)
380 <p>
381 Definition at line <a class="el" href="users_8cpp-source.html#l00196">196</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
382 <p>
383 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
384 <p>
385 <div class="fragment"><pre>00197 {
386 00198         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length(); i++)
387 00199                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i] == <span class="charliteral">'\n'</span>)
388 00200                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
389 00201         <span class="keywordflow">return</span> <span class="keyword">false</span>;
390 00202 }
391 </pre></div>    </td>
392   </tr>
393 </table>
394 <a name="a10" doxytag="userrec::ClearBuffer"></a><p>
395 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
396   <tr>
397     <td class="mdRow">
398       <table cellpadding="0" cellspacing="0" border="0">
399         <tr>
400           <td class="md" nowrap valign="top"> void userrec::ClearBuffer </td>
401           <td class="md" valign="top">(&nbsp;</td>
402           <td class="mdname1" valign="top" nowrap>          </td>
403           <td class="md" valign="top">&nbsp;)&nbsp;</td>
404           <td class="md" nowrap></td>
405         </tr>
406
407       </table>
408     </td>
409   </tr>
410 </table>
411 <table cellspacing=5 cellpadding=0 border=0>
412   <tr>
413     <td>
414       &nbsp;
415     </td>
416     <td>
417
418 <p>
419 This function clears the entire buffer by setting it to an empty string. 
420 <p>
421
422 <p>
423 Definition at line <a class="el" href="users_8cpp-source.html#l00204">204</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
424 <p>
425 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
426 <p>
427 Referenced by <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00680">Server::UserToPseudo()</a>.
428 <p>
429 <div class="fragment"><pre>00205 {
430 00206         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
431 00207 }
432 </pre></div>    </td>
433   </tr>
434 </table>
435 <a name="a15" doxytag="userrec::FlushWriteBuf"></a><p>
436 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
437   <tr>
438     <td class="mdRow">
439       <table cellpadding="0" cellspacing="0" border="0">
440         <tr>
441           <td class="md" nowrap valign="top"> void userrec::FlushWriteBuf </td>
442           <td class="md" valign="top">(&nbsp;</td>
443           <td class="mdname1" valign="top" nowrap>          </td>
444           <td class="md" valign="top">&nbsp;)&nbsp;</td>
445           <td class="md" nowrap></td>
446         </tr>
447
448       </table>
449     </td>
450   </tr>
451 </table>
452 <table cellspacing=5 cellpadding=0 border=0>
453   <tr>
454     <td>
455       &nbsp;
456     </td>
457     <td>
458
459 <p>
460 Flushes as much of the user's buffer to the file descriptor as possible. 
461 <p>
462 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 <p>
464 Definition at line <a class="el" href="users_8cpp-source.html#l00242">242</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
465 <p>
466 References <a class="el" href="connection_8h-source.html#l00235">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00243">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00264">SetWriteError()</a>.
467 <p>
468 <div class="fragment"><pre>00243 {
469 00244         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length())
470 00245         {
471 00246                 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a>.c_str();
472 00247                 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
473 00248                 <span class="keywordflow">if</span> (n_sent == -1)
474 00249                 {
475 00250                         this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(strerror(errno));
476 00251                 }
477 00252                 <span class="keywordflow">else</span>
478 00253                 {
479 00254                         <span class="comment">// advance the queue</span>
480 00255                         tb += n_sent;
481 00256                         this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a> = tb;
482 00257                         <span class="comment">// update the user's stats counters</span>
483 00258                         this-&gt;<a class="code" href="classconnection.html#o5">bytes_out</a> += n_sent;
484 00259                         this-&gt;<a class="code" href="classconnection.html#o7">cmds_out</a>++;
485 00260                 }
486 00261         }
487 00262 }
488 </pre></div>    </td>
489   </tr>
490 </table>
491 <a name="a11" doxytag="userrec::GetBuffer"></a><p>
492 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
493   <tr>
494     <td class="mdRow">
495       <table cellpadding="0" cellspacing="0" border="0">
496         <tr>
497           <td class="md" nowrap valign="top"> std::string userrec::GetBuffer </td>
498           <td class="md" valign="top">(&nbsp;</td>
499           <td class="mdname1" valign="top" nowrap>          </td>
500           <td class="md" valign="top">&nbsp;)&nbsp;</td>
501           <td class="md" nowrap></td>
502         </tr>
503
504       </table>
505     </td>
506   </tr>
507 </table>
508 <table cellspacing=5 cellpadding=0 border=0>
509   <tr>
510     <td>
511       &nbsp;
512     </td>
513     <td>
514
515 <p>
516 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 <p>
518 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 <p>
520 Definition at line <a class="el" href="users_8cpp-source.html#l00209">209</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
521 <p>
522 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
523 <p>
524 <div class="fragment"><pre>00210 {
525 00211         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a> == <span class="stringliteral">""</span>)
526 00212                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
527 00213         <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#o15">recvq</a>.c_str();
528 00214         std::string ret = <span class="stringliteral">""</span>;
529 00215         <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
530 00216         {
531 00217                 ret = ret + *line;
532 00218                 line++;
533 00219         }
534 00220         <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
535 00221                 line++;
536 00222         <a class="code" href="classuserrec.html#o15">recvq</a> = line;
537 00223         <span class="keywordflow">return</span> ret;
538 00224 }
539 </pre></div>    </td>
540   </tr>
541 </table>
542 <a name="a2" doxytag="userrec::GetFullHost"></a><p>
543 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
544   <tr>
545     <td class="mdRow">
546       <table cellpadding="0" cellspacing="0" border="0">
547         <tr>
548           <td class="md" nowrap valign="top"> char * userrec::GetFullHost </td>
549           <td class="md" valign="top">(&nbsp;</td>
550           <td class="mdname1" valign="top" nowrap>          </td>
551           <td class="md" valign="top">&nbsp;)&nbsp;</td>
552           <td class="md" nowrap><code> [virtual]</code></td>
553         </tr>
554
555       </table>
556     </td>
557   </tr>
558 </table>
559 <table cellspacing=5 cellpadding=0 border=0>
560   <tr>
561     <td>
562       &nbsp;
563     </td>
564     <td>
565
566 <p>
567 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. 
568 <p>
569
570 <p>
571 Definition at line <a class="el" href="users_8cpp-source.html#l00062">62</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
572 <p>
573 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 <p>
575 <div class="fragment"><pre>00063 {
576 00064         snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
577 00065         <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#o8">result</a>;
578 00066 }
579 </pre></div>    </td>
580   </tr>
581 </table>
582 <a name="a3" doxytag="userrec::GetFullRealHost"></a><p>
583 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
584   <tr>
585     <td class="mdRow">
586       <table cellpadding="0" cellspacing="0" border="0">
587         <tr>
588           <td class="md" nowrap valign="top"> char * userrec::GetFullRealHost </td>
589           <td class="md" valign="top">(&nbsp;</td>
590           <td class="mdname1" valign="top" nowrap>          </td>
591           <td class="md" valign="top">&nbsp;)&nbsp;</td>
592           <td class="md" nowrap><code> [virtual]</code></td>
593         </tr>
594
595       </table>
596     </td>
597   </tr>
598 </table>
599 <table cellspacing=5 cellpadding=0 border=0>
600   <tr>
601     <td>
602       &nbsp;
603     </td>
604     <td>
605
606 <p>
607 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 <p>
609 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 <p>
611 Definition at line <a class="el" href="users_8cpp-source.html#l00069">69</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
612 <p>
613 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 <p>
615 <div class="fragment"><pre>00070 {
616 00071         snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
617 00072         <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#o8">result</a>;
618 00073 }
619 </pre></div>    </td>
620   </tr>
621 </table>
622 <a name="a13" doxytag="userrec::GetWriteError"></a><p>
623 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
624   <tr>
625     <td class="mdRow">
626       <table cellpadding="0" cellspacing="0" border="0">
627         <tr>
628           <td class="md" nowrap valign="top"> std::string userrec::GetWriteError </td>
629           <td class="md" valign="top">(&nbsp;</td>
630           <td class="mdname1" valign="top" nowrap>          </td>
631           <td class="md" valign="top">&nbsp;)&nbsp;</td>
632           <td class="md" nowrap></td>
633         </tr>
634
635       </table>
636     </td>
637   </tr>
638 </table>
639 <table cellspacing=5 cellpadding=0 border=0>
640   <tr>
641     <td>
642       &nbsp;
643     </td>
644     <td>
645
646 <p>
647 Returns the write error which last occured on this connection or an empty string if none occured. 
648 <p>
649
650 <p>
651 Definition at line <a class="el" href="users_8cpp-source.html#l00272">272</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
652 <p>
653 References <a class="el" href="users_8h-source.html#l00210">WriteError</a>.
654 <p>
655 Referenced by <a class="el" href="users_8cpp-source.html#l00226">AddWriteBuf()</a>.
656 <p>
657 <div class="fragment"><pre>00273 {
658 00274         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a>;
659 00275 }
660 </pre></div>    </td>
661   </tr>
662 </table>
663 <a name="a7" doxytag="userrec::HasPermission"></a><p>
664 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
665   <tr>
666     <td class="mdRow">
667       <table cellpadding="0" cellspacing="0" border="0">
668         <tr>
669           <td class="md" nowrap valign="top"> bool userrec::HasPermission </td>
670           <td class="md" valign="top">(&nbsp;</td>
671           <td class="md" nowrap valign="top">char *&nbsp;</td>
672           <td class="mdname1" valign="top" nowrap> <em>command</em>          </td>
673           <td class="md" valign="top">&nbsp;)&nbsp;</td>
674           <td class="md" nowrap></td>
675         </tr>
676
677       </table>
678     </td>
679   </tr>
680 </table>
681 <table cellspacing=5 cellpadding=0 border=0>
682   <tr>
683     <td>
684       &nbsp;
685     </td>
686     <td>
687
688 <p>
689 Returns true or false for if a user can execute a privilaged oper command. 
690 <p>
691 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 <p>
693 Definition at line <a class="el" href="users_8cpp-source.html#l00118">118</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
694 <p>
695 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 <p>
697 <div class="fragment"><pre>00119 {
698 00120         <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
699 00121         <span class="keywordtype">char</span>* mycmd;
700 00122         <span class="keywordtype">char</span>* savept;
701 00123         <span class="keywordtype">char</span>* savept2;
702 00124         
703 00125         <span class="comment">// are they even an oper at all?</span>
704 00126         <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
705 00127         {
706 00128                 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper"</span>,this-&gt;nick);
707 00129                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;config_f); j++)
708 00130                 {
709 00131                         ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;config_f);
710 00132                         <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
711 00133                         {
712 00134                                 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper of type '%s'"</span>,this-&gt;nick,this-&gt;oper);
713 00135                                 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;config_f);
714 00136                                 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
715 00137                                 <span class="keywordflow">while</span> (myclass)
716 00138                                 {
717 00139                                         log(DEBUG,<span class="stringliteral">"*** HasPermission: checking classtype '%s'"</span>,myclass);
718 00140                                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;config_f); k++)
719 00141                                         {
720 00142                                                 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;config_f);
721 00143                                                 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
722 00144                                                 {
723 00145                                                         ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;config_f);
724 00146                                                         log(DEBUG,<span class="stringliteral">"*** HasPermission: found class named %s with commands: '%s'"</span>,ClassName,CommandList);
725 00147                                                         
726 00148                                                         
727 00149                                                         mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
728 00150                                                         <span class="keywordflow">while</span> (mycmd)
729 00151                                                         {
730 00152                                                                 <span class="keywordflow">if</span> (!strcasecmp(mycmd,command))
731 00153                                                                 {
732 00154                                                                         log(DEBUG,<span class="stringliteral">"*** Command %s found, returning true"</span>,command);
733 00155                                                                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
734 00156                                                                 }
735 00157                                                                 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
736 00158                                                         }
737 00159                                                 }
738 00160                                         }
739 00161                                         myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
740 00162                                 }
741 00163                         }
742 00164                 }
743 00165         }
744 00166         <span class="keywordflow">return</span> <span class="keyword">false</span>;
745 00167 }
746 </pre></div>    </td>
747   </tr>
748 </table>
749 <a name="a5" doxytag="userrec::InviteTo"></a><p>
750 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
751   <tr>
752     <td class="mdRow">
753       <table cellpadding="0" cellspacing="0" border="0">
754         <tr>
755           <td class="md" nowrap valign="top"> void userrec::InviteTo </td>
756           <td class="md" valign="top">(&nbsp;</td>
757           <td class="md" nowrap valign="top">char *&nbsp;</td>
758           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
759           <td class="md" valign="top">&nbsp;)&nbsp;</td>
760           <td class="md" nowrap><code> [virtual]</code></td>
761         </tr>
762
763       </table>
764     </td>
765   </tr>
766 </table>
767 <table cellspacing=5 cellpadding=0 border=0>
768   <tr>
769     <td>
770       &nbsp;
771     </td>
772     <td>
773
774 <p>
775 Adds a channel to a users invite list (invites them to a channel). 
776 <p>
777
778 <p>
779 Definition at line <a class="el" href="users_8cpp-source.html#l00089">89</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
780 <p>
781 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 <p>
783 <div class="fragment"><pre>00090 {
784 00091         <a class="code" href="classInvited.html">Invited</a> i;
785 00092         strlcpy(i.<a class="code" href="classInvited.html#o0">channel</a>,channel,CHANMAX);
786 00093         <a class="code" href="classuserrec.html#r0">invites</a>.push_back(i);
787 00094 }
788 </pre></div>    </td>
789   </tr>
790 </table>
791 <a name="a4" doxytag="userrec::IsInvited"></a><p>
792 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
793   <tr>
794     <td class="mdRow">
795       <table cellpadding="0" cellspacing="0" border="0">
796         <tr>
797           <td class="md" nowrap valign="top"> bool userrec::IsInvited </td>
798           <td class="md" valign="top">(&nbsp;</td>
799           <td class="md" nowrap valign="top">char *&nbsp;</td>
800           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
801           <td class="md" valign="top">&nbsp;)&nbsp;</td>
802           <td class="md" nowrap><code> [virtual]</code></td>
803         </tr>
804
805       </table>
806     </td>
807   </tr>
808 </table>
809 <table cellspacing=5 cellpadding=0 border=0>
810   <tr>
811     <td>
812       &nbsp;
813     </td>
814     <td>
815
816 <p>
817 Returns true if a user is invited to a channel. 
818 <p>
819
820 <p>
821 Definition at line <a class="el" href="users_8cpp-source.html#l00075">75</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
822 <p>
823 References <a class="el" href="users_8h-source.html#l00114">invites</a>.
824 <p>
825 <div class="fragment"><pre>00076 {
826 00077         <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         {
828 00079                 <span class="keywordflow">if</span> (i-&gt;channel) {
829 00080                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
830 00081                         {
831 00082                                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
832 00083                         }
833 00084                 }
834 00085         }
835 00086         <span class="keywordflow">return</span> <span class="keyword">false</span>;
836 00087 }
837 </pre></div>    </td>
838   </tr>
839 </table>
840 <a name="a6" doxytag="userrec::RemoveInvite"></a><p>
841 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
842   <tr>
843     <td class="mdRow">
844       <table cellpadding="0" cellspacing="0" border="0">
845         <tr>
846           <td class="md" nowrap valign="top"> void userrec::RemoveInvite </td>
847           <td class="md" valign="top">(&nbsp;</td>
848           <td class="md" nowrap valign="top">char *&nbsp;</td>
849           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
850           <td class="md" valign="top">&nbsp;)&nbsp;</td>
851           <td class="md" nowrap><code> [virtual]</code></td>
852         </tr>
853
854       </table>
855     </td>
856   </tr>
857 </table>
858 <table cellspacing=5 cellpadding=0 border=0>
859   <tr>
860     <td>
861       &nbsp;
862     </td>
863     <td>
864
865 <p>
866 Removes a channel from a users invite list. 
867 <p>
868 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 <p>
870 Definition at line <a class="el" href="users_8cpp-source.html#l00096">96</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
871 <p>
872 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 <p>
874 <div class="fragment"><pre>00097 {
875 00098         log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
876 00099         <span class="keywordflow">if</span> (channel)
877 00100         {
878 00101                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#r0">invites</a>.size())
879 00102                 {
880 00103                         <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                         {
882 00105                                 <span class="keywordflow">if</span> (i-&gt;channel)
883 00106                                 {
884 00107                                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
885 00108                                         {
886 00109                                                 <a class="code" href="classuserrec.html#r0">invites</a>.erase(i);
887 00110                                                 <span class="keywordflow">return</span>;
888 00111                                         }
889 00112                                 }
890 00113                         }
891 00114                 }
892 00115         }
893 00116 }
894 </pre></div>    </td>
895   </tr>
896 </table>
897 <a name="a12" doxytag="userrec::SetWriteError"></a><p>
898 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
899   <tr>
900     <td class="mdRow">
901       <table cellpadding="0" cellspacing="0" border="0">
902         <tr>
903           <td class="md" nowrap valign="top"> void userrec::SetWriteError </td>
904           <td class="md" valign="top">(&nbsp;</td>
905           <td class="md" nowrap valign="top">std::string&nbsp;</td>
906           <td class="mdname1" valign="top" nowrap> <em>error</em>          </td>
907           <td class="md" valign="top">&nbsp;)&nbsp;</td>
908           <td class="md" nowrap></td>
909         </tr>
910
911       </table>
912     </td>
913   </tr>
914 </table>
915 <table cellspacing=5 cellpadding=0 border=0>
916   <tr>
917     <td>
918       &nbsp;
919     </td>
920     <td>
921
922 <p>
923 Sets the write error for a connection. 
924 <p>
925 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 <p>
927 Definition at line <a class="el" href="users_8cpp-source.html#l00264">264</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
928 <p>
929 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 <p>
931 Referenced by <a class="el" href="users_8cpp-source.html#l00170">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00226">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00242">FlushWriteBuf()</a>.
932 <p>
933 <div class="fragment"><pre>00265 {
934 00266         log(DEBUG,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
935 00267         <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
936 00268         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> == <span class="stringliteral">""</span>)
937 00269                 this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> = error;
938 00270 }
939 </pre></div>    </td>
940   </tr>
941 </table>
942 <hr><h2>Member Data Documentation</h2>
943 <a name="o7" doxytag="userrec::awaymsg"></a><p>
944 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
945   <tr>
946     <td class="mdRow">
947       <table cellpadding="0" cellspacing="0" border="0">
948         <tr>
949           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o7">userrec::awaymsg</a>[512]
950       </table>
951     </td>
952   </tr>
953 </table>
954 <table cellspacing=5 cellpadding=0 border=0>
955   <tr>
956     <td>
957       &nbsp;
958     </td>
959     <td>
960
961 <p>
962 The user's away message. 
963 <p>
964 If this string is empty, the user is not marked as away.
965 <p>
966 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 <p>
968 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
969   </tr>
970 </table>
971 <a name="o5" doxytag="userrec::chans"></a><p>
972 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
973   <tr>
974     <td class="mdRow">
975       <table cellpadding="0" cellspacing="0" border="0">
976         <tr>
977           <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]
978       </table>
979     </td>
980   </tr>
981 </table>
982 <table cellspacing=5 cellpadding=0 border=0>
983   <tr>
984     <td>
985       &nbsp;
986     </td>
987     <td>
988
989 <p>
990
991 <p>
992 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 <p>
994 Referenced by <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
995   </tr>
996 </table>
997 <a name="o2" doxytag="userrec::dhost"></a><p>
998 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
999   <tr>
1000     <td class="mdRow">
1001       <table cellpadding="0" cellspacing="0" border="0">
1002         <tr>
1003           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o2">userrec::dhost</a>[256]
1004       </table>
1005     </td>
1006   </tr>
1007 </table>
1008 <table cellspacing=5 cellpadding=0 border=0>
1009   <tr>
1010     <td>
1011       &nbsp;
1012     </td>
1013     <td>
1014
1015 <p>
1016 The host displayed to non-opers (used for cloaking etc). 
1017 <p>
1018 This usually matches the value of <a class="el" href="classconnection.html#o1">userrec::host</a>.
1019 <p>
1020 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 <p>
1022 Referenced by <a class="el" href="users_8cpp-source.html#l00062">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1023   </tr>
1024 </table>
1025 <a name="o12" doxytag="userrec::dns_done"></a><p>
1026 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1027   <tr>
1028     <td class="mdRow">
1029       <table cellpadding="0" cellspacing="0" border="0">
1030         <tr>
1031           <td class="md" nowrap valign="top"> bool <a class="el" href="classuserrec.html#o12">userrec::dns_done</a>
1032       </table>
1033     </td>
1034   </tr>
1035 </table>
1036 <table cellspacing=5 cellpadding=0 border=0>
1037   <tr>
1038     <td>
1039       &nbsp;
1040     </td>
1041     <td>
1042
1043 <p>
1044 True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. 
1045 <p>
1046
1047 <p>
1048 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 <p>
1050 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1051   </tr>
1052 </table>
1053 <a name="o9" doxytag="userrec::flood"></a><p>
1054 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1055   <tr>
1056     <td class="mdRow">
1057       <table cellpadding="0" cellspacing="0" border="0">
1058         <tr>
1059           <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o9">userrec::flood</a>
1060       </table>
1061     </td>
1062   </tr>
1063 </table>
1064 <table cellspacing=5 cellpadding=0 border=0>
1065   <tr>
1066     <td>
1067       &nbsp;
1068     </td>
1069     <td>
1070
1071 <p>
1072 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. 
1073 <p>
1074
1075 <p>
1076 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 <p>
1078 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1079   </tr>
1080 </table>
1081 <a name="o3" doxytag="userrec::fullname"></a><p>
1082 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1083   <tr>
1084     <td class="mdRow">
1085       <table cellpadding="0" cellspacing="0" border="0">
1086         <tr>
1087           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o3">userrec::fullname</a>[128]
1088       </table>
1089     </td>
1090   </tr>
1091 </table>
1092 <table cellspacing=5 cellpadding=0 border=0>
1093   <tr>
1094     <td>
1095       &nbsp;
1096     </td>
1097     <td>
1098
1099 <p>
1100 The users full name. 
1101 <p>
1102
1103 <p>
1104 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 <p>
1106 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1107   </tr>
1108 </table>
1109 <a name="o1" doxytag="userrec::ident"></a><p>
1110 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1111   <tr>
1112     <td class="mdRow">
1113       <table cellpadding="0" cellspacing="0" border="0">
1114         <tr>
1115           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o1">userrec::ident</a>[64]
1116       </table>
1117     </td>
1118   </tr>
1119 </table>
1120 <table cellspacing=5 cellpadding=0 border=0>
1121   <tr>
1122     <td>
1123       &nbsp;
1124     </td>
1125     <td>
1126
1127 <p>
1128 The users ident reply. 
1129 <p>
1130
1131 <p>
1132 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 <p>
1134 Referenced by <a class="el" href="users_8cpp-source.html#l00062">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00069">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00680">Server::UserToPseudo()</a>.    </td>
1135   </tr>
1136 </table>
1137 <a name="r0" doxytag="userrec::invites"></a><p>
1138 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1139   <tr>
1140     <td class="mdRow">
1141       <table cellpadding="0" cellspacing="0" border="0">
1142         <tr>
1143           <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>
1144       </table>
1145     </td>
1146   </tr>
1147 </table>
1148 <table cellspacing=5 cellpadding=0 border=0>
1149   <tr>
1150     <td>
1151       &nbsp;
1152     </td>
1153     <td>
1154
1155 <p>
1156 A list of channels the user has a pending invite to. 
1157 <p>
1158
1159 <p>
1160 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 <p>
1162 Referenced by <a class="el" href="users_8cpp-source.html#l00089">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00075">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00096">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1163   </tr>
1164 </table>
1165 <a name="o17" doxytag="userrec::lines_in"></a><p>
1166 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1167   <tr>
1168     <td class="mdRow">
1169       <table cellpadding="0" cellspacing="0" border="0">
1170         <tr>
1171           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o17">userrec::lines_in</a>
1172       </table>
1173     </td>
1174   </tr>
1175 </table>
1176 <table cellspacing=5 cellpadding=0 border=0>
1177   <tr>
1178     <td>
1179       &nbsp;
1180     </td>
1181     <td>
1182
1183 <p>
1184 Flood counters. 
1185 <p>
1186
1187 <p>
1188 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 <p>
1190 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1191   </tr>
1192 </table>
1193 <a name="o4" doxytag="userrec::modes"></a><p>
1194 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1195   <tr>
1196     <td class="mdRow">
1197       <table cellpadding="0" cellspacing="0" border="0">
1198         <tr>
1199           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o4">userrec::modes</a>[MAXBUF]
1200       </table>
1201     </td>
1202   </tr>
1203 </table>
1204 <table cellspacing=5 cellpadding=0 border=0>
1205   <tr>
1206     <td>
1207       &nbsp;
1208     </td>
1209     <td>
1210
1211 <p>
1212 The user's mode string. 
1213 <p>
1214 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 <p>
1216 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 <p>
1218 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1219   </tr>
1220 </table>
1221 <a name="o0" doxytag="userrec::nick"></a><p>
1222 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1223   <tr>
1224     <td class="mdRow">
1225       <table cellpadding="0" cellspacing="0" border="0">
1226         <tr>
1227           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o0">userrec::nick</a>[NICKMAX]
1228       </table>
1229     </td>
1230   </tr>
1231 </table>
1232 <table cellspacing=5 cellpadding=0 border=0>
1233   <tr>
1234     <td>
1235       &nbsp;
1236     </td>
1237     <td>
1238
1239 <p>
1240 The users nickname. 
1241 <p>
1242 An invalid nickname indicates an unregistered connection prior to the NICK command.
1243 <p>
1244 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 <p>
1246 Referenced by <a class="el" href="modules_8cpp-source.html#l00966">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00062">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00069">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1247   </tr>
1248 </table>
1249 <a name="o11" doxytag="userrec::oper"></a><p>
1250 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1251   <tr>
1252     <td class="mdRow">
1253       <table cellpadding="0" cellspacing="0" border="0">
1254         <tr>
1255           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o11">userrec::oper</a>[NICKMAX]
1256       </table>
1257     </td>
1258   </tr>
1259 </table>
1260 <table cellspacing=5 cellpadding=0 border=0>
1261   <tr>
1262     <td>
1263       &nbsp;
1264     </td>
1265     <td>
1266
1267 <p>
1268 The oper type they logged in as, if they are an oper. 
1269 <p>
1270 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 <p>
1272 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 <p>
1274 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1275   </tr>
1276 </table>
1277 <a name="o14" doxytag="userrec::password"></a><p>
1278 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1279   <tr>
1280     <td class="mdRow">
1281       <table cellpadding="0" cellspacing="0" border="0">
1282         <tr>
1283           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o14">userrec::password</a>[MAXBUF]
1284       </table>
1285     </td>
1286   </tr>
1287 </table>
1288 <table cellspacing=5 cellpadding=0 border=0>
1289   <tr>
1290     <td>
1291       &nbsp;
1292     </td>
1293     <td>
1294
1295 <p>
1296 Password specified by the user when they registered. 
1297 <p>
1298 This is stored even if the  block doesnt need a password, so that modules may check it.
1299 <p>
1300 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>
1301   </tr>
1302 </table>
1303 <a name="o13" doxytag="userrec::pingmax"></a><p>
1304 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1305   <tr>
1306     <td class="mdRow">
1307       <table cellpadding="0" cellspacing="0" border="0">
1308         <tr>
1309           <td class="md" nowrap valign="top"> unsigned long <a class="el" href="classuserrec.html#o13">userrec::pingmax</a>
1310       </table>
1311     </td>
1312   </tr>
1313 </table>
1314 <table cellspacing=5 cellpadding=0 border=0>
1315   <tr>
1316     <td>
1317       &nbsp;
1318     </td>
1319     <td>
1320
1321 <p>
1322 Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag. 
1323 <p>
1324
1325 <p>
1326 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>
1327   </tr>
1328 </table>
1329 <a name="o15" doxytag="userrec::recvq"></a><p>
1330 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1331   <tr>
1332     <td class="mdRow">
1333       <table cellpadding="0" cellspacing="0" border="0">
1334         <tr>
1335           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o15">userrec::recvq</a>
1336       </table>
1337     </td>
1338   </tr>
1339 </table>
1340 <table cellspacing=5 cellpadding=0 border=0>
1341   <tr>
1342     <td>
1343       &nbsp;
1344     </td>
1345     <td>
1346
1347 <p>
1348 User's receive queue. 
1349 <p>
1350 Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
1351 <p>
1352 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 <p>
1354 Referenced by <a class="el" href="users_8cpp-source.html#l00170">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00196">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00204">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00209">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1355   </tr>
1356 </table>
1357 <a name="o22" doxytag="userrec::recvqmax"></a><p>
1358 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1359   <tr>
1360     <td class="mdRow">
1361       <table cellpadding="0" cellspacing="0" border="0">
1362         <tr>
1363           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o22">userrec::recvqmax</a>
1364       </table>
1365     </td>
1366   </tr>
1367 </table>
1368 <table cellspacing=5 cellpadding=0 border=0>
1369   <tr>
1370     <td>
1371       &nbsp;
1372     </td>
1373     <td>
1374
1375 <p>
1376 Maximum size this user's recvq can become. 
1377 <p>
1378
1379 <p>
1380 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 <p>
1382 Referenced by <a class="el" href="users_8cpp-source.html#l00170">AddBuffer()</a>.    </td>
1383   </tr>
1384 </table>
1385 <a name="o18" doxytag="userrec::reset_due"></a><p>
1386 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1387   <tr>
1388     <td class="mdRow">
1389       <table cellpadding="0" cellspacing="0" border="0">
1390         <tr>
1391           <td class="md" nowrap valign="top"> time_t <a class="el" href="classuserrec.html#o18">userrec::reset_due</a>
1392       </table>
1393     </td>
1394   </tr>
1395 </table>
1396 <table cellspacing=5 cellpadding=0 border=0>
1397   <tr>
1398     <td>
1399       &nbsp;
1400     </td>
1401     <td>
1402
1403 <p>
1404
1405 <p>
1406 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 <p>
1408 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1409   </tr>
1410 </table>
1411 <a name="o8" doxytag="userrec::result"></a><p>
1412 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1413   <tr>
1414     <td class="mdRow">
1415       <table cellpadding="0" cellspacing="0" border="0">
1416         <tr>
1417           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o8">userrec::result</a>[256]
1418       </table>
1419     </td>
1420   </tr>
1421 </table>
1422 <table cellspacing=5 cellpadding=0 border=0>
1423   <tr>
1424     <td>
1425       &nbsp;
1426     </td>
1427     <td>
1428
1429 <p>
1430 Stores the result of the last GetFullHost or GetRealHost call. 
1431 <p>
1432 You may use this to increase the speed of use of this class.
1433 <p>
1434 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 <p>
1436 Referenced by <a class="el" href="users_8cpp-source.html#l00062">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00069">GetFullRealHost()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1437   </tr>
1438 </table>
1439 <a name="o16" doxytag="userrec::sendq"></a><p>
1440 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1441   <tr>
1442     <td class="mdRow">
1443       <table cellpadding="0" cellspacing="0" border="0">
1444         <tr>
1445           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o16">userrec::sendq</a>
1446       </table>
1447     </td>
1448   </tr>
1449 </table>
1450 <table cellspacing=5 cellpadding=0 border=0>
1451   <tr>
1452     <td>
1453       &nbsp;
1454     </td>
1455     <td>
1456
1457 <p>
1458 User's send queue. 
1459 <p>
1460 Lines waiting to be sent are stored here until their buffer is flushed.
1461 <p>
1462 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 <p>
1464 Referenced by <a class="el" href="users_8cpp-source.html#l00226">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00242">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1465   </tr>
1466 </table>
1467 <a name="o21" doxytag="userrec::sendqmax"></a><p>
1468 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1469   <tr>
1470     <td class="mdRow">
1471       <table cellpadding="0" cellspacing="0" border="0">
1472         <tr>
1473           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o21">userrec::sendqmax</a>
1474       </table>
1475     </td>
1476   </tr>
1477 </table>
1478 <table cellspacing=5 cellpadding=0 border=0>
1479   <tr>
1480     <td>
1481       &nbsp;
1482     </td>
1483     <td>
1484
1485 <p>
1486 Maximum size this user's sendq can become. 
1487 <p>
1488
1489 <p>
1490 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 <p>
1492 Referenced by <a class="el" href="users_8cpp-source.html#l00226">AddWriteBuf()</a>.    </td>
1493   </tr>
1494 </table>
1495 <a name="o6" doxytag="userrec::server"></a><p>
1496 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1497   <tr>
1498     <td class="mdRow">
1499       <table cellpadding="0" cellspacing="0" border="0">
1500         <tr>
1501           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o6">userrec::server</a>[256]
1502       </table>
1503     </td>
1504   </tr>
1505 </table>
1506 <table cellspacing=5 cellpadding=0 border=0>
1507   <tr>
1508     <td>
1509       &nbsp;
1510     </td>
1511     <td>
1512
1513 <p>
1514 The server the user is connected to. 
1515 <p>
1516
1517 <p>
1518 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 <p>
1520 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1521   </tr>
1522 </table>
1523 <a name="o19" doxytag="userrec::threshold"></a><p>
1524 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1525   <tr>
1526     <td class="mdRow">
1527       <table cellpadding="0" cellspacing="0" border="0">
1528         <tr>
1529           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o19">userrec::threshold</a>
1530       </table>
1531     </td>
1532   </tr>
1533 </table>
1534 <table cellspacing=5 cellpadding=0 border=0>
1535   <tr>
1536     <td>
1537       &nbsp;
1538     </td>
1539     <td>
1540
1541 <p>
1542
1543 <p>
1544 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>
1545   </tr>
1546 </table>
1547 <a name="o10" doxytag="userrec::timeout"></a><p>
1548 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1549   <tr>
1550     <td class="mdRow">
1551       <table cellpadding="0" cellspacing="0" border="0">
1552         <tr>
1553           <td class="md" nowrap valign="top"> unsigned long <a class="el" href="classuserrec.html#o10">userrec::timeout</a>
1554       </table>
1555     </td>
1556   </tr>
1557 </table>
1558 <table cellspacing=5 cellpadding=0 border=0>
1559   <tr>
1560     <td>
1561       &nbsp;
1562     </td>
1563     <td>
1564
1565 <p>
1566 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. 
1567 <p>
1568
1569 <p>
1570 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 <p>
1572 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1573   </tr>
1574 </table>
1575 <a name="o20" doxytag="userrec::WriteError"></a><p>
1576 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1577   <tr>
1578     <td class="mdRow">
1579       <table cellpadding="0" cellspacing="0" border="0">
1580         <tr>
1581           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o20">userrec::WriteError</a>
1582       </table>
1583     </td>
1584   </tr>
1585 </table>
1586 <table cellspacing=5 cellpadding=0 border=0>
1587   <tr>
1588     <td>
1589       &nbsp;
1590     </td>
1591     <td>
1592
1593 <p>
1594
1595 <p>
1596 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 <p>
1598 Referenced by <a class="el" href="users_8cpp-source.html#l00272">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00264">SetWriteError()</a>.    </td>
1599   </tr>
1600 </table>
1601 <hr>The documentation for this class was generated from the following files:<ul>
1602 <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>
1603 <hr size="1"><address style="align: right;"><small>Generated on Thu May 12 02:25:29 2005 for InspIRCd by
1604 <a href="http://www.doxygen.org/index.html">
1605 <img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
1606 </a>1.3.3 </small></address>
1607 </body>
1608 </html>