]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/classuserrec.html
1b7b4000cbcbac72634ef558c4156baf87558f0a
[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> [16]</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> [160]</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 int&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 int&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>int&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#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>.
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(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 &lt; MAXCHANS; i++)
197 00052         {
198 00053                 this-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a> = NULL;
199 00054                 this-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o0">uc_modes</a> = 0;
200 00055         }
201 00056         <a class="code" href="classuserrec.html#r0">invites</a>.clear();
202 00057 }
203 </pre></div>    </td>
204   </tr>
205 </table>
206 <a name="a1" doxytag="userrec::~userrec"></a><p>
207 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
208   <tr>
209     <td class="mdRow">
210       <table cellpadding="0" cellspacing="0" border="0">
211         <tr>
212           <td class="md" nowrap valign="top"> virtual userrec::~<a class="el" href="classuserrec.html">userrec</a> </td>
213           <td class="md" valign="top">(&nbsp;</td>
214           <td class="mdname1" valign="top" nowrap>          </td>
215           <td class="md" valign="top">&nbsp;)&nbsp;</td>
216           <td class="md" nowrap><code> [inline, virtual]</code></td>
217         </tr>
218
219       </table>
220     </td>
221   </tr>
222 </table>
223 <table cellspacing=5 cellpadding=0 border=0>
224   <tr>
225     <td>
226       &nbsp;
227     </td>
228     <td>
229
230 <p>
231
232 <p>
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>.
234 <p>
235 <div class="fragment"><pre>00222 {  }
236 </pre></div>    </td>
237   </tr>
238 </table>
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">
242   <tr>
243     <td class="mdRow">
244       <table cellpadding="0" cellspacing="0" border="0">
245         <tr>
246           <td class="md" nowrap valign="top"> bool userrec::AddBuffer </td>
247           <td class="md" valign="top">(&nbsp;</td>
248           <td class="md" nowrap valign="top">std::string&nbsp;</td>
249           <td class="mdname1" valign="top" nowrap> <em>a</em>          </td>
250           <td class="md" valign="top">&nbsp;)&nbsp;</td>
251           <td class="md" nowrap></td>
252         </tr>
253
254       </table>
255     </td>
256   </tr>
257 </table>
258 <table cellspacing=5 cellpadding=0 border=0>
259   <tr>
260     <td>
261       &nbsp;
262     </td>
263     <td>
264
265 <p>
266 This method adds data to the buffer of the user. 
267 <p>
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.
269 <p>
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>.
271 <p>
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>.
273 <p>
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 &lt; a.length(); i++)
277 00173                 <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))
278 00174                         b = b + a[i];
279 00175         std::stringstream stream(recvq);
280 00176         stream &lt;&lt; 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 &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length())
285 00181         {
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>;
288 00184         }
289 00185         <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>)
290 00186         {
291 00187                 this-&gt;<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-&gt;nick,<a class="code" href="classuserrec.html#o15">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>);
293 00189         }
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 &lt; 600);
297 00193 }
298 </pre></div>    </td>
299   </tr>
300 </table>
301 <a name="a14" doxytag="userrec::AddWriteBuf"></a><p>
302 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
303   <tr>
304     <td class="mdRow">
305       <table cellpadding="0" cellspacing="0" border="0">
306         <tr>
307           <td class="md" nowrap valign="top"> void userrec::AddWriteBuf </td>
308           <td class="md" valign="top">(&nbsp;</td>
309           <td class="md" nowrap valign="top">std::string&nbsp;</td>
310           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
311           <td class="md" valign="top">&nbsp;)&nbsp;</td>
312           <td class="md" nowrap></td>
313         </tr>
314
315       </table>
316     </td>
317   </tr>
318 </table>
319 <table cellspacing=5 cellpadding=0 border=0>
320   <tr>
321     <td>
322       &nbsp;
323     </td>
324     <td>
325
326 <p>
327 Adds to the user's write buffer. 
328 <p>
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.
330 <p>
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>.
332 <p>
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>.
334 <p>
335 <div class="fragment"><pre>00226 {
336 00227         <span class="keywordflow">if</span> (this-&gt;<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() &gt; this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>)
339 00230         {
340 00231                 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>);
341 00232                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
342 00233                 <span class="keywordflow">return</span>;
343 00234         }
344 00235         std::stringstream stream;
345 00236         stream &lt;&lt; <a class="code" href="classuserrec.html#o16">sendq</a> &lt;&lt; data;
346 00237         <a class="code" href="classuserrec.html#o16">sendq</a> = stream.str();
347 00238 }
348 </pre></div>    </td>
349   </tr>
350 </table>
351 <a name="a9" doxytag="userrec::BufferIsReady"></a><p>
352 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
353   <tr>
354     <td class="mdRow">
355       <table cellpadding="0" cellspacing="0" border="0">
356         <tr>
357           <td class="md" nowrap valign="top"> bool userrec::BufferIsReady </td>
358           <td class="md" valign="top">(&nbsp;</td>
359           <td class="mdname1" valign="top" nowrap>          </td>
360           <td class="md" valign="top">&nbsp;)&nbsp;</td>
361           <td class="md" nowrap></td>
362         </tr>
363
364       </table>
365     </td>
366   </tr>
367 </table>
368 <table cellspacing=5 cellpadding=0 border=0>
369   <tr>
370     <td>
371       &nbsp;
372     </td>
373     <td>
374
375 <p>
376 This method returns true if the buffer contains at least one carriage return character (e.g. 
377 <p>
378 one complete line may be read)
379 <p>
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>.
381 <p>
382 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
383 <p>
384 <div class="fragment"><pre>00196 {
385 00197         <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++)
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>;
389 00201 }
390 </pre></div>    </td>
391   </tr>
392 </table>
393 <a name="a10" doxytag="userrec::ClearBuffer"></a><p>
394 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
395   <tr>
396     <td class="mdRow">
397       <table cellpadding="0" cellspacing="0" border="0">
398         <tr>
399           <td class="md" nowrap valign="top"> void userrec::ClearBuffer </td>
400           <td class="md" valign="top">(&nbsp;</td>
401           <td class="mdname1" valign="top" nowrap>          </td>
402           <td class="md" valign="top">&nbsp;)&nbsp;</td>
403           <td class="md" nowrap></td>
404         </tr>
405
406       </table>
407     </td>
408   </tr>
409 </table>
410 <table cellspacing=5 cellpadding=0 border=0>
411   <tr>
412     <td>
413       &nbsp;
414     </td>
415     <td>
416
417 <p>
418 This function clears the entire buffer by setting it to an empty string. 
419 <p>
420
421 <p>
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>.
423 <p>
424 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
425 <p>
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>.
427 <p>
428 <div class="fragment"><pre>00204 {
429 00205         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
430 00206 }
431 </pre></div>    </td>
432   </tr>
433 </table>
434 <a name="a15" doxytag="userrec::FlushWriteBuf"></a><p>
435 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
436   <tr>
437     <td class="mdRow">
438       <table cellpadding="0" cellspacing="0" border="0">
439         <tr>
440           <td class="md" nowrap valign="top"> void userrec::FlushWriteBuf </td>
441           <td class="md" valign="top">(&nbsp;</td>
442           <td class="mdname1" valign="top" nowrap>          </td>
443           <td class="md" valign="top">&nbsp;)&nbsp;</td>
444           <td class="md" nowrap></td>
445         </tr>
446
447       </table>
448     </td>
449   </tr>
450 </table>
451 <table cellspacing=5 cellpadding=0 border=0>
452   <tr>
453     <td>
454       &nbsp;
455     </td>
456     <td>
457
458 <p>
459 Flushes as much of the user's buffer to the file descriptor as possible. 
460 <p>
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.
462 <p>
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>.
464 <p>
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>.
466 <p>
467 <div class="fragment"><pre>00242 {
468 00243         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length())
469 00244         {
470 00245                 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a>.c_str();
471 00246                 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
472 00247                 <span class="keywordflow">if</span> (n_sent == -1)
473 00248                 {
474 00249                         this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(strerror(errno));
475 00250                 }
476 00251                 <span class="keywordflow">else</span>
477 00252                 {
478 00253                         <span class="comment">// advance the queue</span>
479 00254                         tb += n_sent;
480 00255                         this-&gt;<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-&gt;<a class="code" href="classconnection.html#o4">bytes_out</a> += n_sent;
483 00258                         this-&gt;<a class="code" href="classconnection.html#o6">cmds_out</a>++;
484 00259                 }
485 00260         }
486 00261 }
487 </pre></div>    </td>
488   </tr>
489 </table>
490 <a name="a11" doxytag="userrec::GetBuffer"></a><p>
491 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
492   <tr>
493     <td class="mdRow">
494       <table cellpadding="0" cellspacing="0" border="0">
495         <tr>
496           <td class="md" nowrap valign="top"> std::string userrec::GetBuffer </td>
497           <td class="md" valign="top">(&nbsp;</td>
498           <td class="mdname1" valign="top" nowrap>          </td>
499           <td class="md" valign="top">&nbsp;)&nbsp;</td>
500           <td class="md" nowrap></td>
501         </tr>
502
503       </table>
504     </td>
505   </tr>
506 </table>
507 <table cellspacing=5 cellpadding=0 border=0>
508   <tr>
509     <td>
510       &nbsp;
511     </td>
512     <td>
513
514 <p>
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. 
516 <p>
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>.
518 <p>
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>.
520 <p>
521 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
522 <p>
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>) &amp;&amp; (strlen(line)))
529 00215         {
530 00216                 ret = ret + *line;
531 00217                 line++;
532 00218         }
533 00219         <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
534 00220                 line++;
535 00221         <a class="code" href="classuserrec.html#o15">recvq</a> = line;
536 00222         <span class="keywordflow">return</span> ret;
537 00223 }
538 </pre></div>    </td>
539   </tr>
540 </table>
541 <a name="a2" doxytag="userrec::GetFullHost"></a><p>
542 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
543   <tr>
544     <td class="mdRow">
545       <table cellpadding="0" cellspacing="0" border="0">
546         <tr>
547           <td class="md" nowrap valign="top"> char * userrec::GetFullHost </td>
548           <td class="md" valign="top">(&nbsp;</td>
549           <td class="mdname1" valign="top" nowrap>          </td>
550           <td class="md" valign="top">&nbsp;)&nbsp;</td>
551           <td class="md" nowrap><code> [virtual]</code></td>
552         </tr>
553
554       </table>
555     </td>
556   </tr>
557 </table>
558 <table cellspacing=5 cellpadding=0 border=0>
559   <tr>
560     <td>
561       &nbsp;
562     </td>
563     <td>
564
565 <p>
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. 
567 <p>
568
569 <p>
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>.
571 <p>
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>.
573 <p>
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>;
577 00065 }
578 </pre></div>    </td>
579   </tr>
580 </table>
581 <a name="a3" doxytag="userrec::GetFullRealHost"></a><p>
582 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
583   <tr>
584     <td class="mdRow">
585       <table cellpadding="0" cellspacing="0" border="0">
586         <tr>
587           <td class="md" nowrap valign="top"> char * userrec::GetFullRealHost </td>
588           <td class="md" valign="top">(&nbsp;</td>
589           <td class="mdname1" valign="top" nowrap>          </td>
590           <td class="md" valign="top">&nbsp;)&nbsp;</td>
591           <td class="md" nowrap><code> [virtual]</code></td>
592         </tr>
593
594       </table>
595     </td>
596   </tr>
597 </table>
598 <table cellspacing=5 cellpadding=0 border=0>
599   <tr>
600     <td>
601       &nbsp;
602     </td>
603     <td>
604
605 <p>
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. 
607 <p>
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.
609 <p>
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>.
611 <p>
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>.
613 <p>
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>;
617 00072 }
618 </pre></div>    </td>
619   </tr>
620 </table>
621 <a name="a13" doxytag="userrec::GetWriteError"></a><p>
622 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
623   <tr>
624     <td class="mdRow">
625       <table cellpadding="0" cellspacing="0" border="0">
626         <tr>
627           <td class="md" nowrap valign="top"> std::string userrec::GetWriteError </td>
628           <td class="md" valign="top">(&nbsp;</td>
629           <td class="mdname1" valign="top" nowrap>          </td>
630           <td class="md" valign="top">&nbsp;)&nbsp;</td>
631           <td class="md" nowrap></td>
632         </tr>
633
634       </table>
635     </td>
636   </tr>
637 </table>
638 <table cellspacing=5 cellpadding=0 border=0>
639   <tr>
640     <td>
641       &nbsp;
642     </td>
643     <td>
644
645 <p>
646 Returns the write error which last occured on this connection or an empty string if none occured. 
647 <p>
648
649 <p>
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>.
651 <p>
652 References <a class="el" href="users_8h-source.html#l00210">WriteError</a>.
653 <p>
654 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>.
655 <p>
656 <div class="fragment"><pre>00272 {
657 00273         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a>;
658 00274 }
659 </pre></div>    </td>
660   </tr>
661 </table>
662 <a name="a7" doxytag="userrec::HasPermission"></a><p>
663 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
664   <tr>
665     <td class="mdRow">
666       <table cellpadding="0" cellspacing="0" border="0">
667         <tr>
668           <td class="md" nowrap valign="top"> bool userrec::HasPermission </td>
669           <td class="md" valign="top">(&nbsp;</td>
670           <td class="md" nowrap valign="top">char *&nbsp;</td>
671           <td class="mdname1" valign="top" nowrap> <em>command</em>          </td>
672           <td class="md" valign="top">&nbsp;)&nbsp;</td>
673           <td class="md" nowrap></td>
674         </tr>
675
676       </table>
677     </td>
678   </tr>
679 </table>
680 <table cellspacing=5 cellpadding=0 border=0>
681   <tr>
682     <td>
683       &nbsp;
684     </td>
685     <td>
686
687 <p>
688 Returns true or false for if a user can execute a privilaged oper command. 
689 <p>
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.
691 <p>
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>.
693 <p>
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>.
695 <p>
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;
701 00123         
702 00124         <span class="comment">// are they even an oper at all?</span>
703 00125         <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
704 00126         {
705 00127                 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper"</span>,this-&gt;nick);
706 00128                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;config_f); j++)
707 00129                 {
708 00130                         ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;config_f);
709 00131                         <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
710 00132                         {
711 00133                                 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper of type '%s'"</span>,this-&gt;nick,this-&gt;oper);
712 00134                                 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;config_f);
713 00135                                 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
714 00136                                 <span class="keywordflow">while</span> (myclass)
715 00137                                 {
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 &lt; ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;config_f); k++)
718 00140                                         {
719 00141                                                 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;config_f);
720 00142                                                 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
721 00143                                                 {
722 00144                                                         ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;config_f);
723 00145                                                         log(DEBUG,<span class="stringliteral">"*** HasPermission: found class named %s with commands: '%s'"</span>,ClassName,CommandList);
724 00146                                                         
725 00147                                                         
726 00148                                                         mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
727 00149                                                         <span class="keywordflow">while</span> (mycmd)
728 00150                                                         {
729 00151                                                                 <span class="keywordflow">if</span> (!strcasecmp(mycmd,command))
730 00152                                                                 {
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>;
733 00155                                                                 }
734 00156                                                                 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
735 00157                                                         }
736 00158                                                 }
737 00159                                         }
738 00160                                         myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
739 00161                                 }
740 00162                         }
741 00163                 }
742 00164         }
743 00165         <span class="keywordflow">return</span> <span class="keyword">false</span>;
744 00166 }
745 </pre></div>    </td>
746   </tr>
747 </table>
748 <a name="a5" doxytag="userrec::InviteTo"></a><p>
749 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
750   <tr>
751     <td class="mdRow">
752       <table cellpadding="0" cellspacing="0" border="0">
753         <tr>
754           <td class="md" nowrap valign="top"> void userrec::InviteTo </td>
755           <td class="md" valign="top">(&nbsp;</td>
756           <td class="md" nowrap valign="top">char *&nbsp;</td>
757           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
758           <td class="md" valign="top">&nbsp;)&nbsp;</td>
759           <td class="md" nowrap><code> [virtual]</code></td>
760         </tr>
761
762       </table>
763     </td>
764   </tr>
765 </table>
766 <table cellspacing=5 cellpadding=0 border=0>
767   <tr>
768     <td>
769       &nbsp;
770     </td>
771     <td>
772
773 <p>
774 Adds a channel to a users invite list (invites them to a channel). 
775 <p>
776
777 <p>
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>.
779 <p>
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>.
781 <p>
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);
786 00093 }
787 </pre></div>    </td>
788   </tr>
789 </table>
790 <a name="a4" doxytag="userrec::IsInvited"></a><p>
791 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
792   <tr>
793     <td class="mdRow">
794       <table cellpadding="0" cellspacing="0" border="0">
795         <tr>
796           <td class="md" nowrap valign="top"> bool userrec::IsInvited </td>
797           <td class="md" valign="top">(&nbsp;</td>
798           <td class="md" nowrap valign="top">char *&nbsp;</td>
799           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
800           <td class="md" valign="top">&nbsp;)&nbsp;</td>
801           <td class="md" nowrap><code> [virtual]</code></td>
802         </tr>
803
804       </table>
805     </td>
806   </tr>
807 </table>
808 <table cellspacing=5 cellpadding=0 border=0>
809   <tr>
810     <td>
811       &nbsp;
812     </td>
813     <td>
814
815 <p>
816 Returns true if a user is invited to a channel. 
817 <p>
818
819 <p>
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>.
821 <p>
822 References <a class="el" href="users_8h-source.html#l00114">invites</a>.
823 <p>
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++)
826 00077         {
827 00078                 <span class="keywordflow">if</span> (i-&gt;channel) {
828 00079                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
829 00080                         {
830 00081                                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
831 00082                         }
832 00083                 }
833 00084         }
834 00085         <span class="keywordflow">return</span> <span class="keyword">false</span>;
835 00086 }
836 </pre></div>    </td>
837   </tr>
838 </table>
839 <a name="a6" doxytag="userrec::RemoveInvite"></a><p>
840 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
841   <tr>
842     <td class="mdRow">
843       <table cellpadding="0" cellspacing="0" border="0">
844         <tr>
845           <td class="md" nowrap valign="top"> void userrec::RemoveInvite </td>
846           <td class="md" valign="top">(&nbsp;</td>
847           <td class="md" nowrap valign="top">char *&nbsp;</td>
848           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
849           <td class="md" valign="top">&nbsp;)&nbsp;</td>
850           <td class="md" nowrap><code> [virtual]</code></td>
851         </tr>
852
853       </table>
854     </td>
855   </tr>
856 </table>
857 <table cellspacing=5 cellpadding=0 border=0>
858   <tr>
859     <td>
860       &nbsp;
861     </td>
862     <td>
863
864 <p>
865 Removes a channel from a users invite list. 
866 <p>
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.
868 <p>
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>.
870 <p>
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>.
872 <p>
873 <div class="fragment"><pre>00096 {
874 00097         log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
875 00098         <span class="keywordflow">if</span> (channel)
876 00099         {
877 00100                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#r0">invites</a>.size())
878 00101                 {
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++)
880 00103                         {
881 00104                                 <span class="keywordflow">if</span> (i-&gt;channel)
882 00105                                 {
883 00106                                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
884 00107                                         {
885 00108                                                 <a class="code" href="classuserrec.html#r0">invites</a>.erase(i);
886 00109                                                 <span class="keywordflow">return</span>;
887 00110                                         }
888 00111                                 }
889 00112                         }
890 00113                 }
891 00114         }
892 00115 }
893 </pre></div>    </td>
894   </tr>
895 </table>
896 <a name="a12" doxytag="userrec::SetWriteError"></a><p>
897 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
898   <tr>
899     <td class="mdRow">
900       <table cellpadding="0" cellspacing="0" border="0">
901         <tr>
902           <td class="md" nowrap valign="top"> void userrec::SetWriteError </td>
903           <td class="md" valign="top">(&nbsp;</td>
904           <td class="md" nowrap valign="top">std::string&nbsp;</td>
905           <td class="mdname1" valign="top" nowrap> <em>error</em>          </td>
906           <td class="md" valign="top">&nbsp;)&nbsp;</td>
907           <td class="md" nowrap></td>
908         </tr>
909
910       </table>
911     </td>
912   </tr>
913 </table>
914 <table cellspacing=5 cellpadding=0 border=0>
915   <tr>
916     <td>
917       &nbsp;
918     </td>
919     <td>
920
921 <p>
922 Sets the write error for a connection. 
923 <p>
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.
925 <p>
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>.
927 <p>
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>.
929 <p>
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>.
931 <p>
932 <div class="fragment"><pre>00264 {
933 00265         log(DEBUG,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;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-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> == <span class="stringliteral">""</span>)
936 00268                 this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> = error;
937 00269 }
938 </pre></div>    </td>
939   </tr>
940 </table>
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">
944   <tr>
945     <td class="mdRow">
946       <table cellpadding="0" cellspacing="0" border="0">
947         <tr>
948           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o7">userrec::awaymsg</a>[512]
949       </table>
950     </td>
951   </tr>
952 </table>
953 <table cellspacing=5 cellpadding=0 border=0>
954   <tr>
955     <td>
956       &nbsp;
957     </td>
958     <td>
959
960 <p>
961 The user's away message. 
962 <p>
963 If this string is empty, the user is not marked as away.
964 <p>
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>.
966 <p>
967 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
968   </tr>
969 </table>
970 <a name="o5" doxytag="userrec::chans"></a><p>
971 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
972   <tr>
973     <td class="mdRow">
974       <table cellpadding="0" cellspacing="0" border="0">
975         <tr>
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]
977       </table>
978     </td>
979   </tr>
980 </table>
981 <table cellspacing=5 cellpadding=0 border=0>
982   <tr>
983     <td>
984       &nbsp;
985     </td>
986     <td>
987
988 <p>
989
990 <p>
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>.
992 <p>
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>
994   </tr>
995 </table>
996 <a name="o2" doxytag="userrec::dhost"></a><p>
997 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
998   <tr>
999     <td class="mdRow">
1000       <table cellpadding="0" cellspacing="0" border="0">
1001         <tr>
1002           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o2">userrec::dhost</a>[160]
1003       </table>
1004     </td>
1005   </tr>
1006 </table>
1007 <table cellspacing=5 cellpadding=0 border=0>
1008   <tr>
1009     <td>
1010       &nbsp;
1011     </td>
1012     <td>
1013
1014 <p>
1015 The host displayed to non-opers (used for cloaking etc). 
1016 <p>
1017 This usually matches the value of <a class="el" href="classconnection.html#o1">userrec::host</a>.
1018 <p>
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>.
1020 <p>
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>
1022   </tr>
1023 </table>
1024 <a name="o12" doxytag="userrec::dns_done"></a><p>
1025 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1026   <tr>
1027     <td class="mdRow">
1028       <table cellpadding="0" cellspacing="0" border="0">
1029         <tr>
1030           <td class="md" nowrap valign="top"> bool <a class="el" href="classuserrec.html#o12">userrec::dns_done</a>
1031       </table>
1032     </td>
1033   </tr>
1034 </table>
1035 <table cellspacing=5 cellpadding=0 border=0>
1036   <tr>
1037     <td>
1038       &nbsp;
1039     </td>
1040     <td>
1041
1042 <p>
1043 True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. 
1044 <p>
1045
1046 <p>
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>.
1048 <p>
1049 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1050   </tr>
1051 </table>
1052 <a name="o9" doxytag="userrec::flood"></a><p>
1053 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1054   <tr>
1055     <td class="mdRow">
1056       <table cellpadding="0" cellspacing="0" border="0">
1057         <tr>
1058           <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o9">userrec::flood</a>
1059       </table>
1060     </td>
1061   </tr>
1062 </table>
1063 <table cellspacing=5 cellpadding=0 border=0>
1064   <tr>
1065     <td>
1066       &nbsp;
1067     </td>
1068     <td>
1069
1070 <p>
1071 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. 
1072 <p>
1073
1074 <p>
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>.
1076 <p>
1077 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1078   </tr>
1079 </table>
1080 <a name="o3" doxytag="userrec::fullname"></a><p>
1081 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1082   <tr>
1083     <td class="mdRow">
1084       <table cellpadding="0" cellspacing="0" border="0">
1085         <tr>
1086           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o3">userrec::fullname</a>[128]
1087       </table>
1088     </td>
1089   </tr>
1090 </table>
1091 <table cellspacing=5 cellpadding=0 border=0>
1092   <tr>
1093     <td>
1094       &nbsp;
1095     </td>
1096     <td>
1097
1098 <p>
1099 The users full name. 
1100 <p>
1101
1102 <p>
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>.
1104 <p>
1105 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1106   </tr>
1107 </table>
1108 <a name="o1" doxytag="userrec::ident"></a><p>
1109 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1110   <tr>
1111     <td class="mdRow">
1112       <table cellpadding="0" cellspacing="0" border="0">
1113         <tr>
1114           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o1">userrec::ident</a>[16]
1115       </table>
1116     </td>
1117   </tr>
1118 </table>
1119 <table cellspacing=5 cellpadding=0 border=0>
1120   <tr>
1121     <td>
1122       &nbsp;
1123     </td>
1124     <td>
1125
1126 <p>
1127 The users ident reply. 
1128 <p>
1129
1130 <p>
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>.
1132 <p>
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>
1134   </tr>
1135 </table>
1136 <a name="r0" doxytag="userrec::invites"></a><p>
1137 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1138   <tr>
1139     <td class="mdRow">
1140       <table cellpadding="0" cellspacing="0" border="0">
1141         <tr>
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>
1143       </table>
1144     </td>
1145   </tr>
1146 </table>
1147 <table cellspacing=5 cellpadding=0 border=0>
1148   <tr>
1149     <td>
1150       &nbsp;
1151     </td>
1152     <td>
1153
1154 <p>
1155 A list of channels the user has a pending invite to. 
1156 <p>
1157
1158 <p>
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>.
1160 <p>
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>
1162   </tr>
1163 </table>
1164 <a name="o17" doxytag="userrec::lines_in"></a><p>
1165 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1166   <tr>
1167     <td class="mdRow">
1168       <table cellpadding="0" cellspacing="0" border="0">
1169         <tr>
1170           <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o17">userrec::lines_in</a>
1171       </table>
1172     </td>
1173   </tr>
1174 </table>
1175 <table cellspacing=5 cellpadding=0 border=0>
1176   <tr>
1177     <td>
1178       &nbsp;
1179     </td>
1180     <td>
1181
1182 <p>
1183 Flood counters. 
1184 <p>
1185
1186 <p>
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>.
1188 <p>
1189 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1190   </tr>
1191 </table>
1192 <a name="o4" doxytag="userrec::modes"></a><p>
1193 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1194   <tr>
1195     <td class="mdRow">
1196       <table cellpadding="0" cellspacing="0" border="0">
1197         <tr>
1198           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o4">userrec::modes</a>[MAXBUF]
1199       </table>
1200     </td>
1201   </tr>
1202 </table>
1203 <table cellspacing=5 cellpadding=0 border=0>
1204   <tr>
1205     <td>
1206       &nbsp;
1207     </td>
1208     <td>
1209
1210 <p>
1211 The user's mode string. 
1212 <p>
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.
1214 <p>
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>.
1216 <p>
1217 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1218   </tr>
1219 </table>
1220 <a name="o0" doxytag="userrec::nick"></a><p>
1221 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1222   <tr>
1223     <td class="mdRow">
1224       <table cellpadding="0" cellspacing="0" border="0">
1225         <tr>
1226           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o0">userrec::nick</a>[NICKMAX]
1227       </table>
1228     </td>
1229   </tr>
1230 </table>
1231 <table cellspacing=5 cellpadding=0 border=0>
1232   <tr>
1233     <td>
1234       &nbsp;
1235     </td>
1236     <td>
1237
1238 <p>
1239 The users nickname. 
1240 <p>
1241 An invalid nickname indicates an unregistered connection prior to the NICK command.
1242 <p>
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>.
1244 <p>
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>
1246   </tr>
1247 </table>
1248 <a name="o11" doxytag="userrec::oper"></a><p>
1249 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1250   <tr>
1251     <td class="mdRow">
1252       <table cellpadding="0" cellspacing="0" border="0">
1253         <tr>
1254           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o11">userrec::oper</a>[NICKMAX]
1255       </table>
1256     </td>
1257   </tr>
1258 </table>
1259 <table cellspacing=5 cellpadding=0 border=0>
1260   <tr>
1261     <td>
1262       &nbsp;
1263     </td>
1264     <td>
1265
1266 <p>
1267 The oper type they logged in as, if they are an oper. 
1268 <p>
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.
1270 <p>
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>.
1272 <p>
1273 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1274   </tr>
1275 </table>
1276 <a name="o14" doxytag="userrec::password"></a><p>
1277 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1278   <tr>
1279     <td class="mdRow">
1280       <table cellpadding="0" cellspacing="0" border="0">
1281         <tr>
1282           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o14">userrec::password</a>[MAXBUF]
1283       </table>
1284     </td>
1285   </tr>
1286 </table>
1287 <table cellspacing=5 cellpadding=0 border=0>
1288   <tr>
1289     <td>
1290       &nbsp;
1291     </td>
1292     <td>
1293
1294 <p>
1295 Password specified by the user when they registered. 
1296 <p>
1297 This is stored even if the  block doesnt need a password, so that modules may check it.
1298 <p>
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>
1300   </tr>
1301 </table>
1302 <a name="o13" doxytag="userrec::pingmax"></a><p>
1303 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1304   <tr>
1305     <td class="mdRow">
1306       <table cellpadding="0" cellspacing="0" border="0">
1307         <tr>
1308           <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classuserrec.html#o13">userrec::pingmax</a>
1309       </table>
1310     </td>
1311   </tr>
1312 </table>
1313 <table cellspacing=5 cellpadding=0 border=0>
1314   <tr>
1315     <td>
1316       &nbsp;
1317     </td>
1318     <td>
1319
1320 <p>
1321 Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag. 
1322 <p>
1323
1324 <p>
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>
1326   </tr>
1327 </table>
1328 <a name="o15" doxytag="userrec::recvq"></a><p>
1329 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1330   <tr>
1331     <td class="mdRow">
1332       <table cellpadding="0" cellspacing="0" border="0">
1333         <tr>
1334           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o15">userrec::recvq</a>
1335       </table>
1336     </td>
1337   </tr>
1338 </table>
1339 <table cellspacing=5 cellpadding=0 border=0>
1340   <tr>
1341     <td>
1342       &nbsp;
1343     </td>
1344     <td>
1345
1346 <p>
1347 User's receive queue. 
1348 <p>
1349 Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
1350 <p>
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>.
1352 <p>
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>
1354   </tr>
1355 </table>
1356 <a name="o22" doxytag="userrec::recvqmax"></a><p>
1357 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1358   <tr>
1359     <td class="mdRow">
1360       <table cellpadding="0" cellspacing="0" border="0">
1361         <tr>
1362           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o22">userrec::recvqmax</a>
1363       </table>
1364     </td>
1365   </tr>
1366 </table>
1367 <table cellspacing=5 cellpadding=0 border=0>
1368   <tr>
1369     <td>
1370       &nbsp;
1371     </td>
1372     <td>
1373
1374 <p>
1375 Maximum size this user's recvq can become. 
1376 <p>
1377
1378 <p>
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>.
1380 <p>
1381 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>.    </td>
1382   </tr>
1383 </table>
1384 <a name="o18" doxytag="userrec::reset_due"></a><p>
1385 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1386   <tr>
1387     <td class="mdRow">
1388       <table cellpadding="0" cellspacing="0" border="0">
1389         <tr>
1390           <td class="md" nowrap valign="top"> time_t <a class="el" href="classuserrec.html#o18">userrec::reset_due</a>
1391       </table>
1392     </td>
1393   </tr>
1394 </table>
1395 <table cellspacing=5 cellpadding=0 border=0>
1396   <tr>
1397     <td>
1398       &nbsp;
1399     </td>
1400     <td>
1401
1402 <p>
1403
1404 <p>
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>.
1406 <p>
1407 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1408   </tr>
1409 </table>
1410 <a name="o8" doxytag="userrec::result"></a><p>
1411 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1412   <tr>
1413     <td class="mdRow">
1414       <table cellpadding="0" cellspacing="0" border="0">
1415         <tr>
1416           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o8">userrec::result</a>[256]
1417       </table>
1418     </td>
1419   </tr>
1420 </table>
1421 <table cellspacing=5 cellpadding=0 border=0>
1422   <tr>
1423     <td>
1424       &nbsp;
1425     </td>
1426     <td>
1427
1428 <p>
1429 Stores the result of the last GetFullHost or GetRealHost call. 
1430 <p>
1431 You may use this to increase the speed of use of this class.
1432 <p>
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>.
1434 <p>
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>
1436   </tr>
1437 </table>
1438 <a name="o16" doxytag="userrec::sendq"></a><p>
1439 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1440   <tr>
1441     <td class="mdRow">
1442       <table cellpadding="0" cellspacing="0" border="0">
1443         <tr>
1444           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o16">userrec::sendq</a>
1445       </table>
1446     </td>
1447   </tr>
1448 </table>
1449 <table cellspacing=5 cellpadding=0 border=0>
1450   <tr>
1451     <td>
1452       &nbsp;
1453     </td>
1454     <td>
1455
1456 <p>
1457 User's send queue. 
1458 <p>
1459 Lines waiting to be sent are stored here until their buffer is flushed.
1460 <p>
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>.
1462 <p>
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>
1464   </tr>
1465 </table>
1466 <a name="o21" doxytag="userrec::sendqmax"></a><p>
1467 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1468   <tr>
1469     <td class="mdRow">
1470       <table cellpadding="0" cellspacing="0" border="0">
1471         <tr>
1472           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o21">userrec::sendqmax</a>
1473       </table>
1474     </td>
1475   </tr>
1476 </table>
1477 <table cellspacing=5 cellpadding=0 border=0>
1478   <tr>
1479     <td>
1480       &nbsp;
1481     </td>
1482     <td>
1483
1484 <p>
1485 Maximum size this user's sendq can become. 
1486 <p>
1487
1488 <p>
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>.
1490 <p>
1491 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>.    </td>
1492   </tr>
1493 </table>
1494 <a name="o6" doxytag="userrec::server"></a><p>
1495 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1496   <tr>
1497     <td class="mdRow">
1498       <table cellpadding="0" cellspacing="0" border="0">
1499         <tr>
1500           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o6">userrec::server</a>[256]
1501       </table>
1502     </td>
1503   </tr>
1504 </table>
1505 <table cellspacing=5 cellpadding=0 border=0>
1506   <tr>
1507     <td>
1508       &nbsp;
1509     </td>
1510     <td>
1511
1512 <p>
1513 The server the user is connected to. 
1514 <p>
1515
1516 <p>
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>.
1518 <p>
1519 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1520   </tr>
1521 </table>
1522 <a name="o19" doxytag="userrec::threshold"></a><p>
1523 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1524   <tr>
1525     <td class="mdRow">
1526       <table cellpadding="0" cellspacing="0" border="0">
1527         <tr>
1528           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o19">userrec::threshold</a>
1529       </table>
1530     </td>
1531   </tr>
1532 </table>
1533 <table cellspacing=5 cellpadding=0 border=0>
1534   <tr>
1535     <td>
1536       &nbsp;
1537     </td>
1538     <td>
1539
1540 <p>
1541
1542 <p>
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>
1544   </tr>
1545 </table>
1546 <a name="o10" doxytag="userrec::timeout"></a><p>
1547 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1548   <tr>
1549     <td class="mdRow">
1550       <table cellpadding="0" cellspacing="0" border="0">
1551         <tr>
1552           <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classuserrec.html#o10">userrec::timeout</a>
1553       </table>
1554     </td>
1555   </tr>
1556 </table>
1557 <table cellspacing=5 cellpadding=0 border=0>
1558   <tr>
1559     <td>
1560       &nbsp;
1561     </td>
1562     <td>
1563
1564 <p>
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. 
1566 <p>
1567
1568 <p>
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>.
1570 <p>
1571 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1572   </tr>
1573 </table>
1574 <a name="o20" doxytag="userrec::WriteError"></a><p>
1575 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1576   <tr>
1577     <td class="mdRow">
1578       <table cellpadding="0" cellspacing="0" border="0">
1579         <tr>
1580           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o20">userrec::WriteError</a>
1581       </table>
1582     </td>
1583   </tr>
1584 </table>
1585 <table cellspacing=5 cellpadding=0 border=0>
1586   <tr>
1587     <td>
1588       &nbsp;
1589     </td>
1590     <td>
1591
1592 <p>
1593
1594 <p>
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>.
1596 <p>
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>
1598   </tr>
1599 </table>
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>
1606 </body>
1607 </html>