X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=docs%2Fmodule-doc%2Fchannels_8cpp-source.html;h=c149c9b12159e93dc7be30eb83476959c29505c5;hb=5a2675d174e661c55843b3795afe2d688e7197f9;hp=913a014fa8eab502ec96b6642fc64e08e0bd61b2;hpb=07c6999de2beb1a7bab172ecd1f3a27ca6ec8ca4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/docs/module-doc/channels_8cpp-source.html b/docs/module-doc/channels_8cpp-source.html index 913a014fa..c149c9b12 100644 --- a/docs/module-doc/channels_8cpp-source.html +++ b/docs/module-doc/channels_8cpp-source.html @@ -1,114 +1,256 @@
-00001 #include "inspircd_config.h" -00002 #include "channels.h" -00003 #include "inspircd.h" -00004 #include <stdio.h> -00005 #include <string> -00006 #include <vector> -00007 -00008 using namespace std; -00009 -00010 vector<ModeParameter> custom_mode_params; -00011 -00012 chanrec::chanrec() -00013 { -00014 strcpy(name,""); -00015 strcpy(custom_modes,""); -00016 strcpy(topic,""); -00017 strcpy(setby,""); -00018 strcpy(key,""); -00019 created = topicset = limit = 0; -00020 topiclock = noexternal = inviteonly = moderated = secret = c_private = false; -00021 } -00022 -00023 void chanrec::SetCustomMode(char mode,bool mode_on) -00024 { -00025 if (mode_on) { -00026 char m[3]; -00027 m[0] = mode; -00028 m[1] = '\0'; -00029 if (!strchr(this->custom_modes,mode)) -00030 { -00031 strncat(custom_modes,m,MAXMODES); -00032 } -00033 log(DEBUG,"Custom mode %c set",mode); -00034 } -00035 else { -00036 char temp[MAXBUF]; -00037 int count = 0; -00038 for (int q = 0; q < strlen(custom_modes); q++) { -00039 if (custom_modes[q] != mode) { -00040 temp[count++] = mode; -00041 } -00042 } -00043 temp[count] = '\0'; -00044 strncpy(custom_modes,temp,MAXMODES); -00045 log(DEBUG,"Custom mode %c removed",mode); -00046 this->SetCustomModeParam(mode,"",false); -00047 } -00048 } -00049 -00050 void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on) -00051 { -00052 -00053 log(DEBUG,"SetCustomModeParam called"); -00054 ModeParameter M; -00055 M.mode = mode; -00056 strcpy(M.channel,this->name); -00057 strcpy(M.parameter,parameter); -00058 if (mode_on) -00059 { -00060 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); -00061 custom_mode_params.push_back(M); -00062 } -00063 else -00064 { -00065 if (custom_mode_params.size()) -00066 { -00067 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) -00068 { -00069 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) -00070 { -00071 log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter); -00072 custom_mode_params.erase(i); -00073 return; -00074 } -00075 } -00076 } -00077 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!"); -00078 } -00079 } -00080 -00081 bool chanrec::IsCustomModeSet(char mode) -00082 { -00083 log(DEBUG,"Checking ISCustomModeSet: %c %s",mode,this->custom_modes); -00084 return (strchr(this->custom_modes,mode) != 0); -00085 } -00086 -00087 std::string chanrec::GetModeParameter(char mode) -00088 { -00089 if (custom_mode_params.size()) -00090 { -00091 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) -00092 { -00093 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) -00094 { -00095 return std::string(i->parameter); -00096 } -00097 } -00098 } -00099 return std::string(""); -00100 } -
00001 /* +------------------------------------+ +00002 * | Inspire Internet Relay Chat Daemon | +00003 * +------------------------------------+ +00004 * +00005 * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. +00006 * E-mail: +00007 * <brain@chatspike.net> +00008 * <Craig@chatspike.net> +00009 * +00010 * Written by Craig Edwards, Craig McLure, and others. +00011 * This program is free but copyrighted software; see +00012 * the file COPYING for details. +00013 * +00014 * --------------------------------------------------- +00015 */ +00016 +00017 #include "inspircd.h" +00018 #include "inspircd_io.h" +00019 #include "inspircd_util.h" +00020 #include "inspircd_config.h" +00021 #include <unistd.h> +00022 #include <fcntl.h> +00023 #include <sys/errno.h> +00024 #include <sys/ioctl.h> +00025 #include <sys/utsname.h> +00026 #include <cstdio> +00027 #include <time.h> +00028 #include <string> +00029 #ifdef GCC3 +00030 #include <ext/hash_map> +00031 #else +00032 #include <hash_map> +00033 #endif +00034 #include <map> +00035 #include <sstream> +00036 #include <vector> +00037 #include <errno.h> +00038 #include <deque> +00039 #include <errno.h> +00040 #include <unistd.h> +00041 #include <sched.h> +00042 #include "connection.h" +00043 #include "users.h" +00044 #include "servers.h" +00045 #include "ctables.h" +00046 #include "globals.h" +00047 #include "modules.h" +00048 #include "dynamic.h" +00049 #include "wildcard.h" +00050 #include "message.h" +00051 #include "mode.h" +00052 #include "xline.h" +00053 #include "inspstring.h" +00054 +00055 #ifdef GCC3 +00056 #define nspace __gnu_cxx +00057 #else +00058 #define nspace std +00059 #endif +00060 +00061 using namespace std; +00062 +00063 extern int MODCOUNT; +00064 extern std::vector<Module*> modules; +00065 extern std::vector<ircd_module*> factory; +00066 +00067 extern int LogLevel; +00068 extern char ServerName[MAXBUF]; +00069 extern char Network[MAXBUF]; +00070 extern char ServerDesc[MAXBUF]; +00071 extern char AdminName[MAXBUF]; +00072 extern char AdminEmail[MAXBUF]; +00073 extern char AdminNick[MAXBUF]; +00074 extern char diepass[MAXBUF]; +00075 extern char restartpass[MAXBUF]; +00076 extern char motd[MAXBUF]; +00077 extern char rules[MAXBUF]; +00078 extern char list[MAXBUF]; +00079 extern char PrefixQuit[MAXBUF]; +00080 extern char DieValue[MAXBUF]; +00081 +00082 extern int debugging; +00083 extern int WHOWAS_STALE; +00084 extern int WHOWAS_MAX; +00085 extern int DieDelay; +00086 extern time_t startup_time; +00087 extern int NetBufferSize; +00088 int MaxWhoResults; +00089 extern time_t nb_start; +00090 +00091 extern std::vector<int> fd_reap; +00092 extern std::vector<std::string> module_names; +00093 +00094 extern int boundPortCount; +00095 extern int portCount; +00096 extern int UDPportCount; +00097 extern int ports[MAXSOCKS]; +00098 extern int defaultRoute; +00099 +00100 extern std::vector<long> auth_cookies; +00101 extern std::stringstream config_f; +00102 +00103 extern serverrec* me[32]; +00104 +00105 extern FILE *log_file; +00106 +00107 extern time_t TIME; +00108 +00109 using namespace std; +00110 +00111 std::vector<ModeParameter> custom_mode_params; +00112 +00113 chanrec::chanrec() +00114 { +00115 strcpy(name,""); +00116 strcpy(custom_modes,""); +00117 strcpy(topic,""); +00118 strcpy(setby,""); +00119 strcpy(key,""); +00120 created = topicset = limit = users = 0; +00121 topiclock = noexternal = inviteonly = moderated = secret = c_private = false; +00122 internal_userlist.clear(); +00123 } +00124 +00125 void chanrec::SetCustomMode(char mode,bool mode_on) +00126 { +00127 if (mode_on) { +00128 char m[3]; +00129 m[0] = mode; +00130 m[1] = '\0'; +00131 if (!strchr(this->custom_modes,mode)) +00132 { +00133 strlcat(custom_modes,m,MAXMODES); +00134 } +00135 log(DEBUG,"Custom mode %c set",mode); +00136 } +00137 else { +00138 +00139 std::string a = this->custom_modes; +00140 int pos = a.find(mode); +00141 a.erase(pos,1); +00142 strncpy(this->custom_modes,a.c_str(),MAXMODES); +00143 +00144 log(DEBUG,"Custom mode %c removed: modelist='%s'",mode,this->custom_modes); +00145 this->SetCustomModeParam(mode,"",false); +00146 } +00147 } +00148 +00149 +00150 void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on) +00151 { +00152 +00153 log(DEBUG,"SetCustomModeParam called"); +00154 ModeParameter M; +00155 M.mode = mode; +00156 strlcpy(M.channel,this->name,CHANMAX); +00157 strlcpy(M.parameter,parameter,MAXBUF); +00158 if (mode_on) +00159 { +00160 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); +00161 custom_mode_params.push_back(M); +00162 } +00163 else +00164 { +00165 if (custom_mode_params.size()) +00166 { +00167 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) +00168 { +00169 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) +00170 { +00171 log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter); +00172 custom_mode_params.erase(i); +00173 return; +00174 } +00175 } +00176 } +00177 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!"); +00178 } +00179 } +00180 +00181 bool chanrec::IsCustomModeSet(char mode) +00182 { +00183 log(DEBUG,"Checking ISCustomModeSet: %c %s",mode,this->custom_modes); +00184 return (strchr(this->custom_modes,mode) != 0); +00185 } +00186 +00187 std::string chanrec::GetModeParameter(char mode) +00188 { +00189 if (custom_mode_params.size()) +00190 { +00191 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) +00192 { +00193 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) +00194 { +00195 return std::string(i->parameter); +00196 } +00197 } +00198 } +00199 return std::string(""); +00200 } +00201 +00202 void chanrec::IncUserCounter() +00203 { +00204 this->users++; +00205 log(DEBUG,"Incremented channel user count for %s to %lu",name,(unsigned long)users); +00206 } +00207 +00208 void chanrec::DecUserCounter() +00209 { +00210 if (this->users > 0) +00211 this->users--; +00212 log(DEBUG,"Decremented channel user count for %s to %lu",name,(unsigned long)users); +00213 } +00214 +00215 long chanrec::GetUserCounter() +00216 { +00217 return (this->users); +00218 } +00219 +00220 void chanrec::AddUser(char* castuser) +00221 { +00222 internal_userlist.push_back(castuser); +00223 log(DEBUG,"Added casted user to channel's internal list"); +00224 } +00225 +00226 void chanrec::DelUser(char* castuser) +00227 { +00228 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++) +00229 { +00230 if (*a == castuser) +00231 { +00232 log(DEBUG,"Removed casted user from channel's internal list"); +00233 internal_userlist.erase(a); +00234 return; +00235 } +00236 } +00237 log(DEBUG,"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!",name); +00238 } +00239 +00240 std::vector<char*> *chanrec::GetUsers() +00241 { +00242 return &internal_userlist; +00243 } +