diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-10-22 14:13:48 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-10-22 14:13:48 +0000 |
commit | 5d5285f24b1fe306faa2a6d0565ba1cff0f17f11 (patch) | |
tree | 75ce78d3a653f5897b92623808bfdba516f6514f /src/commands/cmd_modules.cpp | |
parent | 4cc6e5e14fdbde499481dbab5ab2ad1257b8af9c (diff) |
Move cmd_*.cpp to src/commands/. Not done in the nicest of ways yet, but ah well :p
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8299 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/commands/cmd_modules.cpp')
-rw-r--r-- | src/commands/cmd_modules.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/commands/cmd_modules.cpp b/src/commands/cmd_modules.cpp new file mode 100644 index 000000000..1ff8c1c75 --- /dev/null +++ b/src/commands/cmd_modules.cpp @@ -0,0 +1,72 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +#include "inspircd.h" +#include "wildcard.h" +#include "commands/cmd_modules.h" + +char* itab[] = { + "OnUserConnect", "OnUserQuit", "OnUserDisconnect", "OnUserJoin", "OnUserPart", "OnRehash", "OnServerRaw", + "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", "OnUserRegister", "OnCheckInvite", + "OnCheckKey", "OnCheckLimit", "OnCheckBan", "OnStats", "OnChangeLocalUserHost", "OnChangeLocalUserGecos", "OnLocalTopicChange", + "OnPostLocalTopicChange", "OnEvent", "OnRequest", "OnOperCompre", "OnGlobalOper", "OnPostConnect", "OnAddBan", "OnDelBan", + "OnRawSocketAccept", "OnRawSocketClose", "OnRawSocketWrite", "OnRawSocketRead", "OnChangeLocalUserGECOS", "OnUserRegister", + "OnOperCompare", "OnChannelDelete", "OnPostOper", "OnSyncOtherMetaData", "OnSetAway", "OnCancelAway", "OnNamesList", + "OnPostCommand", "OnPostJoin", "OnWhoisLine", "OnBuildExemptList", "OnRawSocketConnect", "OnGarbageCollect", NULL +}; + +extern "C" DllExport Command* init_command(InspIRCd* Instance) +{ + return new CommandModules(Instance); +} + +/** Handle /MODULES + */ +CmdResult CommandModules::Handle (const char** parameters, int pcnt, User *user) +{ + for (unsigned int i = 0; i < ServerInstance->Config->module_names.size(); i++) + { + Version V = ServerInstance->Modules->modules[i]->GetVersion(); + char modulename[MAXBUF]; + char flagstate[MAXBUF]; + *flagstate = 0; + if (V.Flags & VF_STATIC) + strlcat(flagstate,", static",MAXBUF); + if (V.Flags & VF_VENDOR) + strlcat(flagstate,", vendor",MAXBUF); + if (V.Flags & VF_COMMON) + strlcat(flagstate,", common",MAXBUF); + if (V.Flags & VF_SERVICEPROVIDER) + strlcat(flagstate,", service provider",MAXBUF); + if (!flagstate[0]) + strcpy(flagstate," <no flags>"); + strlcpy(modulename,ServerInstance->Config->module_names[i].c_str(),256); + if (IS_OPER(user)) + { + user->WriteServ("900 %s :0x%08lx %d.%d.%d.%d %s (%s)",user->nick,ServerInstance->Modules->modules[i],V.Major,V.Minor,V.Revision,V.Build,ServerConfig::CleanFilename(modulename),flagstate+2); + } + else + { + user->WriteServ("900 %s :%s",user->nick,ServerConfig::CleanFilename(modulename)); + } + } + user->WriteServ("901 %s :End of MODULES list",user->nick); + + return CMD_SUCCESS; +} |