From a266dadd1351d10b56ec187c7b6f7af75350ed68 Mon Sep 17 00:00:00 2001 From: brain Date: Thu, 12 May 2005 02:26:05 +0000 Subject: Documented new recvq and sendq stuff git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1367 e03df62e-2008-0410-955e-edbf42e46eb7 --- docs/module-doc/users_8cpp-source.html | 394 +++++++++++++++++++-------------- 1 file changed, 225 insertions(+), 169 deletions(-) (limited to 'docs/module-doc/users_8cpp-source.html') diff --git a/docs/module-doc/users_8cpp-source.html b/docs/module-doc/users_8cpp-source.html index 7d30e3413..5a5d09547 100644 --- a/docs/module-doc/users_8cpp-source.html +++ b/docs/module-doc/users_8cpp-source.html @@ -47,184 +47,240 @@ 00040 strcpy(server,""); 00041 strcpy(awaymsg,""); 00042 strcpy(oper,""); -00043 reset_due = TIME; -00044 lines_in = 0; +00043 reset_due = TIME; +00044 lines_in = 0; 00045 fd = lastping = signon = idle_lastmsg = nping = registered = 0; 00046 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0; 00047 haspassed = false; 00048 dns_done = false; 00049 recvq = ""; -00050 strcpy(result,""); -00051 for (int i = 0; i < MAXCHANS; i++) -00052 { -00053 this->chans[i].channel = NULL; -00054 this->chans[i].uc_modes = 0; -00055 } -00056 invites.clear(); -00057 } -00058 +00050 sendq = ""; +00051 strcpy(result,""); +00052 for (int i = 0; i < MAXCHANS; i++) +00053 { +00054 this->chans[i].channel = NULL; +00055 this->chans[i].uc_modes = 0; +00056 } +00057 invites.clear(); +00058 } 00059 -00060 -00061 char* userrec::GetFullHost() -00062 { -00063 snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,dhost); -00064 return result; -00065 } -00066 +00060 +00061 +00062 char* userrec::GetFullHost() +00063 { +00064 snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,dhost); +00065 return result; +00066 } 00067 -00068 char* userrec::GetFullRealHost() -00069 { -00070 snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,host); -00071 return result; -00072 } -00073 -00074 bool userrec::IsInvited(char* channel) -00075 { -00076 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) -00077 { -00078 if (i->channel) { -00079 if (!strcasecmp(i->channel,channel)) -00080 { -00081 return true; -00082 } -00083 } -00084 } -00085 return false; -00086 } -00087 -00088 void userrec::InviteTo(char* channel) -00089 { -00090 Invited i; -00091 strlcpy(i.channel,channel,CHANMAX); -00092 invites.push_back(i); -00093 } -00094 -00095 void userrec::RemoveInvite(char* channel) -00096 { -00097 log(DEBUG,"Removing invites"); -00098 if (channel) -00099 { -00100 if (invites.size()) -00101 { -00102 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) -00103 { -00104 if (i->channel) -00105 { -00106 if (!strcasecmp(i->channel,channel)) -00107 { -00108 invites.erase(i); -00109 return; -00110 } -00111 } -00112 } -00113 } -00114 } -00115 } -00116 -00117 bool userrec::HasPermission(char* command) -00118 { -00119 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; -00120 char* mycmd; -00121 char* savept; -00122 char* savept2; -00123 -00124 // are they even an oper at all? -00125 if (strchr(this->modes,'o')) -00126 { -00127 log(DEBUG,"*** HasPermission: %s is an oper",this->nick); -00128 for (int j =0; j < ConfValueEnum("type",&config_f); j++) -00129 { -00130 ConfValue("type","name",j,TypeName,&config_f); -00131 if (!strcmp(TypeName,this->oper)) -00132 { -00133 log(DEBUG,"*** HasPermission: %s is an oper of type '%s'",this->nick,this->oper); -00134 ConfValue("type","classes",j,Classes,&config_f); -00135 char* myclass = strtok_r(Classes," ",&savept); -00136 while (myclass) -00137 { -00138 log(DEBUG,"*** HasPermission: checking classtype '%s'",myclass); -00139 for (int k =0; k < ConfValueEnum("class",&config_f); k++) -00140 { -00141 ConfValue("class","name",k,ClassName,&config_f); -00142 if (!strcmp(ClassName,myclass)) -00143 { -00144 ConfValue("class","commands",k,CommandList,&config_f); -00145 log(DEBUG,"*** HasPermission: found class named %s with commands: '%s'",ClassName,CommandList); -00146 +00068 +00069 char* userrec::GetFullRealHost() +00070 { +00071 snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,host); +00072 return result; +00073 } +00074 +00075 bool userrec::IsInvited(char* channel) +00076 { +00077 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) +00078 { +00079 if (i->channel) { +00080 if (!strcasecmp(i->channel,channel)) +00081 { +00082 return true; +00083 } +00084 } +00085 } +00086 return false; +00087 } +00088 +00089 void userrec::InviteTo(char* channel) +00090 { +00091 Invited i; +00092 strlcpy(i.channel,channel,CHANMAX); +00093 invites.push_back(i); +00094 } +00095 +00096 void userrec::RemoveInvite(char* channel) +00097 { +00098 log(DEBUG,"Removing invites"); +00099 if (channel) +00100 { +00101 if (invites.size()) +00102 { +00103 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) +00104 { +00105 if (i->channel) +00106 { +00107 if (!strcasecmp(i->channel,channel)) +00108 { +00109 invites.erase(i); +00110 return; +00111 } +00112 } +00113 } +00114 } +00115 } +00116 } +00117 +00118 bool userrec::HasPermission(char* command) +00119 { +00120 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; +00121 char* mycmd; +00122 char* savept; +00123 char* savept2; +00124 +00125 // are they even an oper at all? +00126 if (strchr(this->modes,'o')) +00127 { +00128 log(DEBUG,"*** HasPermission: %s is an oper",this->nick); +00129 for (int j =0; j < ConfValueEnum("type",&config_f); j++) +00130 { +00131 ConfValue("type","name",j,TypeName,&config_f); +00132 if (!strcmp(TypeName,this->oper)) +00133 { +00134 log(DEBUG,"*** HasPermission: %s is an oper of type '%s'",this->nick,this->oper); +00135 ConfValue("type","classes",j,Classes,&config_f); +00136 char* myclass = strtok_r(Classes," ",&savept); +00137 while (myclass) +00138 { +00139 log(DEBUG,"*** HasPermission: checking classtype '%s'",myclass); +00140 for (int k =0; k < ConfValueEnum("class",&config_f); k++) +00141 { +00142 ConfValue("class","name",k,ClassName,&config_f); +00143 if (!strcmp(ClassName,myclass)) +00144 { +00145 ConfValue("class","commands",k,CommandList,&config_f); +00146 log(DEBUG,"*** HasPermission: found class named %s with commands: '%s'",ClassName,CommandList); 00147 -00148 mycmd = strtok_r(CommandList," ",&savept2); -00149 while (mycmd) -00150 { -00151 if (!strcasecmp(mycmd,command)) -00152 { -00153 log(DEBUG,"*** Command %s found, returning true",command); -00154 return true; -00155 } -00156 mycmd = strtok_r(NULL," ",&savept2); -00157 } -00158 } -00159 } -00160 myclass = strtok_r(NULL," ",&savept); -00161 } -00162 } -00163 } -00164 } -00165 return false; -00166 } -00167 +00148 +00149 mycmd = strtok_r(CommandList," ",&savept2); +00150 while (mycmd) +00151 { +00152 if (!strcasecmp(mycmd,command)) +00153 { +00154 log(DEBUG,"*** Command %s found, returning true",command); +00155 return true; +00156 } +00157 mycmd = strtok_r(NULL," ",&savept2); +00158 } +00159 } +00160 } +00161 myclass = strtok_r(NULL," ",&savept); +00162 } +00163 } +00164 } +00165 } +00166 return false; +00167 } 00168 -00169 bool userrec::AddBuffer(std::string a) -00170 { -00171 std::string b = ""; -00172 for (int i = 0; i < a.length(); i++) -00173 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7)) -00174 b = b + a[i]; -00175 std::stringstream stream(recvq); -00176 stream << b; -00177 recvq = stream.str(); -00178 int i = 0; -00179 // count the size of the first line in the buffer. -00180 while (i < recvq.length()) -00181 { -00182 if (recvq[i++] == '\n') -00183 break; -00184 } -00185 // return false if we've had more than 600 characters WITHOUT -00186 // a carriage return (this is BAD, drop the socket) -00187 return (i < 600); -00188 } -00189 -00190 bool userrec::BufferIsReady() -00191 { -00192 for (int i = 0; i < recvq.length(); i++) -00193 if (recvq[i] == '\n') -00194 return true; -00195 return false; -00196 } -00197 -00198 void userrec::ClearBuffer() -00199 { -00200 recvq = ""; -00201 } -00202 -00203 std::string userrec::GetBuffer() -00204 { -00205 if (recvq == "") -00206 return ""; -00207 char* line = (char*)recvq.c_str(); -00208 std::string ret = ""; -00209 while ((*line != '\n') && (strlen(line))) -00210 { -00211 ret = ret + *line; -00212 line++; -00213 } -00214 if ((*line == '\n') || (*line == '\r')) -00215 line++; -00216 recvq = line; -00217 return ret; -00218 } -00219 -
1.3.3
--
cgit v1.3.1-10-gc9f91