X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcmd_modules.cpp;h=0a7108267f728aa93e71facdff2439ac6a3b9646;hb=59b1a8955142935b02af6446005ab47fc7c3fc8c;hp=bdff5c7f81a0303a42d8bd49d1523fbd81366c07;hpb=4ffd644a14fa40b758f8937b06844861009bfec1;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/cmd_modules.cpp b/src/cmd_modules.cpp index bdff5c7f8..0a7108267 100644 --- a/src/cmd_modules.cpp +++ b/src/cmd_modules.cpp @@ -2,10 +2,10 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2005 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: - * - * + * + * * * Written by Craig Edwards, Craig McLure, and others. * This program is free but copyrighted software; see @@ -60,7 +60,22 @@ extern chan_hash chanlist; extern whowas_hash whowas; extern std::vector all_opers; extern std::vector local_users; -extern userrec* fd_ref_table[65536]; +extern userrec* fd_ref_table[MAX_DESCRIPTORS]; + +char* itab[] = { + "OnUserConnect", "OnUserQuit", "OnUserDisconnect", "OnUserJoin", "OnUserPart", "OnRehash", "OnServerRaw", + "OnExtendedMode", "OnUserPreJoin", "OnUserPreKick", "OnUserKick", "OnOper", "OnInfo", "OnWhois", "OnUserPreInvite", + "OnUserInvite", "OnUserPreMessage", "OnUserPreNotice", "OnUserPreNick", "OnUserMessage", "OnUserNotice", "OnMode", + "OnGetServerDescription", "OnSyncUser", "OnSyncChannel", "OnSyncChannelMetaData", "OnSyncUserMetaData", + "OnDecodeMetaData", "ProtoSendMode", "ProtoSendMetaData", "OnWallops", "OnChangeHost", "OnChangeName", "OnAddGLine", + "OnAddZLine", "OnAddQLine", "OnAddKLine", "OnAddELine", "OnDelGLine", "OnDelZLine", "OnDelKLine", "OnDelELine", "OnDelQLine", + "OnCleanup", "OnUserPostNick", "OnAccessCheck", "On005Numeric", "OnKill", "OnRemoteKill", "OnLoadModule", "OnUnloadModule", + "OnBackgroundTimer", "OnSendList", "OnPreCommand", "OnCheckReady", "OnUserRrgister", "OnRawMode", "OnCheckInvite", + "OnCheckKey", "OnCheckLimit", "OnCheckBan", "OnStats", "OnChangeLocalUserHost", "OnChangeLocalUserGecos", "OnLocalTopicChange", + "OnPostLocalTopicChange", "OnEvent", "OnRequest", "OnOperCompre", "OnGlobalOper", "OnGlobalConnect", "OnAddBan", "OnDelBan", + "OnRawSocketAccept", "OnRawSocketClose", "OnRawSocketWrite", "OnRawSocketRead", "OnChangeLocalUserGECOS", "OnUserRegister", + "OnOperCompare", "OnChannelDelete", "OnPostOper", "OnSyncOtherMetaData", "OnSetAway", "OnCancelAway", NULL +}; void cmd_modules::Handle (char **parameters, int pcnt, userrec *user) { @@ -81,9 +96,45 @@ void cmd_modules::Handle (char **parameters, int pcnt, userrec *user) if (!flagstate[0]) strcpy(flagstate," "); strlcpy(modulename,Config->module_names[i].c_str(),256); - if (strchr(user->modes,'o')) + if (*user->oper) { - WriteServ(user->fd,"900 %s :0x%08lx %d.%d.%d.%d %s (%s)",user->nick,modules[i],V.Major,V.Minor,V.Revision,V.Build,CleanFilename(modulename),flagstate+2); + if ((pcnt >= 2) && (!strcasecmp(parameters[0],"debug"))) + { + if (match(Config->module_names[i].c_str(),parameters[1])) + { + WriteServ(user->fd,"900 %s :0x%08lx %d.%d.%d.%d %s (%s)",user->nick,modules[i],V.Major,V.Minor,V.Revision,V.Build,CleanFilename(modulename),flagstate+2); + for (int it = 0; itab[it];) + { + char data[MAXBUF]; + char dlist[MAXBUF]; + *dlist = 0; + for (int v = 0; v < 4; v++) + { + if (itab[it]) + { + if (Config->implement_lists[i][it]) + { + snprintf(data,MAXBUF,"%s=>%c ",itab[it],(Config->implement_lists[i][it] ? '1' : '0')); + strncat(dlist,data,MAXBUF); + } + it++; + } + } + if (*dlist) + WriteServ(user->fd,"900 %s :%s [ %s]",user->nick,CleanFilename(modulename),dlist); + } + WriteServ(user->fd,"900 %s :=== DEBUG: Implementation counts ===",user->nick); + for (int it = 0; itab[it]; it++) + { + if (Config->global_implementation[it]) + WriteServ(user->fd,"900 %s :%s: %d times",user->nick, itab[it],(int)Config->global_implementation[it]); + } + } + } + else + { + WriteServ(user->fd,"900 %s :0x%08lx %d.%d.%d.%d %s (%s)",user->nick,modules[i],V.Major,V.Minor,V.Revision,V.Build,CleanFilename(modulename),flagstate+2); + } } else {