]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/man/man3/userrec.3
Documented new recvq and sendq stuff
[user/henk/code/inspircd.git] / docs / man / man3 / userrec.3
1 .TH "userrec" 3 "12 May 2005" "InspIRCd" \" -*- nroff -*-
2 .ad l
3 .nh
4 .SH NAME
5 userrec \- Holds all information about a user This class stores all information about a user connected to the irc server.  
6
7 .PP
8 .SH SYNOPSIS
9 .br
10 .PP
11 \fC#include <users.h>\fP
12 .PP
13 Inherits \fBconnection\fP.
14 .PP
15 .SS "Public Member Functions"
16
17 .in +1c
18 .ti -1c
19 .RI "\fBuserrec\fP ()"
20 .br
21 .ti -1c
22 .RI "virtual \fB~userrec\fP ()"
23 .br
24 .ti -1c
25 .RI "virtual char * \fBGetFullHost\fP ()"
26 .br
27 .RI "\fIReturns 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. \fP"
28 .ti -1c
29 .RI "virtual char * \fBGetFullRealHost\fP ()"
30 .br
31 .RI "\fIReturns 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. \fP"
32 .ti -1c
33 .RI "virtual bool \fBIsInvited\fP (char *channel)"
34 .br
35 .RI "\fIReturns true if a user is invited to a channel. \fP"
36 .ti -1c
37 .RI "virtual void \fBInviteTo\fP (char *channel)"
38 .br
39 .RI "\fIAdds a channel to a users invite list (invites them to a channel). \fP"
40 .ti -1c
41 .RI "virtual void \fBRemoveInvite\fP (char *channel)"
42 .br
43 .RI "\fIRemoves a channel from a users invite list. \fP"
44 .ti -1c
45 .RI "bool \fBHasPermission\fP (char *command)"
46 .br
47 .RI "\fIReturns true or false for if a user can execute a privilaged oper command. \fP"
48 .ti -1c
49 .RI "bool \fBAddBuffer\fP (std::string a)"
50 .br
51 .RI "\fIThis method adds data to the buffer of the user. \fP"
52 .ti -1c
53 .RI "bool \fBBufferIsReady\fP ()"
54 .br
55 .RI "\fIThis method returns true if the buffer contains at least one carriage return character (e.g. \fP"
56 .ti -1c
57 .RI "void \fBClearBuffer\fP ()"
58 .br
59 .RI "\fIThis function clears the entire buffer by setting it to an empty string. \fP"
60 .ti -1c
61 .RI "std::string \fBGetBuffer\fP ()"
62 .br
63 .RI "\fIThis method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string. \fP"
64 .ti -1c
65 .RI "void \fBSetWriteError\fP (std::string error)"
66 .br
67 .RI "\fISets the write error for a connection. \fP"
68 .ti -1c
69 .RI "std::string \fBGetWriteError\fP ()"
70 .br
71 .RI "\fIReturns the write error which last occured on this connection or an empty string if none occured. \fP"
72 .ti -1c
73 .RI "void \fBAddWriteBuf\fP (std::string data)"
74 .br
75 .RI "\fIAdds to the user's write buffer. \fP"
76 .ti -1c
77 .RI "void \fBFlushWriteBuf\fP ()"
78 .br
79 .RI "\fIFlushes as much of the user's buffer to the file descriptor as possible. \fP"
80 .in -1c
81 .SS "Public Attributes"
82
83 .in +1c
84 .ti -1c
85 .RI "char \fBnick\fP [NICKMAX]"
86 .br
87 .RI "\fIThe users nickname. \fP"
88 .ti -1c
89 .RI "char \fBident\fP [64]"
90 .br
91 .RI "\fIThe users ident reply. \fP"
92 .ti -1c
93 .RI "char \fBdhost\fP [256]"
94 .br
95 .RI "\fIThe host displayed to non-opers (used for cloaking etc). \fP"
96 .ti -1c
97 .RI "char \fBfullname\fP [128]"
98 .br
99 .RI "\fIThe users full name. \fP"
100 .ti -1c
101 .RI "char \fBmodes\fP [MAXBUF]"
102 .br
103 .RI "\fIThe user's mode string. \fP"
104 .ti -1c
105 .RI "\fBucrec\fP \fBchans\fP [MAXCHANS]"
106 .br
107 .ti -1c
108 .RI "char \fBserver\fP [256]"
109 .br
110 .RI "\fIThe server the user is connected to. \fP"
111 .ti -1c
112 .RI "char \fBawaymsg\fP [512]"
113 .br
114 .RI "\fIThe user's away message. \fP"
115 .ti -1c
116 .RI "char \fBresult\fP [256]"
117 .br
118 .RI "\fIStores the result of the last GetFullHost or GetRealHost call. \fP"
119 .ti -1c
120 .RI "int \fBflood\fP"
121 .br
122 .RI "\fINumber of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. \fP"
123 .ti -1c
124 .RI "unsigned long \fBtimeout\fP"
125 .br
126 .RI "\fINumber 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. \fP"
127 .ti -1c
128 .RI "char \fBoper\fP [NICKMAX]"
129 .br
130 .RI "\fIThe oper type they logged in as, if they are an oper. \fP"
131 .ti -1c
132 .RI "bool \fBdns_done\fP"
133 .br
134 .RI "\fITrue when \fBDNS\fP lookups are completed. \fP"
135 .ti -1c
136 .RI "unsigned long \fBpingmax\fP"
137 .br
138 .RI "\fINumber of seconds between PINGs for this user (set from <connect:allow> tag. \fP"
139 .ti -1c
140 .RI "char \fBpassword\fP [MAXBUF]"
141 .br
142 .RI "\fIPassword specified by the user when they registered. \fP"
143 .ti -1c
144 .RI "std::string \fBrecvq\fP"
145 .br
146 .RI "\fIUser's receive queue. \fP"
147 .ti -1c
148 .RI "std::string \fBsendq\fP"
149 .br
150 .RI "\fIUser's send queue. \fP"
151 .ti -1c
152 .RI "long \fBlines_in\fP"
153 .br
154 .RI "\fIFlood counters. \fP"
155 .ti -1c
156 .RI "time_t \fBreset_due\fP"
157 .br
158 .ti -1c
159 .RI "long \fBthreshold\fP"
160 .br
161 .ti -1c
162 .RI "std::string \fBWriteError\fP"
163 .br
164 .ti -1c
165 .RI "long \fBsendqmax\fP"
166 .br
167 .RI "\fIMaximum size this user's sendq can become. \fP"
168 .ti -1c
169 .RI "long \fBrecvqmax\fP"
170 .br
171 .RI "\fIMaximum size this user's recvq can become. \fP"
172 .in -1c
173 .SS "Private Attributes"
174
175 .in +1c
176 .ti -1c
177 .RI "\fBInvitedList\fP \fBinvites\fP"
178 .br
179 .RI "\fIA list of channels the user has a pending invite to. \fP"
180 .in -1c
181 .SH "Detailed Description"
182 .PP 
183 Holds all information about a user This class stores all information about a user connected to the irc server. 
184
185 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. 
186 .PP
187 Definition at line 108 of file users.h.
188 .SH "Constructor & Destructor Documentation"
189 .PP 
190 .SS "userrec::userrec ()"
191 .PP
192 Definition at line 28 of file users.cpp.
193 .PP
194 References awaymsg, connection::bytes_in, connection::bytes_out, ucrec::channel, chans, connection::cmds_in, connection::cmds_out, dhost, dns_done, connection::fd, flood, fullname, connection::haspassed, connection::host, ident, connection::idle_lastmsg, connection::inbuf, invites, connection::ip, connection::lastping, lines_in, modes, nick, connection::nping, oper, connection::port, recvq, connection::registered, reset_due, result, sendq, server, connection::signon, TIME, timeout, and ucrec::uc_modes.
195 .PP
196 .nf
197 29 {
198 30         // the PROPER way to do it, AVOID bzero at *ALL* costs
199 31         strcpy(nick,'');
200 32         strcpy(ip,'127.0.0.1');
201 33         timeout = 0;
202 34         strcpy(ident,'');
203 35         strcpy(host,'');
204 36         strcpy(dhost,'');
205 37         strcpy(fullname,'');
206 38         strcpy(modes,'');
207 39         strcpy(inbuf,'');
208 40         strcpy(server,'');
209 41         strcpy(awaymsg,'');
210 42         strcpy(oper,'');
211 43         reset_due = TIME;
212 44         lines_in = 0;
213 45         fd = lastping = signon = idle_lastmsg = nping = registered = 0;
214 46         flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
215 47         haspassed = false;
216 48         dns_done = false;
217 49         recvq = '';
218 50         sendq = '';
219 51         strcpy(result,'');
220 52         for (int i = 0; i < MAXCHANS; i++)
221 53         {
222 54                 this->chans[i].channel = NULL;
223 55                 this->chans[i].uc_modes = 0;
224 56         }
225 57         invites.clear();
226 58 }
227 .fi
228 .SS "virtual userrec::~\fBuserrec\fP ()\fC [inline, virtual]\fP"
229 .PP
230 Definition at line 222 of file users.h.
231 .PP
232 .nf
233 222 {  }
234 .fi
235 .SH "Member Function Documentation"
236 .PP 
237 .SS "bool userrec::AddBuffer (std::string a)"
238 .PP
239 This method adds data to the buffer of the user. 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.Definition at line 170 of file users.cpp.
240 .PP
241 References recvq, recvqmax, and SetWriteError().
242 .PP
243 .nf
244 171 {
245 172         std::string b = '';
246 173         for (int i = 0; i < a.length(); i++)
247 174                 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
248 175                         b = b + a[i];
249 176         std::stringstream stream(recvq);
250 177         stream << b;
251 178         recvq = stream.str();
252 179         int i = 0;
253 180         // count the size of the first line in the buffer.
254 181         while (i < recvq.length())
255 182         {
256 183                 if (recvq[i++] == '\n')
257 184                         break;
258 185         }
259 186         if (recvq.length() > this->recvqmax)
260 187         {
261 188                 this->SetWriteError('RecvQ exceeded');
262 189                 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax);
263 190         }
264 191         // return false if we've had more than 600 characters WITHOUT
265 192         // a carriage return (this is BAD, drop the socket)
266 193         return (i < 600);
267 194 }
268 .fi
269 .SS "void userrec::AddWriteBuf (std::string data)"
270 .PP
271 Adds to the user's write buffer. You may add any amount of text up to this users sendq value, if you exceed the sendq value, \fBSetWriteError()\fP will be called to set the users error string to 'SendQ exceeded', and further buffer adds will be dropped.Definition at line 226 of file users.cpp.
272 .PP
273 References GetWriteError(), sendq, sendqmax, and SetWriteError().
274 .PP
275 .nf
276 227 {
277 228         if (this->GetWriteError() != '')
278 229                 return;
279 230         if (sendq.length() + data.length() > this->sendqmax)
280 231         {
281 232                 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax);
282 233                 this->SetWriteError('SendQ exceeded');
283 234                 return;
284 235         }
285 236         std::stringstream stream;
286 237         stream << sendq << data;
287 238         sendq = stream.str();
288 239 }
289 .fi
290 .SS "bool userrec::BufferIsReady ()"
291 .PP
292 This method returns true if the buffer contains at least one carriage return character (e.g. one complete line may be read)Definition at line 196 of file users.cpp.
293 .PP
294 References recvq.
295 .PP
296 .nf
297 197 {
298 198         for (int i = 0; i < recvq.length(); i++)
299 199                 if (recvq[i] == '\n')
300 200                         return true;
301 201         return false;
302 202 }
303 .fi
304 .SS "void userrec::ClearBuffer ()"
305 .PP
306 This function clears the entire buffer by setting it to an empty string. Definition at line 204 of file users.cpp.
307 .PP
308 References recvq.
309 .PP
310 Referenced by Server::PseudoToUser(), and Server::UserToPseudo().
311 .PP
312 .nf
313 205 {
314 206         recvq = '';
315 207 }
316 .fi
317 .SS "void userrec::FlushWriteBuf ()"
318 .PP
319 Flushes as much of the user's buffer to the file descriptor as possible. 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.Definition at line 242 of file users.cpp.
320 .PP
321 References connection::bytes_out, connection::cmds_out, sendq, and SetWriteError().
322 .PP
323 .nf
324 243 {
325 244         if (sendq.length())
326 245         {
327 246                 char* tb = (char*)this->sendq.c_str();
328 247                 int n_sent = write(this->fd,tb,this->sendq.length());
329 248                 if (n_sent == -1)
330 249                 {
331 250                         this->SetWriteError(strerror(errno));
332 251                 }
333 252                 else
334 253                 {
335 254                         // advance the queue
336 255                         tb += n_sent;
337 256                         this->sendq = tb;
338 257                         // update the user's stats counters
339 258                         this->bytes_out += n_sent;
340 259                         this->cmds_out++;
341 260                 }
342 261         }
343 262 }
344 .fi
345 .SS "std::string userrec::GetBuffer ()"
346 .PP
347 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. 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 \fBBufferIsReady()\fP to check if it is ok to read the buffer before calling \fBGetBuffer()\fP.Definition at line 209 of file users.cpp.
348 .PP
349 References recvq.
350 .PP
351 .nf
352 210 {
353 211         if (recvq == '')
354 212                 return '';
355 213         char* line = (char*)recvq.c_str();
356 214         std::string ret = '';
357 215         while ((*line != '\n') && (strlen(line)))
358 216         {
359 217                 ret = ret + *line;
360 218                 line++;
361 219         }
362 220         if ((*line == '\n') || (*line == '\r'))
363 221                 line++;
364 222         recvq = line;
365 223         return ret;
366 224 }
367 .fi
368 .SS "char * userrec::GetFullHost ()\fC [virtual]\fP"
369 .PP
370 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. Definition at line 62 of file users.cpp.
371 .PP
372 References dhost, ident, nick, and result.
373 .PP
374 .nf
375 63 {
376 64         snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost);
377 65         return result;
378 66 }
379 .fi
380 .SS "char * userrec::GetFullRealHost ()\fC [virtual]\fP"
381 .PP
382 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. 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.Definition at line 69 of file users.cpp.
383 .PP
384 References connection::host, ident, nick, and result.
385 .PP
386 .nf
387 70 {
388 71         snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,host);
389 72         return result;
390 73 }
391 .fi
392 .SS "std::string userrec::GetWriteError ()"
393 .PP
394 Returns the write error which last occured on this connection or an empty string if none occured. Definition at line 272 of file users.cpp.
395 .PP
396 References WriteError.
397 .PP
398 Referenced by AddWriteBuf().
399 .PP
400 .nf
401 273 {
402 274         return this->WriteError;
403 275 }
404 .fi
405 .SS "bool userrec::HasPermission (char * command)"
406 .PP
407 Returns true or false for if a user can execute a privilaged oper command. This is done by looking up their oper type from \fBuserrec::oper\fP, then referencing this to their oper classes and checking the commands they can execute.Definition at line 118 of file users.cpp.
408 .PP
409 References config_f, and DEBUG.
410 .PP
411 .nf
412 119 {
413 120         char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
414 121         char* mycmd;
415 122         char* savept;
416 123         char* savept2;
417 124         
418 125         // are they even an oper at all?
419 126         if (strchr(this->modes,'o'))
420 127         {
421 128                 log(DEBUG,'*** HasPermission: %s is an oper',this->nick);
422 129                 for (int j =0; j < ConfValueEnum('type',&config_f); j++)
423 130                 {
424 131                         ConfValue('type','name',j,TypeName,&config_f);
425 132                         if (!strcmp(TypeName,this->oper))
426 133                         {
427 134                                 log(DEBUG,'*** HasPermission: %s is an oper of type '%s'',this->nick,this->oper);
428 135                                 ConfValue('type','classes',j,Classes,&config_f);
429 136                                 char* myclass = strtok_r(Classes,' ',&savept);
430 137                                 while (myclass)
431 138                                 {
432 139                                         log(DEBUG,'*** HasPermission: checking classtype '%s'',myclass);
433 140                                         for (int k =0; k < ConfValueEnum('class',&config_f); k++)
434 141                                         {
435 142                                                 ConfValue('class','name',k,ClassName,&config_f);
436 143                                                 if (!strcmp(ClassName,myclass))
437 144                                                 {
438 145                                                         ConfValue('class','commands',k,CommandList,&config_f);
439 146                                                         log(DEBUG,'*** HasPermission: found class named %s with commands: '%s'',ClassName,CommandList);
440 147                                                         
441 148                                                         
442 149                                                         mycmd = strtok_r(CommandList,' ',&savept2);
443 150                                                         while (mycmd)
444 151                                                         {
445 152                                                                 if (!strcasecmp(mycmd,command))
446 153                                                                 {
447 154                                                                         log(DEBUG,'*** Command %s found, returning true',command);
448 155                                                                         return true;
449 156                                                                 }
450 157                                                                 mycmd = strtok_r(NULL,' ',&savept2);
451 158                                                         }
452 159                                                 }
453 160                                         }
454 161                                         myclass = strtok_r(NULL,' ',&savept);
455 162                                 }
456 163                         }
457 164                 }
458 165         }
459 166         return false;
460 167 }
461 .fi
462 .SS "void userrec::InviteTo (char * channel)\fC [virtual]\fP"
463 .PP
464 Adds a channel to a users invite list (invites them to a channel). Definition at line 89 of file users.cpp.
465 .PP
466 References Invited::channel, and invites.
467 .PP
468 .nf
469 90 {
470 91         Invited i;
471 92         strlcpy(i.channel,channel,CHANMAX);
472 93         invites.push_back(i);
473 94 }
474 .fi
475 .SS "bool userrec::IsInvited (char * channel)\fC [virtual]\fP"
476 .PP
477 Returns true if a user is invited to a channel. Definition at line 75 of file users.cpp.
478 .PP
479 References invites.
480 .PP
481 .nf
482 76 {
483 77         for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
484 78         {
485 79                 if (i->channel) {
486 80                         if (!strcasecmp(i->channel,channel))
487 81                         {
488 82                                 return true;
489 83                         }
490 84                 }
491 85         }
492 86         return false;
493 87 }
494 .fi
495 .SS "void userrec::RemoveInvite (char * channel)\fC [virtual]\fP"
496 .PP
497 Removes a channel from a users invite list. This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.Definition at line 96 of file users.cpp.
498 .PP
499 References DEBUG, and invites.
500 .PP
501 .nf
502 97 {
503 98         log(DEBUG,'Removing invites');
504 99         if (channel)
505 100         {
506 101                 if (invites.size())
507 102                 {
508 103                         for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
509 104                         {
510 105                                 if (i->channel)
511 106                                 {
512 107                                         if (!strcasecmp(i->channel,channel))
513 108                                         {
514 109                                                 invites.erase(i);
515 110                                                 return;
516 111                                         }
517 112                                 }
518 113                         }
519 114                 }
520 115         }
521 116 }
522 .fi
523 .SS "void userrec::SetWriteError (std::string error)"
524 .PP
525 Sets the write error for a connection. 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.Definition at line 264 of file users.cpp.
526 .PP
527 References DEBUG, and WriteError.
528 .PP
529 Referenced by AddBuffer(), AddWriteBuf(), and FlushWriteBuf().
530 .PP
531 .nf
532 265 {
533 266         log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str());
534 267         // don't try to set the error twice, its already set take the first string.
535 268         if (this->WriteError == '')
536 269                 this->WriteError = error;
537 270 }
538 .fi
539 .SH "Member Data Documentation"
540 .PP 
541 .SS "char \fBuserrec::awaymsg\fP[512]"
542 .PP
543 The user's away message. If this string is empty, the user is not marked as away.Definition at line 151 of file users.h.
544 .PP
545 Referenced by userrec().
546 .SS "\fBucrec\fP \fBuserrec::chans\fP[MAXCHANS]"
547 .PP
548 Definition at line 142 of file users.h.
549 .PP
550 Referenced by Server::PseudoToUser(), and userrec().
551 .SS "char \fBuserrec::dhost\fP[256]"
552 .PP
553 The host displayed to non-opers (used for cloaking etc). This usually matches the value of \fBuserrec::host\fP.Definition at line 130 of file users.h.
554 .PP
555 Referenced by GetFullHost(), and userrec().
556 .SS "bool \fBuserrec::dns_done\fP"
557 .PP
558 True when \fBDNS\fP lookups are completed. Definition at line 179 of file users.h.
559 .PP
560 Referenced by userrec().
561 .SS "int \fBuserrec::flood\fP"
562 .PP
563 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. Definition at line 162 of file users.h.
564 .PP
565 Referenced by userrec().
566 .SS "char \fBuserrec::fullname\fP[128]"
567 .PP
568 The users full name. Definition at line 134 of file users.h.
569 .PP
570 Referenced by userrec().
571 .SS "char \fBuserrec::ident\fP[64]"
572 .PP
573 The users ident reply. Definition at line 125 of file users.h.
574 .PP
575 Referenced by GetFullHost(), GetFullRealHost(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo().
576 .SS "\fBInvitedList\fP \fBuserrec::invites\fP\fC [private]\fP"
577 .PP
578 A list of channels the user has a pending invite to. Definition at line 114 of file users.h.
579 .PP
580 Referenced by InviteTo(), IsInvited(), RemoveInvite(), and userrec().
581 .SS "long \fBuserrec::lines_in\fP"
582 .PP
583 Flood counters. Definition at line 204 of file users.h.
584 .PP
585 Referenced by userrec().
586 .SS "char \fBuserrec::modes\fP[MAXBUF]"
587 .PP
588 The user's mode string. This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit.Definition at line 140 of file users.h.
589 .PP
590 Referenced by userrec().
591 .SS "char \fBuserrec::nick\fP[NICKMAX]"
592 .PP
593 The users nickname. An invalid nickname indicates an unregistered connection prior to the NICK command.Definition at line 121 of file users.h.
594 .PP
595 Referenced by ConfigReader::DumpErrors(), GetFullHost(), GetFullRealHost(), Server::PseudoToUser(), and userrec().
596 .SS "char \fBuserrec::oper\fP[NICKMAX]"
597 .PP
598 The oper type they logged in as, if they are an oper. 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.Definition at line 175 of file users.h.
599 .PP
600 Referenced by userrec().
601 .SS "char \fBuserrec::password\fP[MAXBUF]"
602 .PP
603 Password specified by the user when they registered. This is stored even if the  block doesnt need a password, so that modules may check it.Definition at line 189 of file users.h.
604 .SS "unsigned long \fBuserrec::pingmax\fP"
605 .PP
606 Number of seconds between PINGs for this user (set from <connect:allow> tag. Definition at line 183 of file users.h.
607 .SS "std::string \fBuserrec::recvq\fP"
608 .PP
609 User's receive queue. Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.Definition at line 195 of file users.h.
610 .PP
611 Referenced by AddBuffer(), BufferIsReady(), ClearBuffer(), GetBuffer(), and userrec().
612 .SS "long \fBuserrec::recvqmax\fP"
613 .PP
614 Maximum size this user's recvq can become. Definition at line 218 of file users.h.
615 .PP
616 Referenced by AddBuffer().
617 .SS "time_t \fBuserrec::reset_due\fP"
618 .PP
619 Definition at line 205 of file users.h.
620 .PP
621 Referenced by userrec().
622 .SS "char \fBuserrec::result\fP[256]"
623 .PP
624 Stores the result of the last GetFullHost or GetRealHost call. You may use this to increase the speed of use of this class.Definition at line 156 of file users.h.
625 .PP
626 Referenced by GetFullHost(), GetFullRealHost(), and userrec().
627 .SS "std::string \fBuserrec::sendq\fP"
628 .PP
629 User's send queue. Lines waiting to be sent are stored here until their buffer is flushed.Definition at line 200 of file users.h.
630 .PP
631 Referenced by AddWriteBuf(), FlushWriteBuf(), and userrec().
632 .SS "long \fBuserrec::sendqmax\fP"
633 .PP
634 Maximum size this user's sendq can become. Definition at line 214 of file users.h.
635 .PP
636 Referenced by AddWriteBuf().
637 .SS "char \fBuserrec::server\fP[256]"
638 .PP
639 The server the user is connected to. Definition at line 146 of file users.h.
640 .PP
641 Referenced by userrec().
642 .SS "long \fBuserrec::threshold\fP"
643 .PP
644 Definition at line 206 of file users.h.
645 .SS "unsigned long \fBuserrec::timeout\fP"
646 .PP
647 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. Definition at line 168 of file users.h.
648 .PP
649 Referenced by userrec().
650 .SS "std::string \fBuserrec::WriteError\fP"
651 .PP
652 Definition at line 210 of file users.h.
653 .PP
654 Referenced by GetWriteError(), and SetWriteError().
655
656 .SH "Author"
657 .PP 
658 Generated automatically by Doxygen for InspIRCd from the source code.