From 6cfad04b9c57fc78f04f9dbb1b983409ee051481 Mon Sep 17 00:00:00 2001 From: brain Date: Thu, 7 Apr 2005 18:33:24 +0000 Subject: Added ability for non-opers to see simplistic /modules output Added module flags to /modules for opers git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1003 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/commands.cpp | 27 +++++++++++++++++++++++---- src/inspircd.cpp | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/commands.cpp b/src/commands.cpp index 19dd9f200..235097bdd 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -1223,10 +1223,29 @@ void handle_modules(char **parameters, int pcnt, userrec *user) { for (int i = 0; i < module_names.size(); i++) { - Version V = modules[i]->GetVersion(); - char modulename[MAXBUF]; - strlcpy(modulename,module_names[i].c_str(),256); - WriteServ(user->fd,"900 %s :0x%08lx %d.%d.%d.%d %s",user->nick,modules[i],V.Major,V.Minor,V.Revision,V.Build,CleanFilename(modulename)); + Version V = modules[i]->GetVersion(); + char modulename[MAXBUF]; + char flagstate[MAXBUF]; + strcpy(flagstate,""); + 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 (!strlen(flagstate)) + strcpy(flagstate," "); + strlcpy(modulename,module_names[i].c_str(),256); + if (strchr(user->modes,'o')) + { + 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 + { + WriteServ(user->fd,"900 %s :%s",user->nick,CleanFilename(modulname)); + } } } diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 44b84979c..ee0780ddf 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -2998,7 +2998,7 @@ void SetupCommandTable(void) createcommand("WHOWAS",handle_whowas,0,1,""); createcommand("CONNECT",handle_connect,'o',1,""); createcommand("SQUIT",handle_squit,'o',0,""); - createcommand("MODULES",handle_modules,'o',0,""); + createcommand("MODULES",handle_modules,0,0,""); createcommand("LINKS",handle_links,0,0,""); createcommand("MAP",handle_map,0,0,""); createcommand("KLINE",handle_kline,'o',1,""); -- cgit v1.2.3