From f326e475e311bf0fa211ccd052ba38d8235efa12 Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 1 Apr 2005 17:07:42 +0000 Subject: Updated documentation (html) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@937 e03df62e-2008-0410-955e-edbf42e46eb7 --- docs/module-doc/modules_8cpp-source.html | 1292 +++++++++++++++--------------- 1 file changed, 651 insertions(+), 641 deletions(-) (limited to 'docs/module-doc/modules_8cpp-source.html') diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html index fcf95d119..27f88fd1a 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -58,719 +58,729 @@ 00051 #include "mode.h" 00052 #include "xline.h" 00053 #include "commands.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 vector<Module*> modules; -00065 extern 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 extern 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 +00054 #include "inspstring.h" +00055 +00056 #ifdef GCC3 +00057 #define nspace __gnu_cxx +00058 #else +00059 #define nspace std +00060 #endif +00061 +00062 using namespace std; +00063 +00064 extern int MODCOUNT; +00065 extern std::vector<Module*> modules; +00066 extern std::vector<ircd_module*> factory; +00067 +00068 extern int LogLevel; +00069 extern char ServerName[MAXBUF]; +00070 extern char Network[MAXBUF]; +00071 extern char ServerDesc[MAXBUF]; +00072 extern char AdminName[MAXBUF]; +00073 extern char AdminEmail[MAXBUF]; +00074 extern char AdminNick[MAXBUF]; +00075 extern char diepass[MAXBUF]; +00076 extern char restartpass[MAXBUF]; +00077 extern char motd[MAXBUF]; +00078 extern char rules[MAXBUF]; +00079 extern char list[MAXBUF]; +00080 extern char PrefixQuit[MAXBUF]; +00081 extern char DieValue[MAXBUF]; +00082 +00083 extern int debugging; +00084 extern int WHOWAS_STALE; +00085 extern int WHOWAS_MAX; +00086 extern int DieDelay; +00087 extern time_t startup_time; +00088 extern int NetBufferSize; +00089 extern int MaxWhoResults; +00090 extern time_t nb_start; +00091 +00092 extern std::vector<int> fd_reap; +00093 extern std::vector<std::string> module_names; +00094 +00095 extern int boundPortCount; +00096 extern int portCount; +00097 extern int UDPportCount; +00098 extern int ports[MAXSOCKS]; +00099 extern int defaultRoute; +00100 +00101 extern std::vector<long> auth_cookies; +00102 extern std::stringstream config_f; +00103 +00104 extern serverrec* me[32]; +00105 +00106 extern FILE *log_file; 00107 -00108 namespace nspace -00109 { -00110 template<> struct nspace::hash<in_addr> -00111 { -00112 size_t operator()(const struct in_addr &a) const -00113 { -00114 size_t q; -00115 memcpy(&q,&a,sizeof(size_t)); -00116 return q; -00117 } -00118 }; -00119 -00120 template<> struct nspace::hash<string> -00121 { -00122 size_t operator()(const string &s) const -00123 { -00124 char a[MAXBUF]; -00125 static struct hash<const char *> strhash; -00126 strlcpy(a,s.c_str(),MAXBUF); -00127 strlower(a); -00128 return strhash(a); -00129 } -00130 }; -00131 } -00132 -00133 -00134 struct StrHashComp -00135 { -00136 -00137 bool operator()(const string& s1, const string& s2) const -00138 { -00139 char a[MAXBUF],b[MAXBUF]; -00140 strlcpy(a,s1.c_str(),MAXBUF); -00141 strlcpy(b,s2.c_str(),MAXBUF); -00142 return (strcasecmp(a,b) == 0); -00143 } -00144 -00145 }; -00146 -00147 struct InAddr_HashComp -00148 { -00149 -00150 bool operator()(const in_addr &s1, const in_addr &s2) const -00151 { -00152 size_t q; -00153 size_t p; -00154 -00155 memcpy(&q,&s1,sizeof(size_t)); -00156 memcpy(&p,&s2,sizeof(size_t)); -00157 -00158 return (q == p); -00159 } -00160 -00161 }; -00162 -00163 -00164 typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, StrHashComp> user_hash; -00165 typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, StrHashComp> chan_hash; -00166 typedef nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, InAddr_HashComp> address_cache; -00167 typedef std::deque<command_t> command_table; -00168 +00108 +00109 namespace nspace +00110 { +00111 #ifdef GCC34 +00112 template<> struct hash<in_addr> +00113 #else +00114 template<> struct nspace::hash<in_addr> +00115 #endif +00116 { +00117 size_t operator()(const struct in_addr &a) const +00118 { +00119 size_t q; +00120 memcpy(&q,&a,sizeof(size_t)); +00121 return q; +00122 } +00123 }; +00124 #ifdef GCC34 +00125 template<> struct hash<string> +00126 #else +00127 template<> struct nspace::hash<string> +00128 #endif +00129 { +00130 size_t operator()(const string &s) const +00131 { +00132 char a[MAXBUF]; +00133 static struct hash<const char *> strhash; +00134 strlcpy(a,s.c_str(),MAXBUF); +00135 strlower(a); +00136 return strhash(a); +00137 } +00138 }; +00139 } +00140 +00141 struct StrHashComp +00142 { +00143 +00144 bool operator()(const string& s1, const string& s2) const +00145 { +00146 char a[MAXBUF],b[MAXBUF]; +00147 strlcpy(a,s1.c_str(),MAXBUF); +00148 strlcpy(b,s2.c_str(),MAXBUF); +00149 return (strcasecmp(a,b) == 0); +00150 } +00151 +00152 }; +00153 +00154 struct InAddr_HashComp +00155 { +00156 +00157 bool operator()(const in_addr &s1, const in_addr &s2) const +00158 { +00159 size_t q; +00160 size_t p; +00161 +00162 memcpy(&q,&s1,sizeof(size_t)); +00163 memcpy(&p,&s2,sizeof(size_t)); +00164 +00165 return (q == p); +00166 } +00167 +00168 }; 00169 -00170 extern user_hash clientlist; -00171 extern chan_hash chanlist; -00172 extern user_hash whowas; -00173 extern command_table cmdlist; -00174 extern file_cache MOTD; -00175 extern file_cache RULES; -00176 extern address_cache IP; -00177 -00178 -00179 // class type for holding an extended mode character - internal to core -00180 -00181 class ExtMode : public classbase -00182 { -00183 public: -00184 char modechar; -00185 int type; -00186 int params_when_on; -00187 int params_when_off; -00188 bool needsoper; -00189 bool list; -00190 ExtMode(char mc, int ty, bool oper, int p_on, int p_off) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; -00191 }; -00192 -00193 typedef std::vector<ExtMode> ExtModeList; -00194 typedef ExtModeList::iterator ExtModeListIter; -00195 -00196 -00197 ExtModeList EMode; -00198 -00199 // returns true if an extended mode character is in use -00200 bool ModeDefined(char modechar, int type) -00201 { -00202 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); -00203 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00204 { -00205 if ((i->modechar == modechar) && (i->type == type)) -00206 { -00207 return true; -00208 } -00209 } -00210 return false; -00211 } -00212 -00213 bool ModeIsListMode(char modechar, int type) -00214 { -00215 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); -00216 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00217 { -00218 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) -00219 { -00220 return true; -00221 } -00222 } -00223 return false; -00224 } -00225 -00226 bool ModeDefinedOper(char modechar, int type) -00227 { -00228 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); -00229 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00230 { -00231 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) -00232 { -00233 return true; -00234 } -00235 } -00236 return false; -00237 } -00238 -00239 // returns number of parameters for a custom mode when it is switched on -00240 int ModeDefinedOn(char modechar, int type) -00241 { -00242 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00243 { -00244 if ((i->modechar == modechar) && (i->type == type)) -00245 { -00246 return i->params_when_on; -00247 } -00248 } -00249 return 0; -00250 } -00251 -00252 // returns number of parameters for a custom mode when it is switched on -00253 int ModeDefinedOff(char modechar, int type) -00254 { -00255 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00256 { -00257 if ((i->modechar == modechar) && (i->type == type)) -00258 { -00259 return i->params_when_off; -00260 } -00261 } -00262 return 0; -00263 } -00264 -00265 // returns true if an extended mode character is in use -00266 bool DoAddExtendedMode(char modechar, int type, bool requires_oper, int params_on, int params_off) -00267 { -00268 if (ModeDefined(modechar,type)) { -00269 return false; -00270 } -00271 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); -00272 return true; -00273 } -00274 -00275 // turns a mode into a listmode -00276 void ModeMakeList(char modechar) -00277 { -00278 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00279 { -00280 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) -00281 { -00282 i->list = true; -00283 return; -00284 } -00285 } -00286 return; -00287 } -00288 -00289 // version is a simple class for holding a modules version number -00290 -00291 Version::Version(int major, int minor, int revision, int build) : Major(major), Minor(minor), Revision(revision), Build(build) { }; -00292 -00293 // admin is a simple class for holding a server's administrative info -00294 -00295 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; -00296 -00297 Module::Module() { } -00298 Module::~Module() { } -00299 void Module::OnUserConnect(userrec* user) { } -00300 void Module::OnUserQuit(userrec* user) { } -00301 void Module::OnUserJoin(userrec* user, chanrec* channel) { } -00302 void Module::OnUserPart(userrec* user, chanrec* channel) { } -00303 void Module::OnPacketTransmit(char *p) { } -00304 void Module::OnPacketReceive(char *p) { } -00305 void Module::OnRehash() { } -00306 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { } -00307 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; } -00308 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params) { return false; } -00309 Version Module::GetVersion() { return Version(1,0,0,0); } -00310 void Module::OnOper(userrec* user) { }; -00311 void Module::OnInfo(userrec* user) { }; -00312 void Module::OnWhois(userrec* source, userrec* dest) { }; -00313 int Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; }; -00314 int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; -00315 int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; -00316 int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; }; -00317 int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; -00318 string_list Module::OnUserSync(userrec* user) { string_list empty; return empty; } -00319 string_list Module::OnChannelSync(chanrec* chan) { string_list empty; return empty; } -00320 -00321 -00322 // server is a wrapper class that provides methods to all of the C-style -00323 // exports in the core -00324 // -00325 -00326 Server::Server() -00327 { -00328 } -00329 -00330 Server::~Server() -00331 { -00332 } -00333 -00334 void Server::SendOpers(std::string s) -00335 { -00336 WriteOpers("%s",s.c_str()); -00337 } -00338 -00339 bool Server::MatchText(std::string sliteral, std::string spattern) -00340 { -00341 char literal[MAXBUF],pattern[MAXBUF]; -00342 strlcpy(literal,sliteral.c_str(),MAXBUF); -00343 strlcpy(pattern,spattern.c_str(),MAXBUF); -00344 return match(literal,pattern); -00345 } -00346 -00347 void Server::SendToModeMask(std::string modes, int flags, std::string text) -00348 { -00349 WriteMode(modes.c_str(),flags,"%s",text.c_str()); -00350 } -00351 -00352 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) -00353 { -00354 return add_channel(user,cname.c_str(),key.c_str(),true); +00170 +00171 typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, StrHashComp> user_hash; +00172 typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, StrHashComp> chan_hash; +00173 typedef nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, InAddr_HashComp> address_cache; +00174 typedef std::deque<command_t> command_table; +00175 +00176 +00177 extern user_hash clientlist; +00178 extern chan_hash chanlist; +00179 extern user_hash whowas; +00180 extern command_table cmdlist; +00181 extern file_cache MOTD; +00182 extern file_cache RULES; +00183 extern address_cache IP; +00184 +00185 +00186 // class type for holding an extended mode character - internal to core +00187 +00188 class ExtMode : public classbase +00189 { +00190 public: +00191 char modechar; +00192 int type; +00193 int params_when_on; +00194 int params_when_off; +00195 bool needsoper; +00196 bool list; +00197 ExtMode(char mc, int ty, bool oper, int p_on, int p_off) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; +00198 }; +00199 +00200 typedef std::vector<ExtMode> ExtModeList; +00201 typedef ExtModeList::iterator ExtModeListIter; +00202 +00203 +00204 ExtModeList EMode; +00205 +00206 // returns true if an extended mode character is in use +00207 bool ModeDefined(char modechar, int type) +00208 { +00209 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); +00210 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00211 { +00212 if ((i->modechar == modechar) && (i->type == type)) +00213 { +00214 return true; +00215 } +00216 } +00217 return false; +00218 } +00219 +00220 bool ModeIsListMode(char modechar, int type) +00221 { +00222 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); +00223 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00224 { +00225 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) +00226 { +00227 return true; +00228 } +00229 } +00230 return false; +00231 } +00232 +00233 bool ModeDefinedOper(char modechar, int type) +00234 { +00235 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); +00236 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00237 { +00238 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) +00239 { +00240 return true; +00241 } +00242 } +00243 return false; +00244 } +00245 +00246 // returns number of parameters for a custom mode when it is switched on +00247 int ModeDefinedOn(char modechar, int type) +00248 { +00249 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00250 { +00251 if ((i->modechar == modechar) && (i->type == type)) +00252 { +00253 return i->params_when_on; +00254 } +00255 } +00256 return 0; +00257 } +00258 +00259 // returns number of parameters for a custom mode when it is switched on +00260 int ModeDefinedOff(char modechar, int type) +00261 { +00262 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00263 { +00264 if ((i->modechar == modechar) && (i->type == type)) +00265 { +00266 return i->params_when_off; +00267 } +00268 } +00269 return 0; +00270 } +00271 +00272 // returns true if an extended mode character is in use +00273 bool DoAddExtendedMode(char modechar, int type, bool requires_oper, int params_on, int params_off) +00274 { +00275 if (ModeDefined(modechar,type)) { +00276 return false; +00277 } +00278 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); +00279 return true; +00280 } +00281 +00282 // turns a mode into a listmode +00283 void ModeMakeList(char modechar) +00284 { +00285 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00286 { +00287 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) +00288 { +00289 i->list = true; +00290 return; +00291 } +00292 } +00293 return; +00294 } +00295 +00296 // version is a simple class for holding a modules version number +00297 +00298 Version::Version(int major, int minor, int revision, int build) : Major(major), Minor(minor), Revision(revision), Build(build) { }; +00299 +00300 // admin is a simple class for holding a server's administrative info +00301 +00302 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; +00303 +00304 Module::Module() { } +00305 Module::~Module() { } +00306 void Module::OnUserConnect(userrec* user) { } +00307 void Module::OnUserQuit(userrec* user) { } +00308 void Module::OnUserJoin(userrec* user, chanrec* channel) { } +00309 void Module::OnUserPart(userrec* user, chanrec* channel) { } +00310 void Module::OnPacketTransmit(char *p) { } +00311 void Module::OnPacketReceive(char *p) { } +00312 void Module::OnRehash() { } +00313 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { } +00314 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; } +00315 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params) { return false; } +00316 Version Module::GetVersion() { return Version(1,0,0,0); } +00317 void Module::OnOper(userrec* user) { }; +00318 void Module::OnInfo(userrec* user) { }; +00319 void Module::OnWhois(userrec* source, userrec* dest) { }; +00320 int Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; }; +00321 int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; +00322 int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; +00323 int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; }; +00324 int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; +00325 string_list Module::OnUserSync(userrec* user) { string_list empty; return empty; } +00326 string_list Module::OnChannelSync(chanrec* chan) { string_list empty; return empty; } +00327 void Module::On005Numeric(std::string &output) { }; +00328 int Module::OnKill(userrec* source, userrec* dest, std::string reason) { return 0; }; +00329 void Module::OnLoadModule(Module* mod,std::string name) { }; +00330 +00331 +00332 // server is a wrapper class that provides methods to all of the C-style +00333 // exports in the core +00334 // +00335 +00336 Server::Server() +00337 { +00338 } +00339 +00340 Server::~Server() +00341 { +00342 } +00343 +00344 void Server::SendOpers(std::string s) +00345 { +00346 WriteOpers("%s",s.c_str()); +00347 } +00348 +00349 bool Server::MatchText(std::string sliteral, std::string spattern) +00350 { +00351 char literal[MAXBUF],pattern[MAXBUF]; +00352 strlcpy(literal,sliteral.c_str(),MAXBUF); +00353 strlcpy(pattern,spattern.c_str(),MAXBUF); +00354 return match(literal,pattern); 00355 } 00356 -00357 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) +00357 void Server::SendToModeMask(std::string modes, int flags, std::string text) 00358 { -00359 return del_channel(user,cname.c_str(),reason.c_str(),false); +00359 WriteMode(modes.c_str(),flags,"%s",text.c_str()); 00360 } 00361 -00362 chanuserlist Server::GetUsers(chanrec* chan) +00362 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) 00363 { -00364 chanuserlist userl; -00365 userl.clear(); -00366 for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++) -00367 { -00368 if (i->second) -00369 { -00370 if (has_channel(i->second,chan)) -00371 { -00372 if (isnick(i->second->nick)) -00373 { -00374 userl.push_back(i->second); -00375 } -00376 } -00377 } -00378 } -00379 return userl; -00380 } -00381 void Server::ChangeUserNick(userrec* user, std::string nickname) -00382 { -00383 force_nickchange(user,nickname.c_str()); -00384 } -00385 -00386 void Server::QuitUser(userrec* user, std::string reason) -00387 { -00388 send_network_quit(user->nick,reason.c_str()); -00389 kill_link(user,reason.c_str()); +00364 return add_channel(user,cname.c_str(),key.c_str(),true); +00365 } +00366 +00367 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) +00368 { +00369 return del_channel(user,cname.c_str(),reason.c_str(),false); +00370 } +00371 +00372 chanuserlist Server::GetUsers(chanrec* chan) +00373 { +00374 chanuserlist userl; +00375 userl.clear(); +00376 for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++) +00377 { +00378 if (i->second) +00379 { +00380 if (has_channel(i->second,chan)) +00381 { +00382 if (isnick(i->second->nick)) +00383 { +00384 userl.push_back(i->second); +00385 } +00386 } +00387 } +00388 } +00389 return userl; 00390 } -00391 -00392 bool Server::IsUlined(std::string server) -00393 { -00394 return is_uline(server.c_str()); -00395 } -00396 -00397 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) -00398 { -00399 call_handler(commandname.c_str(),parameters,pcnt,user); +00391 void Server::ChangeUserNick(userrec* user, std::string nickname) +00392 { +00393 force_nickchange(user,nickname.c_str()); +00394 } +00395 +00396 void Server::QuitUser(userrec* user, std::string reason) +00397 { +00398 send_network_quit(user->nick,reason.c_str()); +00399 kill_link(user,reason.c_str()); 00400 } 00401 -00402 void Server::Log(int level, std::string s) +00402 bool Server::IsUlined(std::string server) 00403 { -00404 log(level,"%s",s.c_str()); +00404 return is_uline(server.c_str()); 00405 } 00406 -00407 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams) +00407 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) 00408 { -00409 createcommand(cmd,f,flags,minparams); +00409 call_handler(commandname.c_str(),parameters,pcnt,user); 00410 } 00411 -00412 void Server::SendMode(char **parameters, int pcnt, userrec *user) +00412 void Server::Log(int level, std::string s) 00413 { -00414 server_mode(parameters,pcnt,user); +00414 log(level,"%s",s.c_str()); 00415 } 00416 -00417 void Server::Send(int Socket, std::string s) +00417 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams) 00418 { -00419 Write(Socket,"%s",s.c_str()); +00419 createcommand(cmd,f,flags,minparams); 00420 } 00421 -00422 void Server::SendServ(int Socket, std::string s) +00422 void Server::SendMode(char **parameters, int pcnt, userrec *user) 00423 { -00424 WriteServ(Socket,"%s",s.c_str()); +00424 server_mode(parameters,pcnt,user); 00425 } 00426 -00427 void Server::SendFrom(int Socket, userrec* User, std::string s) +00427 void Server::Send(int Socket, std::string s) 00428 { -00429 WriteFrom(Socket,User,"%s",s.c_str()); +00429 Write(Socket,"%s",s.c_str()); 00430 } 00431 -00432 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) +00432 void Server::SendServ(int Socket, std::string s) 00433 { -00434 if (!Source) -00435 { -00436 // if source is NULL, then the message originates from the local server -00437 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); -00438 } -00439 else -00440 { -00441 // otherwise it comes from the user specified -00442 WriteTo(Source,Dest,"%s",s.c_str()); -00443 } -00444 } -00445 -00446 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) -00447 { -00448 if (IncludeSender) -00449 { -00450 WriteChannel(Channel,User,"%s",s.c_str()); -00451 } -00452 else -00453 { -00454 ChanExceptSender(Channel,User,"%s",s.c_str()); -00455 } -00456 } -00457 -00458 bool Server::CommonChannels(userrec* u1, userrec* u2) -00459 { -00460 return (common_channels(u1,u2) != 0); -00461 } -00462 -00463 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) -00464 { -00465 if (IncludeSender) -00466 { -00467 WriteCommon(User,"%s",text.c_str()); -00468 } -00469 else -00470 { -00471 WriteCommonExcept(User,"%s",text.c_str()); -00472 } -00473 } -00474 -00475 void Server::SendWallops(userrec* User, std::string text) -00476 { -00477 WriteWallOps(User,false,"%s",text.c_str()); -00478 } -00479 -00480 void Server::ChangeHost(userrec* user, std::string host) -00481 { -00482 ChangeDisplayedHost(user,host.c_str()); +00434 WriteServ(Socket,"%s",s.c_str()); +00435 } +00436 +00437 void Server::SendFrom(int Socket, userrec* User, std::string s) +00438 { +00439 WriteFrom(Socket,User,"%s",s.c_str()); +00440 } +00441 +00442 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) +00443 { +00444 if (!Source) +00445 { +00446 // if source is NULL, then the message originates from the local server +00447 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); +00448 } +00449 else +00450 { +00451 // otherwise it comes from the user specified +00452 WriteTo(Source,Dest,"%s",s.c_str()); +00453 } +00454 } +00455 +00456 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) +00457 { +00458 if (IncludeSender) +00459 { +00460 WriteChannel(Channel,User,"%s",s.c_str()); +00461 } +00462 else +00463 { +00464 ChanExceptSender(Channel,User,"%s",s.c_str()); +00465 } +00466 } +00467 +00468 bool Server::CommonChannels(userrec* u1, userrec* u2) +00469 { +00470 return (common_channels(u1,u2) != 0); +00471 } +00472 +00473 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) +00474 { +00475 if (IncludeSender) +00476 { +00477 WriteCommon(User,"%s",text.c_str()); +00478 } +00479 else +00480 { +00481 WriteCommonExcept(User,"%s",text.c_str()); +00482 } 00483 } 00484 -00485 void Server::ChangeGECOS(userrec* user, std::string gecos) +00485 void Server::SendWallops(userrec* User, std::string text) 00486 { -00487 ChangeName(user,gecos.c_str()); +00487 WriteWallOps(User,false,"%s",text.c_str()); 00488 } 00489 -00490 bool Server::IsNick(std::string nick) +00490 void Server::ChangeHost(userrec* user, std::string host) 00491 { -00492 return (isnick(nick.c_str()) != 0); +00492 ChangeDisplayedHost(user,host.c_str()); 00493 } 00494 -00495 userrec* Server::FindNick(std::string nick) +00495 void Server::ChangeGECOS(userrec* user, std::string gecos) 00496 { -00497 return Find(nick); +00497 ChangeName(user,gecos.c_str()); 00498 } 00499 -00500 chanrec* Server::FindChannel(std::string channel) +00500 bool Server::IsNick(std::string nick) 00501 { -00502 return FindChan(channel.c_str()); +00502 return (isnick(nick.c_str()) != 0); 00503 } 00504 -00505 std::string Server::ChanMode(userrec* User, chanrec* Chan) +00505 userrec* Server::FindNick(std::string nick) 00506 { -00507 return cmode(User,Chan); +00507 return Find(nick); 00508 } 00509 -00510 bool Server::IsOnChannel(userrec* User, chanrec* Chan) +00510 chanrec* Server::FindChannel(std::string channel) 00511 { -00512 return has_channel(User,Chan); +00512 return FindChan(channel.c_str()); 00513 } 00514 -00515 std::string Server::GetServerName() +00515 std::string Server::ChanMode(userrec* User, chanrec* Chan) 00516 { -00517 return getservername(); +00517 return cmode(User,Chan); 00518 } 00519 -00520 std::string Server::GetNetworkName() +00520 bool Server::IsOnChannel(userrec* User, chanrec* Chan) 00521 { -00522 return getnetworkname(); +00522 return has_channel(User,Chan); 00523 } 00524 -00525 Admin Server::GetAdmin() +00525 std::string Server::GetServerName() 00526 { -00527 return Admin(getadminname(),getadminemail(),getadminnick()); +00527 return getservername(); 00528 } 00529 -00530 -00531 -00532 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) -00533 { -00534 if (type == MT_SERVER) -00535 { -00536 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); -00537 return false; -00538 } -00539 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) -00540 { -00541 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); -00542 return false; -00543 } -00544 if ((params_when_on>1) || (params_when_off>1)) +00530 std::string Server::GetNetworkName() +00531 { +00532 return getnetworkname(); +00533 } +00534 +00535 Admin Server::GetAdmin() +00536 { +00537 return Admin(getadminname(),getadminemail(),getadminnick()); +00538 } +00539 +00540 +00541 +00542 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) +00543 { +00544 if (type == MT_SERVER) 00545 { -00546 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); +00546 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); 00547 return false; 00548 } -00549 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); -00550 } -00551 -00552 bool Server::AddExtendedListMode(char modechar) -00553 { -00554 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); -00555 if (res) -00556 ModeMakeList(modechar); -00557 return res; -00558 } -00559 -00560 int Server::CountUsers(chanrec* c) -00561 { -00562 return usercount(c); -00563 } -00564 -00565 -00566 ConfigReader::ConfigReader() -00567 { -00568 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00569 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -00570 this->readerror = LoadConf(CONFIG_FILE,this->cache,this->errorlog); -00571 if (!this->readerror) -00572 this->error = CONF_FILE_NOT_FOUND; +00549 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) +00550 { +00551 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); +00552 return false; +00553 } +00554 if ((params_when_on>1) || (params_when_off>1)) +00555 { +00556 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); +00557 return false; +00558 } +00559 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); +00560 } +00561 +00562 bool Server::AddExtendedListMode(char modechar) +00563 { +00564 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); +00565 if (res) +00566 ModeMakeList(modechar); +00567 return res; +00568 } +00569 +00570 int Server::CountUsers(chanrec* c) +00571 { +00572 return usercount(c); 00573 } 00574 00575 -00576 ConfigReader::~ConfigReader() +00576 ConfigReader::ConfigReader() 00577 { -00578 if (this->cache) -00579 delete this->cache; -00580 if (this->errorlog) -00581 delete this->errorlog; -00582 } -00583 +00578 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00579 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +00580 this->readerror = LoadConf(CONFIG_FILE,this->cache,this->errorlog); +00581 if (!this->readerror) +00582 this->error = CONF_FILE_NOT_FOUND; +00583 } 00584 -00585 ConfigReader::ConfigReader(std::string filename) -00586 { -00587 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00588 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -00589 this->readerror = LoadConf(filename.c_str(),this->cache,this->errorlog); -00590 if (!this->readerror) -00591 this->error = CONF_FILE_NOT_FOUND; -00592 }; +00585 +00586 ConfigReader::~ConfigReader() +00587 { +00588 if (this->cache) +00589 delete this->cache; +00590 if (this->errorlog) +00591 delete this->errorlog; +00592 } 00593 -00594 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) -00595 { -00596 char val[MAXBUF]; -00597 char t[MAXBUF]; -00598 char n[MAXBUF]; -00599 strlcpy(t,tag.c_str(),MAXBUF); -00600 strlcpy(n,name.c_str(),MAXBUF); -00601 int res = ReadConf(cache,t,n,index,val); -00602 if (!res) -00603 { -00604 this->error = CONF_VALUE_NOT_FOUND; -00605 return ""; -00606 } -00607 return std::string(val); -00608 } -00609 -00610 bool ConfigReader::ReadFlag(std::string tag, std::string name, int index) -00611 { -00612 char val[MAXBUF]; -00613 char t[MAXBUF]; -00614 char n[MAXBUF]; -00615 strlcpy(t,tag.c_str(),MAXBUF); -00616 strlcpy(n,name.c_str(),MAXBUF); -00617 int res = ReadConf(cache,t,n,index,val); -00618 if (!res) -00619 { -00620 this->error = CONF_VALUE_NOT_FOUND; -00621 return false; -00622 } -00623 std::string s = val; -00624 return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1")); -00625 } -00626 -00627 long ConfigReader::ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned) -00628 { -00629 char val[MAXBUF]; -00630 char t[MAXBUF]; -00631 char n[MAXBUF]; -00632 strlcpy(t,tag.c_str(),MAXBUF); -00633 strlcpy(n,name.c_str(),MAXBUF); -00634 int res = ReadConf(cache,t,n,index,val); -00635 if (!res) -00636 { -00637 this->error = CONF_VALUE_NOT_FOUND; -00638 return 0; -00639 } -00640 for (int i = 0; i < strlen(val); i++) -00641 { -00642 if (!isdigit(val[i])) -00643 { -00644 this->error = CONF_NOT_A_NUMBER; -00645 return 0; -00646 } -00647 } -00648 if ((needs_unsigned) && (atoi(val)<0)) -00649 { -00650 this->error = CONF_NOT_UNSIGNED; -00651 return 0; -00652 } -00653 return atoi(val); -00654 } -00655 -00656 long ConfigReader::GetError() -00657 { -00658 long olderr = this->error; -00659 this->error = 0; -00660 return olderr; -00661 } -00662 -00663 void ConfigReader::DumpErrors(bool bail, userrec* user) -00664 { -00665 if (bail) -00666 { -00667 printf("There were errors in your configuration:\n%s",errorlog->str().c_str()); -00668 exit(0); -00669 } -00670 else -00671 { -00672 char dataline[1024]; -00673 if (user) -00674 { -00675 WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick); -00676 while (!errorlog->eof()) -00677 { -00678 errorlog->getline(dataline,1024); -00679 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline); -00680 } -00681 } -00682 else -00683 { -00684 WriteOpers("There were errors in the configuration file:",user->nick); -00685 while (!errorlog->eof()) -00686 { -00687 errorlog->getline(dataline,1024); -00688 WriteOpers(dataline); -00689 } -00690 } -00691 return; -00692 } -00693 } -00694 -00695 -00696 int ConfigReader::Enumerate(std::string tag) -00697 { -00698 return EnumConf(cache,tag.c_str()); -00699 } -00700 -00701 int ConfigReader::EnumerateValues(std::string tag, int index) -00702 { -00703 return EnumValues(cache, tag.c_str(), index); -00704 } +00594 +00595 ConfigReader::ConfigReader(std::string filename) +00596 { +00597 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00598 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +00599 this->readerror = LoadConf(filename.c_str(),this->cache,this->errorlog); +00600 if (!this->readerror) +00601 this->error = CONF_FILE_NOT_FOUND; +00602 }; +00603 +00604 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) +00605 { +00606 char val[MAXBUF]; +00607 char t[MAXBUF]; +00608 char n[MAXBUF]; +00609 strlcpy(t,tag.c_str(),MAXBUF); +00610 strlcpy(n,name.c_str(),MAXBUF); +00611 int res = ReadConf(cache,t,n,index,val); +00612 if (!res) +00613 { +00614 this->error = CONF_VALUE_NOT_FOUND; +00615 return ""; +00616 } +00617 return std::string(val); +00618 } +00619 +00620 bool ConfigReader::ReadFlag(std::string tag, std::string name, int index) +00621 { +00622 char val[MAXBUF]; +00623 char t[MAXBUF]; +00624 char n[MAXBUF]; +00625 strlcpy(t,tag.c_str(),MAXBUF); +00626 strlcpy(n,name.c_str(),MAXBUF); +00627 int res = ReadConf(cache,t,n,index,val); +00628 if (!res) +00629 { +00630 this->error = CONF_VALUE_NOT_FOUND; +00631 return false; +00632 } +00633 std::string s = val; +00634 return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1")); +00635 } +00636 +00637 long ConfigReader::ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned) +00638 { +00639 char val[MAXBUF]; +00640 char t[MAXBUF]; +00641 char n[MAXBUF]; +00642 strlcpy(t,tag.c_str(),MAXBUF); +00643 strlcpy(n,name.c_str(),MAXBUF); +00644 int res = ReadConf(cache,t,n,index,val); +00645 if (!res) +00646 { +00647 this->error = CONF_VALUE_NOT_FOUND; +00648 return 0; +00649 } +00650 for (int i = 0; i < strlen(val); i++) +00651 { +00652 if (!isdigit(val[i])) +00653 { +00654 this->error = CONF_NOT_A_NUMBER; +00655 return 0; +00656 } +00657 } +00658 if ((needs_unsigned) && (atoi(val)<0)) +00659 { +00660 this->error = CONF_NOT_UNSIGNED; +00661 return 0; +00662 } +00663 return atoi(val); +00664 } +00665 +00666 long ConfigReader::GetError() +00667 { +00668 long olderr = this->error; +00669 this->error = 0; +00670 return olderr; +00671 } +00672 +00673 void ConfigReader::DumpErrors(bool bail, userrec* user) +00674 { +00675 if (bail) +00676 { +00677 printf("There were errors in your configuration:\n%s",errorlog->str().c_str()); +00678 exit(0); +00679 } +00680 else +00681 { +00682 char dataline[1024]; +00683 if (user) +00684 { +00685 WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick); +00686 while (!errorlog->eof()) +00687 { +00688 errorlog->getline(dataline,1024); +00689 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline); +00690 } +00691 } +00692 else +00693 { +00694 WriteOpers("There were errors in the configuration file:",user->nick); +00695 while (!errorlog->eof()) +00696 { +00697 errorlog->getline(dataline,1024); +00698 WriteOpers(dataline); +00699 } +00700 } +00701 return; +00702 } +00703 } +00704 00705 -00706 bool ConfigReader::Verify() +00706 int ConfigReader::Enumerate(std::string tag) 00707 { -00708 return this->readerror; +00708 return EnumConf(cache,tag.c_str()); 00709 } 00710 -00711 -00712 FileReader::FileReader(std::string filename) -00713 { -00714 file_cache c; -00715 readfile(c,filename.c_str()); -00716 this->fc = c; -00717 } -00718 -00719 FileReader::FileReader() -00720 { -00721 } -00722 -00723 void FileReader::LoadFile(std::string filename) -00724 { -00725 file_cache c; -00726 readfile(c,filename.c_str()); -00727 this->fc = c; -00728 } -00729 -00730 -00731 FileReader::~FileReader() -00732 { -00733 } -00734 -00735 bool FileReader::Exists() -00736 { -00737 if (fc.size() == 0) -00738 { -00739 return(false); -00740 } -00741 else -00742 { -00743 return(true); -00744 } -00745 } -00746 -00747 std::string FileReader::GetLine(int x) -00748 { -00749 if ((x<0) || (x>fc.size())) -00750 return ""; -00751 return fc[x]; -00752 } -00753 -00754 int FileReader::FileSize() -00755 { -00756 return fc.size(); -00757 } -00758 -00759 -00760 std::vector<Module*> modules(255); -00761 std::vector<ircd_module*> factory(255); -00762 -00763 int MODCOUNT = -1; -00764 -00765 -
Generated on Fri Mar 25 03:49:28 2005 for InspIRCd by +00711 int ConfigReader::EnumerateValues(std::string tag, int index) +00712 { +00713 return EnumValues(cache, tag.c_str(), index); +00714 } +00715 +00716 bool ConfigReader::Verify() +00717 { +00718 return this->readerror; +00719 } +00720 +00721 +00722 FileReader::FileReader(std::string filename) +00723 { +00724 file_cache c; +00725 readfile(c,filename.c_str()); +00726 this->fc = c; +00727 } +00728 +00729 FileReader::FileReader() +00730 { +00731 } +00732 +00733 void FileReader::LoadFile(std::string filename) +00734 { +00735 file_cache c; +00736 readfile(c,filename.c_str()); +00737 this->fc = c; +00738 } +00739 +00740 +00741 FileReader::~FileReader() +00742 { +00743 } +00744 +00745 bool FileReader::Exists() +00746 { +00747 if (fc.size() == 0) +00748 { +00749 return(false); +00750 } +00751 else +00752 { +00753 return(true); +00754 } +00755 } +00756 +00757 std::string FileReader::GetLine(int x) +00758 { +00759 if ((x<0) || (x>fc.size())) +00760 return ""; +00761 return fc[x]; +00762 } +00763 +00764 int FileReader::FileSize() +00765 { +00766 return fc.size(); +00767 } +00768 +00769 +00770 std::vector<Module*> modules(255); +00771 std::vector<ircd_module*> factory(255); +00772 +00773 int MODCOUNT = -1; +00774 +00775 +
Generated on Mon Mar 28 21:09:25 2005 for InspIRCd by doxygen 1.3.3
-- cgit v1.3.1-10-gc9f91