1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 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.doxygen.css" rel="stylesheet" type="text/css">
6 <!-- Generated by Doxygen 1.4.4-20050815 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
8 <h1>userrec Class Reference</h1><!-- doxytag: class="userrec" --><!-- doxytag: inherits="connection" -->Holds all information about a user This class stores all information about a user connected to the irc server.
9 <a href="#_details">More...</a>
11 <code>#include <<a class="el" href="users_8h-source.html">users.h</a>></code>
13 Inheritance diagram for userrec:<p><center><img src="classuserrec__inherit__graph.gif" border="0" usemap="#userrec__inherit__map" alt="Inheritance graph"></center>
14 <map name="userrec__inherit__map">
15 <area href="classconnection.html" shape="rect" coords="7,156,92,183" alt="">
16 <area href="classExtensible.html" shape="rect" coords="8,81,91,108" alt="">
17 <area href="classclassbase.html" shape="rect" coords="10,7,90,33" alt="">
19 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for userrec:<p><center><img src="classuserrec__coll__graph.gif" border="0" usemap="#userrec__coll__map" alt="Collaboration graph"></center>
20 <map name="userrec__coll__map">
21 <area href="classconnection.html" shape="rect" coords="199,429,284,456" alt="">
22 <area href="classucrec.html" shape="rect" coords="215,7,268,33" alt="">
24 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classuserrec-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
26 <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
27 <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#userrec_28_29">userrec</a> ()</td></tr>
29 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#_7Euserrec_28_29">~userrec</a> ()</td></tr>
31 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetFullHost_28_29">GetFullHost</a> ()</td></tr>
33 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. <a href="#GetFullHost_28_29"></a><br></td></tr>
34 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a> ()</td></tr>
36 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. <a href="#GetFullRealHost_28_29"></a><br></td></tr>
37 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a> (char *channel)</td></tr>
39 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if a user is invited to a channel. <a href="#IsInvited_28char_20_2Achannel_29"></a><br></td></tr>
40 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a> (char *channel)</td></tr>
42 <tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). <a href="#InviteTo_28char_20_2Achannel_29"></a><br></td></tr>
43 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a> (char *channel)</td></tr>
45 <tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a channel from a users invite list. <a href="#RemoveInvite_28char_20_2Achannel_29"></a><br></td></tr>
46 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a> (char *command)</td></tr>
48 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. <a href="#HasPermission_28char_20_2Acommand_29"></a><br></td></tr>
49 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a> (void *buffer, size_t size)</td></tr>
51 <tr><td class="mdescLeft"> </td><td class="mdescRight">Calls read() to read some data for this user using their fd. <a href="#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29"></a><br></td></tr>
52 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">AddBuffer</a> (<a class="el" href="namespaceirc.html#string">std::string</a> a)</td></tr>
54 <tr><td class="mdescLeft"> </td><td class="mdescRight">This method adds data to the buffer of the user. <a href="#AddBuffer_28std_3A_3Astring_20a_29"></a><br></td></tr>
55 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady</a> ()</td></tr>
57 <tr><td class="mdescLeft"> </td><td class="mdescRight">This method returns true if the buffer contains at least one carriage return character (e.g. <a href="#BufferIsReady_28_29"></a><br></td></tr>
58 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a> ()</td></tr>
60 <tr><td class="mdescLeft"> </td><td class="mdescRight">This function clears the entire buffer by setting it to an empty string. <a href="#ClearBuffer_28_29"></a><br></td></tr>
61 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetBuffer_28_29">GetBuffer</a> ()</td></tr>
63 <tr><td class="mdescLeft"> </td><td class="mdescRight">This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string. <a href="#GetBuffer_28_29"></a><br></td></tr>
64 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a> (<a class="el" href="namespaceirc.html#string">std::string</a> error)</td></tr>
66 <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the write error for a connection. <a href="#SetWriteError_28std_3A_3Astring_20error_29"></a><br></td></tr>
67 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a> ()</td></tr>
69 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the write error which last occured on this connection or an empty string if none occured. <a href="#GetWriteError_28_29"></a><br></td></tr>
70 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">AddWriteBuf</a> (<a class="el" href="namespaceirc.html#string">std::string</a> data)</td></tr>
72 <tr><td class="mdescLeft"> </td><td class="mdescRight">Adds to the user's write buffer. <a href="#AddWriteBuf_28std_3A_3Astring_20data_29"></a><br></td></tr>
73 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a> ()</td></tr>
75 <tr><td class="mdescLeft"> </td><td class="mdescRight">Flushes as much of the user's buffer to the file descriptor as possible. <a href="#FlushWriteBuf_28_29"></a><br></td></tr>
76 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a> ()</td></tr>
78 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the list of channels this user has been invited to but has not yet joined. <a href="#GetInviteList_28_29"></a><br></td></tr>
79 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a> ()</td></tr>
81 <tr><td class="mdescLeft"> </td><td class="mdescRight">Shuts down and closes the user's socket. <a href="#CloseSocket_28_29"></a><br></td></tr>
82 <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
83 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a> [NICKMAX]</td></tr>
85 <tr><td class="mdescLeft"> </td><td class="mdescRight">The users nickname. <a href="#nick_5BNICKMAX_5D"></a><br></td></tr>
86 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a> [IDENTMAX+2]</td></tr>
88 <tr><td class="mdescLeft"> </td><td class="mdescRight">The users ident reply. <a href="#ident_5BIDENTMAX_2B_32_5D"></a><br></td></tr>
89 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a> [160]</td></tr>
91 <tr><td class="mdescLeft"> </td><td class="mdescRight">The host displayed to non-opers (used for cloaking etc). <a href="#dhost_5B_31_36_30_5D"></a><br></td></tr>
92 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a> [MAXGECOS+1]</td></tr>
94 <tr><td class="mdescLeft"> </td><td class="mdescRight">The users full name. <a href="#fullname_5BMAXGECOS_2B_31_5D"></a><br></td></tr>
95 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#modes_5B_35_34_5D">modes</a> [54]</td></tr>
97 <tr><td class="mdescLeft"> </td><td class="mdescRight">The user's mode string. <a href="#modes_5B_35_34_5D"></a><br></td></tr>
98 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classucrec.html">ucrec</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a> [MAXCHANS]</td></tr>
100 <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#server">server</a></td></tr>
102 <tr><td class="mdescLeft"> </td><td class="mdescRight">The server the user is connected to. <a href="#server"></a><br></td></tr>
103 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a> [MAXAWAY+1]</td></tr>
105 <tr><td class="mdescLeft"> </td><td class="mdescRight">The user's away message. <a href="#awaymsg_5BMAXAWAY_2B_31_5D"></a><br></td></tr>
106 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#flood">flood</a></td></tr>
108 <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. <a href="#flood"></a><br></td></tr>
109 <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#timeout">timeout</a></td></tr>
111 <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected. <a href="#timeout"></a><br></td></tr>
112 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a> [NICKMAX]</td></tr>
114 <tr><td class="mdescLeft"> </td><td class="mdescRight">The oper type they logged in as, if they are an oper. <a href="#oper_5BNICKMAX_5D"></a><br></td></tr>
115 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#dns_5Fdone">dns_done</a></td></tr>
117 <tr><td class="mdescLeft"> </td><td class="mdescRight">True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. <a href="#dns_5Fdone"></a><br></td></tr>
118 <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#pingmax">pingmax</a></td></tr>
120 <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of seconds between PINGs for this user (set from <connect:allow> tag. <a href="#pingmax"></a><br></td></tr>
121 <tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#password_5BMAXBUF_5D">password</a> [MAXBUF]</td></tr>
123 <tr><td class="mdescLeft"> </td><td class="mdescRight">Password specified by the user when they registered. <a href="#password_5BMAXBUF_5D"></a><br></td></tr>
124 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#recvq">recvq</a></td></tr>
126 <tr><td class="mdescLeft"> </td><td class="mdescRight">User's receive queue. <a href="#recvq"></a><br></td></tr>
127 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#sendq">sendq</a></td></tr>
129 <tr><td class="mdescLeft"> </td><td class="mdescRight">User's send queue. <a href="#sendq"></a><br></td></tr>
130 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#lines_5Fin">lines_in</a></td></tr>
132 <tr><td class="mdescLeft"> </td><td class="mdescRight">Flood counters. <a href="#lines_5Fin"></a><br></td></tr>
133 <tr><td class="memItemLeft" nowrap align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#reset_5Fdue">reset_due</a></td></tr>
135 <tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#threshold">threshold</a></td></tr>
137 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#WriteError">WriteError</a></td></tr>
139 <tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#sendqmax">sendqmax</a></td></tr>
141 <tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size this user's sendq can become. <a href="#sendqmax"></a><br></td></tr>
142 <tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#recvqmax">recvqmax</a></td></tr>
144 <tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size this user's recvq can become. <a href="#recvqmax"></a><br></td></tr>
145 <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
146 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#invites">invites</a></td></tr>
148 <tr><td class="mdescLeft"> </td><td class="mdescRight">A list of channels the user has a pending invite to. <a href="#invites"></a><br></td></tr>
150 <hr><a name="_details"></a><h2>Detailed Description</h2>
151 Holds all information about a user This class stores all information about a user connected to the irc server.
153 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.
157 Definition at line <a class="el" href="users_8h-source.html#l00108">108</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
158 <a class="anchor" name="userrec_28_29"></a><!-- doxytag: member="userrec::userrec" ref="userrec_28_29" args="()" --><p>
159 <table class="mdTable" cellpadding="2" cellspacing="0">
162 <table cellpadding="0" cellspacing="0" border="0">
164 <td class="md" nowrap valign="top">userrec::userrec </td>
165 <td class="md" valign="top">( </td>
166 <td class="mdname1" valign="top" nowrap> </td>
167 <td class="md" valign="top"> ) </td>
168 <td class="md" nowrap></td>
174 <table cellspacing="5" cellpadding="0" border="0">
184 Definition at line <a class="el" href="users_8cpp-source.html#l00033">33</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
186 References <a class="el" href="users_8h-source.html#l00155">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00054">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00252">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00146">chans</a>, <a class="el" href="connection_8h-source.html#l00062">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00131">dhost</a>, <a class="el" href="users_8h-source.html#l00178">dns_done</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8h-source.html#l00161">flood</a>, <a class="el" href="users_8h-source.html#l00135">fullname</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00126">ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00114">invites</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00084">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00203">lines_in</a>, <a class="el" href="users_8h-source.html#l00144">modes</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, <a class="el" href="connection_8h-source.html#l00096">connection::nping</a>, <a class="el" href="users_8h-source.html#l00174">oper</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="users_8h-source.html#l00194">recvq</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="users_8h-source.html#l00204">reset_due</a>, <a class="el" href="users_8h-source.html#l00199">sendq</a>, <a class="el" href="users_8h-source.html#l00150">server</a>, <a class="el" href="channels_8cpp.html#ServerName_5BMAXBUF_5D">ServerName</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="users_8h-source.html#l00167">timeout</a>, and <a class="el" href="channels_8h-source.html#l00247">ucrec::uc_modes</a>.<div class="fragment"><pre class="fragment"><a name="l00034"></a>00034 {
187 <a name="l00035"></a>00035 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
188 <a name="l00036"></a>00036 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
189 <a name="l00037"></a>00037 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
190 <a name="l00038"></a>00038 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
191 <a name="l00039"></a>00039 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
192 <a name="l00040"></a>00040 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
193 <a name="l00041"></a>00041 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
194 <a name="l00042"></a>00042 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
195 <a name="l00043"></a>00043 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
196 <a name="l00044"></a>00044 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)FindServerNamePtr(ServerName);
197 <a name="l00045"></a>00045 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
198 <a name="l00046"></a>00046 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
199 <a name="l00047"></a>00047 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
200 <a name="l00048"></a>00048 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
201 <a name="l00049"></a>00049 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
202 <a name="l00050"></a>00050 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
203 <a name="l00051"></a>00051 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
204 <a name="l00052"></a>00052 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
205 <a name="l00053"></a>00053 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
206 <a name="l00054"></a>00054 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
207 <a name="l00055"></a>00055 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < MAXCHANS; i++)
208 <a name="l00056"></a>00056 {
209 <a name="l00057"></a>00057 this-><a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#channel">channel</a> = NULL;
210 <a name="l00058"></a>00058 this-><a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
211 <a name="l00059"></a>00059 }
212 <a name="l00060"></a>00060 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
213 <a name="l00061"></a>00061 }
219 <a class="anchor" name="_7Euserrec_28_29"></a><!-- doxytag: member="userrec::~userrec" ref="_7Euserrec_28_29" args="()" --><p>
220 <table class="mdTable" cellpadding="2" cellspacing="0">
223 <table cellpadding="0" cellspacing="0" border="0">
225 <td class="md" nowrap valign="top">virtual userrec::~userrec </td>
226 <td class="md" valign="top">( </td>
227 <td class="mdname1" valign="top" nowrap> </td>
228 <td class="md" valign="top"> ) </td>
229 <td class="md" nowrap><code> [inline, virtual]</code></td>
235 <table cellspacing="5" cellpadding="0" border="0">
245 Definition at line <a class="el" href="users_8h-source.html#l00221">221</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 { }
251 <hr><h2>Member Function Documentation</h2>
252 <a class="anchor" name="AddBuffer_28std_3A_3Astring_20a_29"></a><!-- doxytag: member="userrec::AddBuffer" ref="AddBuffer_28std_3A_3Astring_20a_29" args="(std::string a)" --><p>
253 <table class="mdTable" cellpadding="2" cellspacing="0">
256 <table cellpadding="0" cellspacing="0" border="0">
258 <td class="md" nowrap valign="top">bool userrec::AddBuffer </td>
259 <td class="md" valign="top">( </td>
260 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
261 <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
262 <td class="md" valign="top"> ) </td>
263 <td class="md" nowrap></td>
269 <table cellspacing="5" cellpadding="0" border="0">
277 This method adds data to the buffer of the user.
279 The buffer can grow to any size within limits of the available memory, managed by the size of a <a class="el" href="namespaceirc.html#string">std::string</a>, 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.
281 Definition at line <a class="el" href="users_8cpp-source.html#l00194">194</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
283 References <a class="el" href="users_8h-source.html#l00194">recvq</a>, <a class="el" href="users_8h-source.html#l00217">recvqmax</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00195"></a>00195 {
284 <a name="l00196"></a>00196 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
285 <a name="l00197"></a>00197 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < a.length(); i++)
286 <a name="l00198"></a>00198 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) && (a[i] != <span class="charliteral">'\0'</span>) && (a[i] != 7))
287 <a name="l00199"></a>00199 b = b + a[i];
288 <a name="l00200"></a>00200 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
289 <a name="l00201"></a>00201 stream << b;
290 <a name="l00202"></a>00202 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
291 <a name="l00203"></a>00203 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
292 <a name="l00204"></a>00204 <span class="comment">// count the size of the first line in the buffer.</span>
293 <a name="l00205"></a>00205 <span class="keywordflow">while</span> (i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
294 <a name="l00206"></a>00206 {
295 <a name="l00207"></a>00207 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
296 <a name="l00208"></a>00208 <span class="keywordflow">break</span>;
297 <a name="l00209"></a>00209 }
298 <a name="l00210"></a>00210 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() > (unsigned)this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
299 <a name="l00211"></a>00211 {
300 <a name="l00212"></a>00212 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
301 <a name="l00213"></a>00213 WriteOpers(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
302 <a name="l00214"></a>00214 }
303 <a name="l00215"></a>00215 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
304 <a name="l00216"></a>00216 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
305 <a name="l00217"></a>00217 <span class="keywordflow">return</span> (i < 600);
306 <a name="l00218"></a>00218 }
312 <a class="anchor" name="AddWriteBuf_28std_3A_3Astring_20data_29"></a><!-- doxytag: member="userrec::AddWriteBuf" ref="AddWriteBuf_28std_3A_3Astring_20data_29" args="(std::string data)" --><p>
313 <table class="mdTable" cellpadding="2" cellspacing="0">
316 <table cellpadding="0" cellspacing="0" border="0">
318 <td class="md" nowrap valign="top">void userrec::AddWriteBuf </td>
319 <td class="md" valign="top">( </td>
320 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
321 <td class="mdname1" valign="top" nowrap> <em>data</em> </td>
322 <td class="md" valign="top"> ) </td>
323 <td class="md" nowrap></td>
329 <table cellspacing="5" cellpadding="0" border="0">
337 Adds to the user's write buffer.
339 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#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError()</a> will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.
341 Definition at line <a class="el" href="users_8cpp-source.html#l00250">250</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
343 References <a class="el" href="users_8h-source.html#l00199">sendq</a>, <a class="el" href="users_8h-source.html#l00213">sendqmax</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00251"></a>00251 {
344 <a name="l00252"></a>00252 <span class="keywordflow">if</span> (this->GetWriteError() != <span class="stringliteral">""</span>)
345 <a name="l00253"></a>00253 <span class="keywordflow">return</span>;
346 <a name="l00254"></a>00254 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() > (unsigned)this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
347 <a name="l00255"></a>00255 {
348 <a name="l00256"></a>00256 WriteOpers(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
349 <a name="l00257"></a>00257 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
350 <a name="l00258"></a>00258 <span class="keywordflow">return</span>;
351 <a name="l00259"></a>00259 }
352 <a name="l00260"></a>00260 std::stringstream stream;
353 <a name="l00261"></a>00261 stream << <a class="code" href="classuserrec.html#sendq">sendq</a> << data;
354 <a name="l00262"></a>00262 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
355 <a name="l00263"></a>00263 }
361 <a class="anchor" name="BufferIsReady_28_29"></a><!-- doxytag: member="userrec::BufferIsReady" ref="BufferIsReady_28_29" args="()" --><p>
362 <table class="mdTable" cellpadding="2" cellspacing="0">
365 <table cellpadding="0" cellspacing="0" border="0">
367 <td class="md" nowrap valign="top">bool userrec::BufferIsReady </td>
368 <td class="md" valign="top">( </td>
369 <td class="mdname1" valign="top" nowrap> </td>
370 <td class="md" valign="top"> ) </td>
371 <td class="md" nowrap></td>
377 <table cellspacing="5" cellpadding="0" border="0">
385 This method returns true if the buffer contains at least one carriage return character (e.g.
387 one complete line may be read)
389 Definition at line <a class="el" href="users_8cpp-source.html#l00220">220</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
391 References <a class="el" href="users_8h-source.html#l00194">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 {
392 <a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
393 <a name="l00223"></a>00223 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
394 <a name="l00224"></a>00224 <span class="keywordflow">return</span> <span class="keyword">true</span>;
395 <a name="l00225"></a>00225 <span class="keywordflow">return</span> <span class="keyword">false</span>;
396 <a name="l00226"></a>00226 }
402 <a class="anchor" name="ClearBuffer_28_29"></a><!-- doxytag: member="userrec::ClearBuffer" ref="ClearBuffer_28_29" args="()" --><p>
403 <table class="mdTable" cellpadding="2" cellspacing="0">
406 <table cellpadding="0" cellspacing="0" border="0">
408 <td class="md" nowrap valign="top">void userrec::ClearBuffer </td>
409 <td class="md" valign="top">( </td>
410 <td class="mdname1" valign="top" nowrap> </td>
411 <td class="md" valign="top"> ) </td>
412 <td class="md" nowrap></td>
418 <table cellspacing="5" cellpadding="0" border="0">
426 This function clears the entire buffer by setting it to an empty string.
430 Definition at line <a class="el" href="users_8cpp-source.html#l00228">228</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
432 References <a class="el" href="users_8h-source.html#l00194">recvq</a>.
434 Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00639">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 {
435 <a name="l00230"></a>00230 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
436 <a name="l00231"></a>00231 }
442 <a class="anchor" name="CloseSocket_28_29"></a><!-- doxytag: member="userrec::CloseSocket" ref="CloseSocket_28_29" args="()" --><p>
443 <table class="mdTable" cellpadding="2" cellspacing="0">
446 <table cellpadding="0" cellspacing="0" border="0">
448 <td class="md" nowrap valign="top">void userrec::CloseSocket </td>
449 <td class="md" valign="top">( </td>
450 <td class="mdname1" valign="top" nowrap> </td>
451 <td class="md" valign="top"> ) </td>
452 <td class="md" nowrap></td>
458 <table cellspacing="5" cellpadding="0" border="0">
466 Shuts down and closes the user's socket.
470 Definition at line <a class="el" href="users_8cpp-source.html#l00063">63</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00064"></a>00064 {
471 <a name="l00065"></a>00065 shutdown(this->fd,2);
472 <a name="l00066"></a>00066 close(this->fd);
473 <a name="l00067"></a>00067 }
479 <a class="anchor" name="FlushWriteBuf_28_29"></a><!-- doxytag: member="userrec::FlushWriteBuf" ref="FlushWriteBuf_28_29" args="()" --><p>
480 <table class="mdTable" cellpadding="2" cellspacing="0">
483 <table cellpadding="0" cellspacing="0" border="0">
485 <td class="md" nowrap valign="top">void userrec::FlushWriteBuf </td>
486 <td class="md" valign="top">( </td>
487 <td class="mdname1" valign="top" nowrap> </td>
488 <td class="md" valign="top"> ) </td>
489 <td class="md" nowrap></td>
495 <table cellspacing="5" cellpadding="0" border="0">
503 Flushes as much of the user's buffer to the file descriptor as possible.
505 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.
507 Definition at line <a class="el" href="users_8cpp-source.html#l00266">266</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
509 References <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00199">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 {
510 <a name="l00268"></a>00268 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
511 <a name="l00269"></a>00269 {
512 <a name="l00270"></a>00270 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-><a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
513 <a name="l00271"></a>00271 <span class="keywordtype">int</span> n_sent = write(this->fd,tb,this->sendq.length());
514 <a name="l00272"></a>00272 <span class="keywordflow">if</span> (n_sent == -1)
515 <a name="l00273"></a>00273 {
516 <a name="l00274"></a>00274 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
517 <a name="l00275"></a>00275 }
518 <a name="l00276"></a>00276 <span class="keywordflow">else</span>
519 <a name="l00277"></a>00277 {
520 <a name="l00278"></a>00278 <span class="comment">// advance the queue</span>
521 <a name="l00279"></a>00279 tb += n_sent;
522 <a name="l00280"></a>00280 this-><a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
523 <a name="l00281"></a>00281 <span class="comment">// update the user's stats counters</span>
524 <a name="l00282"></a>00282 this-><a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
525 <a name="l00283"></a>00283 this-><a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
526 <a name="l00284"></a>00284 }
527 <a name="l00285"></a>00285 }
528 <a name="l00286"></a>00286 }
534 <a class="anchor" name="GetBuffer_28_29"></a><!-- doxytag: member="userrec::GetBuffer" ref="GetBuffer_28_29" args="()" --><p>
535 <table class="mdTable" cellpadding="2" cellspacing="0">
538 <table cellpadding="0" cellspacing="0" border="0">
540 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> userrec::GetBuffer </td>
541 <td class="md" valign="top">( </td>
542 <td class="mdname1" valign="top" nowrap> </td>
543 <td class="md" valign="top"> ) </td>
544 <td class="md" nowrap></td>
550 <table cellspacing="5" cellpadding="0" border="0">
558 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.
560 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#BufferIsReady_28_29">BufferIsReady()</a> to check if it is ok to read the buffer before calling <a class="el" href="classuserrec.html#GetBuffer_28_29">GetBuffer()</a>.
562 Definition at line <a class="el" href="users_8cpp-source.html#l00233">233</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
564 References <a class="el" href="users_8h-source.html#l00194">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 {
565 <a name="l00235"></a>00235 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
566 <a name="l00236"></a>00236 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
567 <a name="l00237"></a>00237 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
568 <a name="l00238"></a>00238 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
569 <a name="l00239"></a>00239 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) && (strlen(line)))
570 <a name="l00240"></a>00240 {
571 <a name="l00241"></a>00241 ret = ret + *line;
572 <a name="l00242"></a>00242 line++;
573 <a name="l00243"></a>00243 }
574 <a name="l00244"></a>00244 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
575 <a name="l00245"></a>00245 line++;
576 <a name="l00246"></a>00246 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
577 <a name="l00247"></a>00247 <span class="keywordflow">return</span> ret;
578 <a name="l00248"></a>00248 }
584 <a class="anchor" name="GetFullHost_28_29"></a><!-- doxytag: member="userrec::GetFullHost" ref="GetFullHost_28_29" args="()" --><p>
585 <table class="mdTable" cellpadding="2" cellspacing="0">
588 <table cellpadding="0" cellspacing="0" border="0">
590 <td class="md" nowrap valign="top">char * userrec::GetFullHost </td>
591 <td class="md" valign="top">( </td>
592 <td class="mdname1" valign="top" nowrap> </td>
593 <td class="md" valign="top"> ) </td>
594 <td class="md" nowrap><code> [virtual]</code></td>
600 <table cellspacing="5" cellpadding="0" border="0">
608 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.
612 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>.
614 References <a class="el" href="users_8h-source.html#l00131">dhost</a>, <a class="el" href="users_8h-source.html#l00126">ident</a>, and <a class="el" href="users_8h-source.html#l00121">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00070"></a>00070 {
615 <a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
616 <a name="l00072"></a>00072 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
617 <a name="l00073"></a>00073 <span class="keywordflow">return</span> result;
618 <a name="l00074"></a>00074 }
624 <a class="anchor" name="GetFullRealHost_28_29"></a><!-- doxytag: member="userrec::GetFullRealHost" ref="GetFullRealHost_28_29" args="()" --><p>
625 <table class="mdTable" cellpadding="2" cellspacing="0">
628 <table cellpadding="0" cellspacing="0" border="0">
630 <td class="md" nowrap valign="top">char * userrec::GetFullRealHost </td>
631 <td class="md" valign="top">( </td>
632 <td class="mdname1" valign="top" nowrap> </td>
633 <td class="md" valign="top"> ) </td>
634 <td class="md" nowrap><code> [virtual]</code></td>
640 <table cellspacing="5" cellpadding="0" border="0">
648 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.
650 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.
652 Definition at line <a class="el" href="users_8cpp-source.html#l00087">87</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
654 References <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00126">ident</a>, and <a class="el" href="users_8h-source.html#l00121">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00088"></a>00088 {
655 <a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
656 <a name="l00090"></a>00090 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
657 <a name="l00091"></a>00091 <span class="keywordflow">return</span> fresult;
658 <a name="l00092"></a>00092 }
664 <a class="anchor" name="GetInviteList_28_29"></a><!-- doxytag: member="userrec::GetInviteList" ref="GetInviteList_28_29" args="()" --><p>
665 <table class="mdTable" cellpadding="2" cellspacing="0">
668 <table cellpadding="0" cellspacing="0" border="0">
670 <td class="md" nowrap valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> * userrec::GetInviteList </td>
671 <td class="md" valign="top">( </td>
672 <td class="mdname1" valign="top" nowrap> </td>
673 <td class="md" valign="top"> ) </td>
674 <td class="md" nowrap></td>
680 <table cellspacing="5" cellpadding="0" border="0">
688 Returns the list of channels this user has been invited to but has not yet joined.
692 Definition at line <a class="el" href="users_8cpp-source.html#l00108">108</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
694 References <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00109"></a>00109 {
695 <a name="l00110"></a>00110 <span class="keywordflow">return</span> &<a class="code" href="classuserrec.html#invites">invites</a>;
696 <a name="l00111"></a>00111 }
702 <a class="anchor" name="GetWriteError_28_29"></a><!-- doxytag: member="userrec::GetWriteError" ref="GetWriteError_28_29" args="()" --><p>
703 <table class="mdTable" cellpadding="2" cellspacing="0">
706 <table cellpadding="0" cellspacing="0" border="0">
708 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> userrec::GetWriteError </td>
709 <td class="md" valign="top">( </td>
710 <td class="mdname1" valign="top" nowrap> </td>
711 <td class="md" valign="top"> ) </td>
712 <td class="md" nowrap></td>
718 <table cellspacing="5" cellpadding="0" border="0">
726 Returns the write error which last occured on this connection or an empty string if none occured.
730 Definition at line <a class="el" href="users_8cpp-source.html#l00296">296</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
732 References <a class="el" href="users_8h-source.html#l00209">WriteError</a>.<div class="fragment"><pre class="fragment"><a name="l00297"></a>00297 {
733 <a name="l00298"></a>00298 <span class="keywordflow">return</span> this-><a class="code" href="classuserrec.html#WriteError">WriteError</a>;
734 <a name="l00299"></a>00299 }
740 <a class="anchor" name="HasPermission_28char_20_2Acommand_29"></a><!-- doxytag: member="userrec::HasPermission" ref="HasPermission_28char_20_2Acommand_29" args="(char *command)" --><p>
741 <table class="mdTable" cellpadding="2" cellspacing="0">
744 <table cellpadding="0" cellspacing="0" border="0">
746 <td class="md" nowrap valign="top">bool userrec::HasPermission </td>
747 <td class="md" valign="top">( </td>
748 <td class="md" nowrap valign="top">char * </td>
749 <td class="mdname1" valign="top" nowrap> <em>command</em> </td>
750 <td class="md" valign="top"> ) </td>
751 <td class="md" nowrap></td>
757 <table cellspacing="5" cellpadding="0" border="0">
765 Returns true or false for if a user can execute a privilaged oper command.
767 This is done by looking up their oper type from <a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">userrec::oper</a>, then referencing this to their oper classes and checking the commands they can execute.
769 Definition at line <a class="el" href="users_8cpp-source.html#l00142">142</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
771 References <a class="el" href="channels_8cpp.html#config_5Ff">config_f</a>, and <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.<div class="fragment"><pre class="fragment"><a name="l00143"></a>00143 {
772 <a name="l00144"></a>00144 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
773 <a name="l00145"></a>00145 <span class="keywordtype">char</span>* mycmd;
774 <a name="l00146"></a>00146 <span class="keywordtype">char</span>* savept;
775 <a name="l00147"></a>00147 <span class="keywordtype">char</span>* savept2;
776 <a name="l00148"></a>00148
777 <a name="l00149"></a>00149 <span class="comment">// are they even an oper at all?</span>
778 <a name="l00150"></a>00150 <span class="keywordflow">if</span> (strchr(this->modes,<span class="charliteral">'o'</span>))
779 <a name="l00151"></a>00151 {
780 <a name="l00152"></a>00152 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: %s is an oper"</span>,this->nick);
781 <a name="l00153"></a>00153 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j < ConfValueEnum(<span class="stringliteral">"type"</span>,&config_f); j++)
782 <a name="l00154"></a>00154 {
783 <a name="l00155"></a>00155 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&config_f);
784 <a name="l00156"></a>00156 <span class="keywordflow">if</span> (!strcmp(TypeName,this->oper))
785 <a name="l00157"></a>00157 {
786 <a name="l00158"></a>00158 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: %s is an oper of type '%s'"</span>,this->nick,this->oper);
787 <a name="l00159"></a>00159 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&config_f);
788 <a name="l00160"></a>00160 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&savept);
789 <a name="l00161"></a>00161 <span class="keywordflow">while</span> (myclass)
790 <a name="l00162"></a>00162 {
791 <a name="l00163"></a>00163 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: checking classtype '%s'"</span>,myclass);
792 <a name="l00164"></a>00164 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k < ConfValueEnum(<span class="stringliteral">"class"</span>,&config_f); k++)
793 <a name="l00165"></a>00165 {
794 <a name="l00166"></a>00166 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&config_f);
795 <a name="l00167"></a>00167 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
796 <a name="l00168"></a>00168 {
797 <a name="l00169"></a>00169 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&config_f);
798 <a name="l00170"></a>00170 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: found class named %s with commands: '%s'"</span>,ClassName,CommandList);
799 <a name="l00171"></a>00171
800 <a name="l00172"></a>00172
801 <a name="l00173"></a>00173 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&savept2);
802 <a name="l00174"></a>00174 <span class="keywordflow">while</span> (mycmd)
803 <a name="l00175"></a>00175 {
804 <a name="l00176"></a>00176 <span class="keywordflow">if</span> (!strcasecmp(mycmd,command))
805 <a name="l00177"></a>00177 {
806 <a name="l00178"></a>00178 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** Command %s found, returning true"</span>,command);
807 <a name="l00179"></a>00179 <span class="keywordflow">return</span> <span class="keyword">true</span>;
808 <a name="l00180"></a>00180 }
809 <a name="l00181"></a>00181 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept2);
810 <a name="l00182"></a>00182 }
811 <a name="l00183"></a>00183 }
812 <a name="l00184"></a>00184 }
813 <a name="l00185"></a>00185 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept);
814 <a name="l00186"></a>00186 }
815 <a name="l00187"></a>00187 }
816 <a name="l00188"></a>00188 }
817 <a name="l00189"></a>00189 }
818 <a name="l00190"></a>00190 <span class="keywordflow">return</span> <span class="keyword">false</span>;
819 <a name="l00191"></a>00191 }
825 <a class="anchor" name="InviteTo_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::InviteTo" ref="InviteTo_28char_20_2Achannel_29" args="(char *channel)" --><p>
826 <table class="mdTable" cellpadding="2" cellspacing="0">
829 <table cellpadding="0" cellspacing="0" border="0">
831 <td class="md" nowrap valign="top">void userrec::InviteTo </td>
832 <td class="md" valign="top">( </td>
833 <td class="md" nowrap valign="top">char * </td>
834 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
835 <td class="md" valign="top"> ) </td>
836 <td class="md" nowrap><code> [virtual]</code></td>
842 <table cellspacing="5" cellpadding="0" border="0">
850 Adds a channel to a users invite list (invites them to a channel).
854 Definition at line <a class="el" href="users_8cpp-source.html#l00113">113</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
856 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>.<div class="fragment"><pre class="fragment"><a name="l00114"></a>00114 {
857 <a name="l00115"></a>00115 <a class="code" href="classInvited.html">Invited</a> i;
858 <a name="l00116"></a>00116 strlcpy(i.<a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>,channel,CHANMAX);
859 <a name="l00117"></a>00117 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
860 <a name="l00118"></a>00118 }
866 <a class="anchor" name="IsInvited_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::IsInvited" ref="IsInvited_28char_20_2Achannel_29" args="(char *channel)" --><p>
867 <table class="mdTable" cellpadding="2" cellspacing="0">
870 <table cellpadding="0" cellspacing="0" border="0">
872 <td class="md" nowrap valign="top">bool userrec::IsInvited </td>
873 <td class="md" valign="top">( </td>
874 <td class="md" nowrap valign="top">char * </td>
875 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
876 <td class="md" valign="top"> ) </td>
877 <td class="md" nowrap><code> [virtual]</code></td>
883 <table cellspacing="5" cellpadding="0" border="0">
891 Returns true if a user is invited to a channel.
895 Definition at line <a class="el" href="users_8cpp-source.html#l00094">94</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
897 References <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00095"></a>00095 {
898 <a name="l00096"></a>00096 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
899 <a name="l00097"></a>00097 {
900 <a name="l00098"></a>00098 <span class="keywordflow">if</span> (i->channel) {
901 <a name="l00099"></a>00099 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
902 <a name="l00100"></a>00100 {
903 <a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
904 <a name="l00102"></a>00102 }
905 <a name="l00103"></a>00103 }
906 <a name="l00104"></a>00104 }
907 <a name="l00105"></a>00105 <span class="keywordflow">return</span> <span class="keyword">false</span>;
908 <a name="l00106"></a>00106 }
914 <a class="anchor" name="ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29"></a><!-- doxytag: member="userrec::ReadData" ref="ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29" args="(void *buffer, size_t size)" --><p>
915 <table class="mdTable" cellpadding="2" cellspacing="0">
918 <table cellpadding="0" cellspacing="0" border="0">
920 <td class="md" nowrap valign="top">int userrec::ReadData </td>
921 <td class="md" valign="top">( </td>
922 <td class="md" nowrap valign="top">void * </td>
923 <td class="mdname" nowrap> <em>buffer</em>, </td>
926 <td class="md" nowrap align="right"></td>
928 <td class="md" nowrap>size_t </td>
929 <td class="mdname" nowrap> <em>size</em></td>
933 <td class="md">) </td>
934 <td class="md" colspan="2"></td>
940 <table cellspacing="5" cellpadding="0" border="0">
948 Calls read() to read some data for this user using their fd.
952 Definition at line <a class="el" href="users_8cpp-source.html#l00076">76</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
954 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.<div class="fragment"><pre class="fragment"><a name="l00077"></a>00077 {
955 <a name="l00078"></a>00078 <span class="keywordflow">if</span> (this->fd > -1)
956 <a name="l00079"></a>00079 {
957 <a name="l00080"></a>00080 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"userrec::ReadData on fd %d"</span>,this->fd);
958 <a name="l00081"></a>00081 <span class="keywordflow">return</span> read(this->fd, buffer, size);
959 <a name="l00082"></a>00082 }
960 <a name="l00083"></a>00083 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
961 <a name="l00084"></a>00084 }
967 <a class="anchor" name="RemoveInvite_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::RemoveInvite" ref="RemoveInvite_28char_20_2Achannel_29" args="(char *channel)" --><p>
968 <table class="mdTable" cellpadding="2" cellspacing="0">
971 <table cellpadding="0" cellspacing="0" border="0">
973 <td class="md" nowrap valign="top">void userrec::RemoveInvite </td>
974 <td class="md" valign="top">( </td>
975 <td class="md" nowrap valign="top">char * </td>
976 <td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
977 <td class="md" valign="top"> ) </td>
978 <td class="md" nowrap><code> [virtual]</code></td>
984 <table cellspacing="5" cellpadding="0" border="0">
992 Removes a channel from a users invite list.
994 This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
996 Definition at line <a class="el" href="users_8cpp-source.html#l00120">120</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
998 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00121"></a>00121 {
999 <a name="l00122"></a>00122 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
1000 <a name="l00123"></a>00123 <span class="keywordflow">if</span> (channel)
1001 <a name="l00124"></a>00124 {
1002 <a name="l00125"></a>00125 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
1003 <a name="l00126"></a>00126 {
1004 <a name="l00127"></a>00127 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
1005 <a name="l00128"></a>00128 {
1006 <a name="l00129"></a>00129 <span class="keywordflow">if</span> (i->channel)
1007 <a name="l00130"></a>00130 {
1008 <a name="l00131"></a>00131 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
1009 <a name="l00132"></a>00132 {
1010 <a name="l00133"></a>00133 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
1011 <a name="l00134"></a>00134 <span class="keywordflow">return</span>;
1012 <a name="l00135"></a>00135 }
1013 <a name="l00136"></a>00136 }
1014 <a name="l00137"></a>00137 }
1015 <a name="l00138"></a>00138 }
1016 <a name="l00139"></a>00139 }
1017 <a name="l00140"></a>00140 }
1023 <a class="anchor" name="SetWriteError_28std_3A_3Astring_20error_29"></a><!-- doxytag: member="userrec::SetWriteError" ref="SetWriteError_28std_3A_3Astring_20error_29" args="(std::string error)" --><p>
1024 <table class="mdTable" cellpadding="2" cellspacing="0">
1027 <table cellpadding="0" cellspacing="0" border="0">
1029 <td class="md" nowrap valign="top">void userrec::SetWriteError </td>
1030 <td class="md" valign="top">( </td>
1031 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
1032 <td class="mdname1" valign="top" nowrap> <em>error</em> </td>
1033 <td class="md" valign="top"> ) </td>
1034 <td class="md" nowrap></td>
1040 <table cellspacing="5" cellpadding="0" border="0">
1048 Sets the write error for a connection.
1050 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.
1052 Definition at line <a class="el" href="users_8cpp-source.html#l00288">288</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
1054 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00209">WriteError</a>.
1056 Referenced by <a class="el" href="users_8cpp-source.html#l00194">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00250">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00266">FlushWriteBuf()</a>.<div class="fragment"><pre class="fragment"><a name="l00289"></a>00289 {
1057 <a name="l00290"></a>00290 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this->nick,error.c_str());
1058 <a name="l00291"></a>00291 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
1059 <a name="l00292"></a>00292 <span class="keywordflow">if</span> (this->WriteError == <span class="stringliteral">""</span>)
1060 <a name="l00293"></a>00293 this-><a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
1061 <a name="l00294"></a>00294 }
1067 <hr><h2>Member Data Documentation</h2>
1068 <a class="anchor" name="awaymsg_5BMAXAWAY_2B_31_5D"></a><!-- doxytag: member="userrec::awaymsg" ref="awaymsg_5BMAXAWAY_2B_31_5D" args="[MAXAWAY+1]" --><p>
1069 <table class="mdTable" cellpadding="2" cellspacing="0">
1072 <table cellpadding="0" cellspacing="0" border="0">
1074 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">userrec::awaymsg</a>[MAXAWAY+1] </td>
1080 <table cellspacing="5" cellpadding="0" border="0">
1088 The user's away message.
1090 If this string is empty, the user is not marked as away.
1092 Definition at line <a class="el" href="users_8h-source.html#l00155">155</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1094 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1097 <a class="anchor" name="chans_5BMAXCHANS_5D"></a><!-- doxytag: member="userrec::chans" ref="chans_5BMAXCHANS_5D" args="[MAXCHANS]" --><p>
1098 <table class="mdTable" cellpadding="2" cellspacing="0">
1101 <table cellpadding="0" cellspacing="0" border="0">
1103 <td class="md" nowrap valign="top"><a class="el" href="classucrec.html">ucrec</a> <a class="el" href="classuserrec.html#chans_5BMAXCHANS_5D">userrec::chans</a>[MAXCHANS] </td>
1109 <table cellspacing="5" cellpadding="0" border="0">
1119 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>.
1121 Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1124 <a class="anchor" name="dhost_5B_31_36_30_5D"></a><!-- doxytag: member="userrec::dhost" ref="dhost_5B_31_36_30_5D" args="[160]" --><p>
1125 <table class="mdTable" cellpadding="2" cellspacing="0">
1128 <table cellpadding="0" cellspacing="0" border="0">
1130 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#dhost_5B_31_36_30_5D">userrec::dhost</a>[160] </td>
1136 <table cellspacing="5" cellpadding="0" border="0">
1144 The host displayed to non-opers (used for cloaking etc).
1146 This usually matches the value of <a class="el" href="classconnection.html#host_5B_31_36_30_5D">userrec::host</a>.
1148 Definition at line <a class="el" href="users_8h-source.html#l00131">131</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1150 Referenced by <a class="el" href="users_8cpp-source.html#l00069">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1153 <a class="anchor" name="dns_5Fdone"></a><!-- doxytag: member="userrec::dns_done" ref="dns_5Fdone" args="" --><p>
1154 <table class="mdTable" cellpadding="2" cellspacing="0">
1157 <table cellpadding="0" cellspacing="0" border="0">
1159 <td class="md" nowrap valign="top">bool <a class="el" href="classuserrec.html#dns_5Fdone">userrec::dns_done</a> </td>
1165 <table cellspacing="5" cellpadding="0" border="0">
1173 True when <a class="el" href="classDNS.html">DNS</a> lookups are completed.
1177 Definition at line <a class="el" href="users_8h-source.html#l00178">178</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1179 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1182 <a class="anchor" name="flood"></a><!-- doxytag: member="userrec::flood" ref="flood" args="" --><p>
1183 <table class="mdTable" cellpadding="2" cellspacing="0">
1186 <table cellpadding="0" cellspacing="0" border="0">
1188 <td class="md" nowrap valign="top">int <a class="el" href="classuserrec.html#flood">userrec::flood</a> </td>
1194 <table cellspacing="5" cellpadding="0" border="0">
1202 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood.
1206 Definition at line <a class="el" href="users_8h-source.html#l00161">161</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1208 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1211 <a class="anchor" name="fullname_5BMAXGECOS_2B_31_5D"></a><!-- doxytag: member="userrec::fullname" ref="fullname_5BMAXGECOS_2B_31_5D" args="[MAXGECOS+1]" --><p>
1212 <table class="mdTable" cellpadding="2" cellspacing="0">
1215 <table cellpadding="0" cellspacing="0" border="0">
1217 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">userrec::fullname</a>[MAXGECOS+1] </td>
1223 <table cellspacing="5" cellpadding="0" border="0">
1231 The users full name.
1235 Definition at line <a class="el" href="users_8h-source.html#l00135">135</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1237 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1240 <a class="anchor" name="ident_5BIDENTMAX_2B_32_5D"></a><!-- doxytag: member="userrec::ident" ref="ident_5BIDENTMAX_2B_32_5D" args="[IDENTMAX+2]" --><p>
1241 <table class="mdTable" cellpadding="2" cellspacing="0">
1244 <table cellpadding="0" cellspacing="0" border="0">
1246 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">userrec::ident</a>[IDENTMAX+2] </td>
1252 <table cellspacing="5" cellpadding="0" border="0">
1260 The users ident reply.
1262 Two characters are added to the user-defined limit to compensate for the tilde etc.
1264 Definition at line <a class="el" href="users_8h-source.html#l00126">126</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1266 Referenced by <a class="el" href="users_8cpp-source.html#l00069">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00087">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00639">Server::UserToPseudo()</a>. </td>
1269 <a class="anchor" name="invites"></a><!-- doxytag: member="userrec::invites" ref="invites" args="" --><p>
1270 <table class="mdTable" cellpadding="2" cellspacing="0">
1273 <table cellpadding="0" cellspacing="0" border="0">
1275 <td class="md" nowrap valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> <a class="el" href="classuserrec.html#invites">userrec::invites</a><code> [private]</code> </td>
1281 <table cellspacing="5" cellpadding="0" border="0">
1289 A list of channels the user has a pending invite to.
1293 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>.
1295 Referenced by <a class="el" href="users_8cpp-source.html#l00108">GetInviteList()</a>, <a class="el" href="users_8cpp-source.html#l00113">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00094">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00120">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1298 <a class="anchor" name="lines_5Fin"></a><!-- doxytag: member="userrec::lines_in" ref="lines_5Fin" args="" --><p>
1299 <table class="mdTable" cellpadding="2" cellspacing="0">
1302 <table cellpadding="0" cellspacing="0" border="0">
1304 <td class="md" nowrap valign="top">int <a class="el" href="classuserrec.html#lines_5Fin">userrec::lines_in</a> </td>
1310 <table cellspacing="5" cellpadding="0" border="0">
1322 Definition at line <a class="el" href="users_8h-source.html#l00203">203</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1324 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1327 <a class="anchor" name="modes_5B_35_34_5D"></a><!-- doxytag: member="userrec::modes" ref="modes_5B_35_34_5D" args="[54]" --><p>
1328 <table class="mdTable" cellpadding="2" cellspacing="0">
1331 <table cellpadding="0" cellspacing="0" border="0">
1333 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#modes_5B_35_34_5D">userrec::modes</a>[54] </td>
1339 <table cellspacing="5" cellpadding="0" border="0">
1347 The user's mode string.
1349 This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.
1351 Definition at line <a class="el" href="users_8h-source.html#l00144">144</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1353 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1356 <a class="anchor" name="nick_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::nick" ref="nick_5BNICKMAX_5D" args="[NICKMAX]" --><p>
1357 <table class="mdTable" cellpadding="2" cellspacing="0">
1360 <table cellpadding="0" cellspacing="0" border="0">
1362 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec::nick</a>[NICKMAX] </td>
1368 <table cellspacing="5" cellpadding="0" border="0">
1378 An invalid nickname indicates an unregistered connection prior to the NICK command.
1380 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>.
1382 Referenced by <a class="el" href="modules_8cpp-source.html#l00894">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00069">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00087">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1385 <a class="anchor" name="oper_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::oper" ref="oper_5BNICKMAX_5D" args="[NICKMAX]" --><p>
1386 <table class="mdTable" cellpadding="2" cellspacing="0">
1389 <table cellpadding="0" cellspacing="0" border="0">
1391 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">userrec::oper</a>[NICKMAX] </td>
1397 <table cellspacing="5" cellpadding="0" border="0">
1405 The oper type they logged in as, if they are an oper.
1407 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.
1409 Definition at line <a class="el" href="users_8h-source.html#l00174">174</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1411 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1414 <a class="anchor" name="password_5BMAXBUF_5D"></a><!-- doxytag: member="userrec::password" ref="password_5BMAXBUF_5D" args="[MAXBUF]" --><p>
1415 <table class="mdTable" cellpadding="2" cellspacing="0">
1418 <table cellpadding="0" cellspacing="0" border="0">
1420 <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#password_5BMAXBUF_5D">userrec::password</a>[MAXBUF] </td>
1426 <table cellspacing="5" cellpadding="0" border="0">
1434 Password specified by the user when they registered.
1436 This is stored even if the <connect> block doesnt need a password, so that modules may check it.
1438 Definition at line <a class="el" href="users_8h-source.html#l00188">188</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
1441 <a class="anchor" name="pingmax"></a><!-- doxytag: member="userrec::pingmax" ref="pingmax" args="" --><p>
1442 <table class="mdTable" cellpadding="2" cellspacing="0">
1445 <table cellpadding="0" cellspacing="0" border="0">
1447 <td class="md" nowrap valign="top">unsigned int <a class="el" href="classuserrec.html#pingmax">userrec::pingmax</a> </td>
1453 <table cellspacing="5" cellpadding="0" border="0">
1461 Number of seconds between PINGs for this user (set from <connect:allow> tag.
1465 Definition at line <a class="el" href="users_8h-source.html#l00182">182</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
1468 <a class="anchor" name="recvq"></a><!-- doxytag: member="userrec::recvq" ref="recvq" args="" --><p>
1469 <table class="mdTable" cellpadding="2" cellspacing="0">
1472 <table cellpadding="0" cellspacing="0" border="0">
1474 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classuserrec.html#recvq">userrec::recvq</a> </td>
1480 <table cellspacing="5" cellpadding="0" border="0">
1488 User's receive queue.
1490 Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
1492 Definition at line <a class="el" href="users_8h-source.html#l00194">194</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1494 Referenced by <a class="el" href="users_8cpp-source.html#l00194">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00220">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00228">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00233">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1497 <a class="anchor" name="recvqmax"></a><!-- doxytag: member="userrec::recvqmax" ref="recvqmax" args="" --><p>
1498 <table class="mdTable" cellpadding="2" cellspacing="0">
1501 <table cellpadding="0" cellspacing="0" border="0">
1503 <td class="md" nowrap valign="top">long <a class="el" href="classuserrec.html#recvqmax">userrec::recvqmax</a> </td>
1509 <table cellspacing="5" cellpadding="0" border="0">
1517 Maximum size this user's recvq can become.
1521 Definition at line <a class="el" href="users_8h-source.html#l00217">217</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1523 Referenced by <a class="el" href="users_8cpp-source.html#l00194">AddBuffer()</a>. </td>
1526 <a class="anchor" name="reset_5Fdue"></a><!-- doxytag: member="userrec::reset_due" ref="reset_5Fdue" args="" --><p>
1527 <table class="mdTable" cellpadding="2" cellspacing="0">
1530 <table cellpadding="0" cellspacing="0" border="0">
1532 <td class="md" nowrap valign="top">time_t <a class="el" href="classuserrec.html#reset_5Fdue">userrec::reset_due</a> </td>
1538 <table cellspacing="5" cellpadding="0" border="0">
1548 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>.
1550 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1553 <a class="anchor" name="sendq"></a><!-- doxytag: member="userrec::sendq" ref="sendq" args="" --><p>
1554 <table class="mdTable" cellpadding="2" cellspacing="0">
1557 <table cellpadding="0" cellspacing="0" border="0">
1559 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classuserrec.html#sendq">userrec::sendq</a> </td>
1565 <table cellspacing="5" cellpadding="0" border="0">
1575 Lines waiting to be sent are stored here until their buffer is flushed.
1577 Definition at line <a class="el" href="users_8h-source.html#l00199">199</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1579 Referenced by <a class="el" href="users_8cpp-source.html#l00250">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00266">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1582 <a class="anchor" name="sendqmax"></a><!-- doxytag: member="userrec::sendqmax" ref="sendqmax" args="" --><p>
1583 <table class="mdTable" cellpadding="2" cellspacing="0">
1586 <table cellpadding="0" cellspacing="0" border="0">
1588 <td class="md" nowrap valign="top">long <a class="el" href="classuserrec.html#sendqmax">userrec::sendqmax</a> </td>
1594 <table cellspacing="5" cellpadding="0" border="0">
1602 Maximum size this user's sendq can become.
1606 Definition at line <a class="el" href="users_8h-source.html#l00213">213</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1608 Referenced by <a class="el" href="users_8cpp-source.html#l00250">AddWriteBuf()</a>. </td>
1611 <a class="anchor" name="server"></a><!-- doxytag: member="userrec::server" ref="server" args="" --><p>
1612 <table class="mdTable" cellpadding="2" cellspacing="0">
1615 <table cellpadding="0" cellspacing="0" border="0">
1617 <td class="md" nowrap valign="top">char* <a class="el" href="classuserrec.html#server">userrec::server</a> </td>
1623 <table cellspacing="5" cellpadding="0" border="0">
1631 The server the user is connected to.
1635 Definition at line <a class="el" href="users_8h-source.html#l00150">150</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1637 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1640 <a class="anchor" name="threshold"></a><!-- doxytag: member="userrec::threshold" ref="threshold" args="" --><p>
1641 <table class="mdTable" cellpadding="2" cellspacing="0">
1644 <table cellpadding="0" cellspacing="0" border="0">
1646 <td class="md" nowrap valign="top">long <a class="el" href="classuserrec.html#threshold">userrec::threshold</a> </td>
1652 <table cellspacing="5" cellpadding="0" border="0">
1662 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>. </td>
1665 <a class="anchor" name="timeout"></a><!-- doxytag: member="userrec::timeout" ref="timeout" args="" --><p>
1666 <table class="mdTable" cellpadding="2" cellspacing="0">
1669 <table cellpadding="0" cellspacing="0" border="0">
1671 <td class="md" nowrap valign="top">unsigned int <a class="el" href="classuserrec.html#timeout">userrec::timeout</a> </td>
1677 <table cellspacing="5" cellpadding="0" border="0">
1685 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.
1689 Definition at line <a class="el" href="users_8h-source.html#l00167">167</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1691 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>. </td>
1694 <a class="anchor" name="WriteError"></a><!-- doxytag: member="userrec::WriteError" ref="WriteError" args="" --><p>
1695 <table class="mdTable" cellpadding="2" cellspacing="0">
1698 <table cellpadding="0" cellspacing="0" border="0">
1700 <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classuserrec.html#WriteError">userrec::WriteError</a> </td>
1706 <table cellspacing="5" cellpadding="0" border="0">
1716 Definition at line <a class="el" href="users_8h-source.html#l00209">209</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1718 Referenced by <a class="el" href="users_8cpp-source.html#l00296">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>. </td>
1721 <hr>The documentation for this class was generated from the following files:<ul>
1722 <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>
1723 <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 27 01:43:26 2005 for InspIRCd by
1724 <a href="http://www.doxygen.org/index.html">
1725 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>