From 877a15fc3db18be9131c886720516eae6f582886 Mon Sep 17 00:00:00 2001 From: brain Date: Sat, 1 May 2004 16:54:50 +0000 Subject: Added extra docs to cover OnUserSync etc git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@769 e03df62e-2008-0410-955e-edbf42e46eb7 --- docs/module-doc/modules_8cpp-source.html | 1082 +++++++++++++++++------------- 1 file changed, 625 insertions(+), 457 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 7d63ff9d7..5d6a33b5e 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -6,493 +6,661 @@
00001 /* -00002 -00003 -00004 */ -00005 -00006 -00007 -00008 #include <typeinfo> -00009 #include <iostream> -00010 #include "globals.h" -00011 #include "modules.h" -00012 #include "ctables.h" -00013 #include "inspircd_io.h" -00014 #include "wildcard.h" -00015 #include "mode.h" -00016 #include "message.h" -00017 #include "commands.h" -00018 -00019 // class type for holding an extended mode character - internal to core -00020 -00021 class ExtMode : public classbase -00022 { -00023 public: -00024 char modechar; -00025 int type; -00026 int params_when_on; -00027 int params_when_off; -00028 bool needsoper; -00029 bool list; -00030 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) { }; -00031 }; -00032 -00033 typedef std::vector<ExtMode> ExtModeList; -00034 typedef ExtModeList::iterator ExtModeListIter; -00035 -00036 ExtModeList EMode; -00037 -00038 // returns true if an extended mode character is in use -00039 bool ModeDefined(char modechar, int type) -00040 { -00041 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); -00042 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00043 { -00044 log(DEBUG,"i->modechar==%c, modechar=%c, i->type=%d, type=%d",i->modechar,modechar,i->type,type); -00045 if ((i->modechar == modechar) && (i->type == type)) -00046 { -00047 return true; -00048 } -00049 } -00050 return false; -00051 } -00052 -00053 bool ModeIsListMode(char modechar, int type) -00054 { -00055 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); -00056 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00057 { -00058 log(DEBUG,"i->modechar==%c, modechar=%c, i->type=%d, type=%d",i->modechar,modechar,i->type,type); -00059 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) -00060 { -00061 return true; -00062 } -00063 } -00064 return false; -00065 } -00066 -00067 bool ModeDefinedOper(char modechar, int type) -00068 { -00069 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); -00070 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00071 { -00072 log(DEBUG,"i->modechar==%c, modechar=%c, i->type=%d, type=%d",i->modechar,modechar,i->type,type); -00073 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) -00074 { -00075 return true; -00076 } -00077 } -00078 return false; -00079 } -00080 -00081 // returns number of parameters for a custom mode when it is switched on -00082 int ModeDefinedOn(char modechar, int type) -00083 { -00084 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00085 { -00086 if ((i->modechar == modechar) && (i->type == type)) -00087 { -00088 return i->params_when_on; -00089 } -00090 } -00091 return 0; -00092 } -00093 -00094 // returns number of parameters for a custom mode when it is switched on -00095 int ModeDefinedOff(char modechar, int type) -00096 { -00097 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00098 { -00099 if ((i->modechar == modechar) && (i->type == type)) -00100 { -00101 return i->params_when_off; +modules.cpp
Go to the documentation of this file.00001 #include "inspircd.h" +00002 #include "inspircd_io.h" +00003 #include "inspircd_util.h" +00004 #include "inspircd_config.h" +00005 #include <unistd.h> +00006 #include <fcntl.h> +00007 #include <sys/errno.h> +00008 #include <sys/ioctl.h> +00009 #include <sys/utsname.h> +00010 #include <cstdio> +00011 #include <time.h> +00012 #include <string> +00013 #ifdef GCC3 +00014 #include <ext/hash_map> +00015 #else +00016 #include <hash_map> +00017 #endif +00018 #include <map> +00019 #include <sstream> +00020 #include <vector> +00021 #include <errno.h> +00022 #include <deque> +00023 #include <errno.h> +00024 #include <unistd.h> +00025 #include <sched.h> +00026 #include "connection.h" +00027 #include "users.h" +00028 #include "servers.h" +00029 #include "ctables.h" +00030 #include "globals.h" +00031 #include "modules.h" +00032 #include "dynamic.h" +00033 #include "wildcard.h" +00034 #include "message.h" +00035 #include "mode.h" +00036 #include "xline.h" +00037 #include "commands.h" +00038 +00039 #ifdef GCC3 +00040 #define nspace __gnu_cxx +00041 #else +00042 #define nspace std +00043 #endif +00044 +00045 using namespace std; +00046 +00047 extern int MODCOUNT; +00048 extern vector<Module*> modules; +00049 extern vector<ircd_module*> factory; +00050 +00051 extern int LogLevel; +00052 extern char ServerName[MAXBUF]; +00053 extern char Network[MAXBUF]; +00054 extern char ServerDesc[MAXBUF]; +00055 extern char AdminName[MAXBUF]; +00056 extern char AdminEmail[MAXBUF]; +00057 extern char AdminNick[MAXBUF]; +00058 extern char diepass[MAXBUF]; +00059 extern char restartpass[MAXBUF]; +00060 extern char motd[MAXBUF]; +00061 extern char rules[MAXBUF]; +00062 extern char list[MAXBUF]; +00063 extern char PrefixQuit[MAXBUF]; +00064 extern char DieValue[MAXBUF]; +00065 +00066 extern int debugging; +00067 extern int WHOWAS_STALE; +00068 extern int WHOWAS_MAX; +00069 extern int DieDelay; +00070 extern time_t startup_time; +00071 extern int NetBufferSize; +00072 extern int MaxWhoResults; +00073 extern time_t nb_start; +00074 +00075 extern std::vector<int> fd_reap; +00076 extern std::vector<std::string> module_names; +00077 +00078 extern char bannerBuffer[MAXBUF]; +00079 extern int boundPortCount; +00080 extern int portCount; +00081 extern int UDPportCount; +00082 extern int ports[MAXSOCKS]; +00083 extern int defaultRoute; +00084 +00085 extern std::vector<long> auth_cookies; +00086 extern std::stringstream config_f; +00087 +00088 extern serverrec* me[32]; +00089 +00090 extern FILE *log_file; +00091 +00092 +00093 namespace nspace +00094 { +00095 template<> struct nspace::hash<in_addr> +00096 { +00097 size_t operator()(const struct in_addr &a) const +00098 { +00099 size_t q; +00100 memcpy(&q,&a,sizeof(size_t)); +00101 return q; 00102 } -00103 } -00104 return 0; -00105 } -00106 -00107 // returns true if an extended mode character is in use -00108 bool DoAddExtendedMode(char modechar, int type, bool requires_oper, int params_on, int params_off) -00109 { -00110 if (ModeDefined(modechar,type)) { -00111 return false; -00112 } -00113 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); -00114 return true; -00115 } -00116 -00117 // turns a mode into a listmode -00118 void ModeMakeList(char modechar) -00119 { -00120 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00121 { -00122 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) -00123 { -00124 i->list = true; -00125 return; -00126 } -00127 } -00128 return; -00129 } -00130 -00131 // version is a simple class for holding a modules version number -00132 -00133 Version::Version(int major, int minor, int revision, int build) : Major(major), Minor(minor), Revision(revision), Build(build) { }; +00103 }; +00104 +00105 template<> struct nspace::hash<string> +00106 { +00107 size_t operator()(const string &s) const +00108 { +00109 char a[MAXBUF]; +00110 static struct hash<const char *> strhash; +00111 strcpy(a,s.c_str()); +00112 strlower(a); +00113 return strhash(a); +00114 } +00115 }; +00116 } +00117 +00118 +00119 struct StrHashComp +00120 { +00121 +00122 bool operator()(const string& s1, const string& s2) const +00123 { +00124 char a[MAXBUF],b[MAXBUF]; +00125 strcpy(a,s1.c_str()); +00126 strcpy(b,s2.c_str()); +00127 return (strcasecmp(a,b) == 0); +00128 } +00129 +00130 }; +00131 +00132 struct InAddr_HashComp +00133 { 00134 -00135 // admin is a simple class for holding a server's administrative info -00136 -00137 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; -00138 -00139 Module::Module() { } -00140 Module::~Module() { } -00141 void Module::OnUserConnect(userrec* user) { } -00142 void Module::OnUserQuit(userrec* user) { } -00143 void Module::OnUserJoin(userrec* user, chanrec* channel) { } -00144 void Module::OnUserPart(userrec* user, chanrec* channel) { } -00145 void Module::OnPacketTransmit(char *p) { } -00146 void Module::OnPacketReceive(char *p) { } -00147 void Module::OnRehash() { } -00148 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { } -00149 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; } -00150 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list ¶ms) { return false; } -00151 Version Module::GetVersion() { return Version(1,0,0,0); } -00152 void Module::OnOper(userrec* user) { }; -00153 void Module::OnInfo(userrec* user) { }; -00154 void Module::OnWhois(userrec* source, userrec* dest) { }; -00155 int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string text) { return 0; }; -00156 int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string text) { return 0; }; -00157 int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; }; -00158 int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; -00159 -00160 // server is a wrapper class that provides methods to all of the C-style -00161 // exports in the core -00162 // +00135 bool operator()(const in_addr &s1, const in_addr &s2) const +00136 { +00137 size_t q; +00138 size_t p; +00139 +00140 memcpy(&q,&s1,sizeof(size_t)); +00141 memcpy(&p,&s2,sizeof(size_t)); +00142 +00143 return (q == p); +00144 } +00145 +00146 }; +00147 +00148 +00149 typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, StrHashComp> user_hash; +00150 typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, StrHashComp> chan_hash; +00151 typedef nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, InAddr_HashComp> address_cache; +00152 typedef std::deque<command_t> command_table; +00153 +00154 +00155 extern user_hash clientlist; +00156 extern chan_hash chanlist; +00157 extern user_hash whowas; +00158 extern command_table cmdlist; +00159 extern file_cache MOTD; +00160 extern file_cache RULES; +00161 extern address_cache IP; +00162 00163 -00164 Server::Server() -00165 { -00166 } -00167 -00168 Server::~Server() -00169 { -00170 } -00171 -00172 void Server::SendOpers(std::string s) -00173 { -00174 WriteOpers("%s",s.c_str()); -00175 } -00176 -00177 bool Server::MatchText(std::string sliteral, std::string spattern) -00178 { -00179 char literal[MAXBUF],pattern[MAXBUF]; -00180 strncpy(literal,sliteral.c_str(),MAXBUF); -00181 strncpy(pattern,spattern.c_str(),MAXBUF); -00182 return match(literal,pattern); -00183 } -00184 -00185 void Server::SendToModeMask(std::string modes, int flags, std::string text) +00164 // class type for holding an extended mode character - internal to core +00165 +00166 class ExtMode : public classbase +00167 { +00168 public: +00169 char modechar; +00170 int type; +00171 int params_when_on; +00172 int params_when_off; +00173 bool needsoper; +00174 bool list; +00175 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) { }; +00176 }; +00177 +00178 typedef std::vector<ExtMode> ExtModeList; +00179 typedef ExtModeList::iterator ExtModeListIter; +00180 +00181 +00182 ExtModeList EMode; +00183 +00184 // returns true if an extended mode character is in use +00185 bool ModeDefined(char modechar, int type) 00186 { -00187 WriteMode(modes.c_str(),flags,"%s",text.c_str()); -00188 } -00189 -00190 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) -00191 { -00192 return add_channel(user,cname.c_str(),key.c_str(),true); -00193 } -00194 -00195 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) -00196 { -00197 return del_channel(user,cname.c_str(),reason.c_str(),false); -00198 } -00199 -00200 void Server::ChangeUserNick(userrec* user, std::string nickname) -00201 { -00202 force_nickchange(user,nickname.c_str()); -00203 } -00204 -00205 void Server::QuitUser(userrec* user, std::string reason) -00206 { -00207 send_network_quit(user->nick,reason.c_str()); -00208 kill_link(user,reason.c_str()); -00209 } -00210 -00211 bool Server::IsUlined(std::string server) -00212 { -00213 return is_uline(server.c_str()); -00214 } -00215 -00216 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) -00217 { -00218 call_handler(commandname.c_str(),parameters,pcnt,user); -00219 } -00220 -00221 void Server::Log(int level, std::string s) -00222 { -00223 log(level,"%s",s.c_str()); -00224 } -00225 -00226 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams) -00227 { -00228 createcommand(cmd,f,flags,minparams); -00229 } -00230 -00231 void Server::SendMode(char **parameters, int pcnt, userrec *user) -00232 { -00233 server_mode(parameters,pcnt,user); -00234 } -00235 -00236 void Server::Send(int Socket, std::string s) -00237 { -00238 Write(Socket,"%s",s.c_str()); -00239 } -00240 -00241 void Server::SendServ(int Socket, std::string s) +00187 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); +00188 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00189 { +00190 log(DEBUG,"i->modechar==%c, modechar=%c, i->type=%d, type=%d",i->modechar,modechar,i->type,type); +00191 if ((i->modechar == modechar) && (i->type == type)) +00192 { +00193 return true; +00194 } +00195 } +00196 return false; +00197 } +00198 +00199 bool ModeIsListMode(char modechar, int type) +00200 { +00201 log(DEBUG,"Size of extmodes vector is %d",EMode.size()); +00202 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00203 { +00204 log(DEBUG,"i->modechar==%c, modechar=%c, i->type=%d, type=%d",i->modechar,modechar,i->type,type); +00205 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) +00206 { +00207 return true; +00208 } +00209 } +00210 return false; +00211 } +00212 +00213 bool ModeDefinedOper(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 log(DEBUG,"i->modechar==%c, modechar=%c, i->type=%d, type=%d",i->modechar,modechar,i->type,type); +00219 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) +00220 { +00221 return true; +00222 } +00223 } +00224 return false; +00225 } +00226 +00227 // returns number of parameters for a custom mode when it is switched on +00228 int ModeDefinedOn(char modechar, int type) +00229 { +00230 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00231 { +00232 if ((i->modechar == modechar) && (i->type == type)) +00233 { +00234 return i->params_when_on; +00235 } +00236 } +00237 return 0; +00238 } +00239 +00240 // returns number of parameters for a custom mode when it is switched on +00241 int ModeDefinedOff(char modechar, int type) 00242 { -00243 WriteServ(Socket,"%s",s.c_str()); -00244 } -00245 -00246 void Server::SendFrom(int Socket, userrec* User, std::string s) -00247 { -00248 WriteFrom(Socket,User,"%s",s.c_str()); -00249 } -00250 -00251 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) -00252 { -00253 if (!Source) -00254 { -00255 // if source is NULL, then the message originates from the local server -00256 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); -00257 } -00258 else -00259 { -00260 // otherwise it comes from the user specified -00261 WriteTo(Source,Dest,"%s",s.c_str()); -00262 } -00263 } -00264 -00265 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) -00266 { -00267 if (IncludeSender) -00268 { -00269 WriteChannel(Channel,User,"%s",s.c_str()); -00270 } -00271 else -00272 { -00273 ChanExceptSender(Channel,User,"%s",s.c_str()); -00274 } +00243 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00244 { +00245 if ((i->modechar == modechar) && (i->type == type)) +00246 { +00247 return i->params_when_off; +00248 } +00249 } +00250 return 0; +00251 } +00252 +00253 // returns true if an extended mode character is in use +00254 bool DoAddExtendedMode(char modechar, int type, bool requires_oper, int params_on, int params_off) +00255 { +00256 if (ModeDefined(modechar,type)) { +00257 return false; +00258 } +00259 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); +00260 return true; +00261 } +00262 +00263 // turns a mode into a listmode +00264 void ModeMakeList(char modechar) +00265 { +00266 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00267 { +00268 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) +00269 { +00270 i->list = true; +00271 return; +00272 } +00273 } +00274 return; 00275 } 00276 -00277 bool Server::CommonChannels(userrec* u1, userrec* u2) -00278 { -00279 return (common_channels(u1,u2) != 0); -00280 } -00281 -00282 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) -00283 { -00284 if (IncludeSender) -00285 { -00286 WriteCommon(User,"%s",text.c_str()); -00287 } -00288 else -00289 { -00290 WriteCommonExcept(User,"%s",text.c_str()); -00291 } -00292 } -00293 -00294 void Server::SendWallops(userrec* User, std::string text) -00295 { -00296 WriteWallOps(User,false,"%s",text.c_str()); -00297 } -00298 -00299 void Server::ChangeHost(userrec* user, std::string host) -00300 { -00301 ChangeDisplayedHost(user,host.c_str()); -00302 } -00303 -00304 void Server::ChangeGECOS(userrec* user, std::string gecos) -00305 { -00306 ChangeName(user,gecos.c_str()); -00307 } +00277 // version is a simple class for holding a modules version number +00278 +00279 Version::Version(int major, int minor, int revision, int build) : Major(major), Minor(minor), Revision(revision), Build(build) { }; +00280 +00281 // admin is a simple class for holding a server's administrative info +00282 +00283 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; +00284 +00285 Module::Module() { } +00286 Module::~Module() { } +00287 void Module::OnUserConnect(userrec* user) { } +00288 void Module::OnUserQuit(userrec* user) { } +00289 void Module::OnUserJoin(userrec* user, chanrec* channel) { } +00290 void Module::OnUserPart(userrec* user, chanrec* channel) { } +00291 void Module::OnPacketTransmit(char *p) { } +00292 void Module::OnPacketReceive(char *p) { } +00293 void Module::OnRehash() { } +00294 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { } +00295 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; } +00296 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list ¶ms) { return false; } +00297 Version Module::GetVersion() { return Version(1,0,0,0); } +00298 void Module::OnOper(userrec* user) { }; +00299 void Module::OnInfo(userrec* user) { }; +00300 void Module::OnWhois(userrec* source, userrec* dest) { }; +00301 int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string text) { return 0; }; +00302 int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string text) { return 0; }; +00303 int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; }; +00304 int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; +00305 string_list Module::OnUserSync(userrec* user) { string_list empty; return empty; } +00306 string_list Module::OnChannelSync(chanrec* chan) { string_list empty; return empty; } +00307 00308 -00309 bool Server::IsNick(std::string nick) -00310 { -00311 return (isnick(nick.c_str()) != 0); -00312 } -00313 -00314 userrec* Server::FindNick(std::string nick) -00315 { -00316 return Find(nick); -00317 } -00318 -00319 chanrec* Server::FindChannel(std::string channel) -00320 { -00321 return FindChan(channel.c_str()); -00322 } -00323 -00324 std::string Server::ChanMode(userrec* User, chanrec* Chan) -00325 { -00326 return cmode(User,Chan); -00327 } -00328 -00329 bool Server::IsOnChannel(userrec* User, chanrec* Chan) -00330 { -00331 return has_channel(User,Chan); +00309 // server is a wrapper class that provides methods to all of the C-style +00310 // exports in the core +00311 // +00312 +00313 Server::Server() +00314 { +00315 } +00316 +00317 Server::~Server() +00318 { +00319 } +00320 +00321 void Server::SendOpers(std::string s) +00322 { +00323 WriteOpers("%s",s.c_str()); +00324 } +00325 +00326 bool Server::MatchText(std::string sliteral, std::string spattern) +00327 { +00328 char literal[MAXBUF],pattern[MAXBUF]; +00329 strncpy(literal,sliteral.c_str(),MAXBUF); +00330 strncpy(pattern,spattern.c_str(),MAXBUF); +00331 return match(literal,pattern); 00332 } 00333 -00334 std::string Server::GetServerName() +00334 void Server::SendToModeMask(std::string modes, int flags, std::string text) 00335 { -00336 return getservername(); +00336 WriteMode(modes.c_str(),flags,"%s",text.c_str()); 00337 } 00338 -00339 std::string Server::GetNetworkName() +00339 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) 00340 { -00341 return getnetworkname(); +00341 return add_channel(user,cname.c_str(),key.c_str(),true); 00342 } 00343 -00344 Admin Server::GetAdmin() +00344 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) 00345 { -00346 return Admin(getadminname(),getadminemail(),getadminnick()); +00346 return del_channel(user,cname.c_str(),reason.c_str(),false); 00347 } 00348 -00349 -00350 -00351 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) -00352 { -00353 if (type == MT_SERVER) +00349 chanuserlist Server::GetUsers(chanrec* chan) +00350 { +00351 chanuserlist userl; +00352 userl.clear(); +00353 for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++) 00354 { -00355 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); -00356 return false; -00357 } -00358 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) -00359 { -00360 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); -00361 return false; -00362 } -00363 if ((params_when_on>1) || (params_when_off>1)) -00364 { -00365 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); -00366 return false; -00367 } -00368 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); -00369 } -00370 -00371 bool Server::AddExtendedListMode(char modechar) -00372 { -00373 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); -00374 if (res) -00375 ModeMakeList(modechar); -00376 return res; +00355 if (i->second) +00356 { +00357 if (has_channel(i->second,chan)) +00358 { +00359 if (isnick(i->second->nick)) +00360 { +00361 userl.push_back(i->second); +00362 } +00363 } +00364 } +00365 } +00366 return userl; +00367 } +00368 void Server::ChangeUserNick(userrec* user, std::string nickname) +00369 { +00370 force_nickchange(user,nickname.c_str()); +00371 } +00372 +00373 void Server::QuitUser(userrec* user, std::string reason) +00374 { +00375 send_network_quit(user->nick,reason.c_str()); +00376 kill_link(user,reason.c_str()); 00377 } 00378 -00379 int Server::CountUsers(chanrec* c) +00379 bool Server::IsUlined(std::string server) 00380 { -00381 return usercount(c); +00381 return is_uline(server.c_str()); 00382 } 00383 -00384 -00385 ConfigReader::ConfigReader() -00386 { -00387 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00388 this->error = LoadConf(CONFIG_FILE,this->cache); -00389 } -00390 -00391 -00392 ConfigReader::~ConfigReader() -00393 { -00394 if (this->cache) -00395 delete this->cache; -00396 } -00397 +00384 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) +00385 { +00386 call_handler(commandname.c_str(),parameters,pcnt,user); +00387 } +00388 +00389 void Server::Log(int level, std::string s) +00390 { +00391 log(level,"%s",s.c_str()); +00392 } +00393 +00394 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams) +00395 { +00396 createcommand(cmd,f,flags,minparams); +00397 } 00398 -00399 ConfigReader::ConfigReader(std::string filename) +00399 void Server::SendMode(char **parameters, int pcnt, userrec *user) 00400 { -00401 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00402 this->error = LoadConf(filename.c_str(),this->cache); -00403 }; -00404 -00405 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) -00406 { -00407 char val[MAXBUF]; -00408 char t[MAXBUF]; -00409 char n[MAXBUF]; -00410 strncpy(t,tag.c_str(),MAXBUF); -00411 strncpy(n,name.c_str(),MAXBUF); -00412 ReadConf(cache,t,n,index,val); -00413 return std::string(val); -00414 } -00415 -00416 -00417 int ConfigReader::Enumerate(std::string tag) -00418 { -00419 return EnumConf(cache,tag.c_str()); -00420 } -00421 -00422 int ConfigReader::EnumerateValues(std::string tag, int index) -00423 { -00424 return EnumValues(cache, tag.c_str(), index); -00425 } -00426 -00427 bool ConfigReader::Verify() -00428 { -00429 return this->error; -00430 } -00431 +00401 server_mode(parameters,pcnt,user); +00402 } +00403 +00404 void Server::Send(int Socket, std::string s) +00405 { +00406 Write(Socket,"%s",s.c_str()); +00407 } +00408 +00409 void Server::SendServ(int Socket, std::string s) +00410 { +00411 WriteServ(Socket,"%s",s.c_str()); +00412 } +00413 +00414 void Server::SendFrom(int Socket, userrec* User, std::string s) +00415 { +00416 WriteFrom(Socket,User,"%s",s.c_str()); +00417 } +00418 +00419 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) +00420 { +00421 if (!Source) +00422 { +00423 // if source is NULL, then the message originates from the local server +00424 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); +00425 } +00426 else +00427 { +00428 // otherwise it comes from the user specified +00429 WriteTo(Source,Dest,"%s",s.c_str()); +00430 } +00431 } 00432 -00433 FileReader::FileReader(std::string filename) +00433 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) 00434 { -00435 file_cache c; -00436 readfile(c,filename.c_str()); -00437 this->fc = c; -00438 } -00439 -00440 FileReader::FileReader() -00441 { -00442 } -00443 -00444 void FileReader::LoadFile(std::string filename) -00445 { -00446 file_cache c; -00447 readfile(c,filename.c_str()); -00448 this->fc = c; -00449 } -00450 -00451 -00452 FileReader::~FileReader() -00453 { -00454 } -00455 -00456 bool FileReader::Exists() -00457 { -00458 if (fc.size() == 0) -00459 { -00460 return(false); -00461 } -00462 else -00463 { -00464 return(true); -00465 } -00466 } -00467 -00468 std::string FileReader::GetLine(int x) -00469 { -00470 if ((x<0) || (x>fc.size())) -00471 return ""; -00472 return fc[x]; -00473 } -00474 -00475 int FileReader::FileSize() -00476 { -00477 return fc.size(); -00478 } -00479 -00480 -00481 std::vector<Module*> modules(255); -00482 std::vector<ircd_module*> factory(255); -00483 -00484 int MODCOUNT = -1; -00485 +00435 if (IncludeSender) +00436 { +00437 WriteChannel(Channel,User,"%s",s.c_str()); +00438 } +00439 else +00440 { +00441 ChanExceptSender(Channel,User,"%s",s.c_str()); +00442 } +00443 } +00444 +00445 bool Server::CommonChannels(userrec* u1, userrec* u2) +00446 { +00447 return (common_channels(u1,u2) != 0); +00448 } +00449 +00450 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) +00451 { +00452 if (IncludeSender) +00453 { +00454 WriteCommon(User,"%s",text.c_str()); +00455 } +00456 else +00457 { +00458 WriteCommonExcept(User,"%s",text.c_str()); +00459 } +00460 } +00461 +00462 void Server::SendWallops(userrec* User, std::string text) +00463 { +00464 WriteWallOps(User,false,"%s",text.c_str()); +00465 } +00466 +00467 void Server::ChangeHost(userrec* user, std::string host) +00468 { +00469 ChangeDisplayedHost(user,host.c_str()); +00470 } +00471 +00472 void Server::ChangeGECOS(userrec* user, std::string gecos) +00473 { +00474 ChangeName(user,gecos.c_str()); +00475 } +00476 +00477 bool Server::IsNick(std::string nick) +00478 { +00479 return (isnick(nick.c_str()) != 0); +00480 } +00481 +00482 userrec* Server::FindNick(std::string nick) +00483 { +00484 return Find(nick); +00485 } 00486 -
Generated on Sat May 1 13:39:00 2004 for InspIRCd by +00487 chanrec* Server::FindChannel(std::string channel) +00488 { +00489 return FindChan(channel.c_str()); +00490 } +00491 +00492 std::string Server::ChanMode(userrec* User, chanrec* Chan) +00493 { +00494 return cmode(User,Chan); +00495 } +00496 +00497 bool Server::IsOnChannel(userrec* User, chanrec* Chan) +00498 { +00499 return has_channel(User,Chan); +00500 } +00501 +00502 std::string Server::GetServerName() +00503 { +00504 return getservername(); +00505 } +00506 +00507 std::string Server::GetNetworkName() +00508 { +00509 return getnetworkname(); +00510 } +00511 +00512 Admin Server::GetAdmin() +00513 { +00514 return Admin(getadminname(),getadminemail(),getadminnick()); +00515 } +00516 +00517 +00518 +00519 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) +00520 { +00521 if (type == MT_SERVER) +00522 { +00523 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); +00524 return false; +00525 } +00526 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) +00527 { +00528 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); +00529 return false; +00530 } +00531 if ((params_when_on>1) || (params_when_off>1)) +00532 { +00533 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); +00534 return false; +00535 } +00536 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); +00537 } +00538 +00539 bool Server::AddExtendedListMode(char modechar) +00540 { +00541 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); +00542 if (res) +00543 ModeMakeList(modechar); +00544 return res; +00545 } +00546 +00547 int Server::CountUsers(chanrec* c) +00548 { +00549 return usercount(c); +00550 } +00551 +00552 +00553 ConfigReader::ConfigReader() +00554 { +00555 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00556 this->error = LoadConf(CONFIG_FILE,this->cache); +00557 } +00558 +00559 +00560 ConfigReader::~ConfigReader() +00561 { +00562 if (this->cache) +00563 delete this->cache; +00564 } +00565 +00566 +00567 ConfigReader::ConfigReader(std::string filename) +00568 { +00569 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00570 this->error = LoadConf(filename.c_str(),this->cache); +00571 }; +00572 +00573 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) +00574 { +00575 char val[MAXBUF]; +00576 char t[MAXBUF]; +00577 char n[MAXBUF]; +00578 strncpy(t,tag.c_str(),MAXBUF); +00579 strncpy(n,name.c_str(),MAXBUF); +00580 ReadConf(cache,t,n,index,val); +00581 return std::string(val); +00582 } +00583 +00584 +00585 int ConfigReader::Enumerate(std::string tag) +00586 { +00587 return EnumConf(cache,tag.c_str()); +00588 } +00589 +00590 int ConfigReader::EnumerateValues(std::string tag, int index) +00591 { +00592 return EnumValues(cache, tag.c_str(), index); +00593 } +00594 +00595 bool ConfigReader::Verify() +00596 { +00597 return this->error; +00598 } +00599 +00600 +00601 FileReader::FileReader(std::string filename) +00602 { +00603 file_cache c; +00604 readfile(c,filename.c_str()); +00605 this->fc = c; +00606 } +00607 +00608 FileReader::FileReader() +00609 { +00610 } +00611 +00612 void FileReader::LoadFile(std::string filename) +00613 { +00614 file_cache c; +00615 readfile(c,filename.c_str()); +00616 this->fc = c; +00617 } +00618 +00619 +00620 FileReader::~FileReader() +00621 { +00622 } +00623 +00624 bool FileReader::Exists() +00625 { +00626 if (fc.size() == 0) +00627 { +00628 return(false); +00629 } +00630 else +00631 { +00632 return(true); +00633 } +00634 } +00635 +00636 std::string FileReader::GetLine(int x) +00637 { +00638 if ((x<0) || (x>fc.size())) +00639 return ""; +00640 return fc[x]; +00641 } +00642 +00643 int FileReader::FileSize() +00644 { +00645 return fc.size(); +00646 } +00647 +00648 +00649 std::vector<Module*> modules(255); +00650 std::vector<ircd_module*> factory(255); +00651 +00652 int MODCOUNT = -1; +00653 +00654 +
1.3-rc3
--
cgit v1.3.1-10-gc9f91