summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/commands.cpp27
-rw-r--r--src/inspircd.cpp2
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," <no flags>");
+ 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,"<core>");
createcommand("CONNECT",handle_connect,'o',1,"<core>");
createcommand("SQUIT",handle_squit,'o',0,"<core>");
- createcommand("MODULES",handle_modules,'o',0,"<core>");
+ createcommand("MODULES",handle_modules,0,0,"<core>");
createcommand("LINKS",handle_links,0,0,"<core>");
createcommand("MAP",handle_map,0,0,"<core>");
createcommand("KLINE",handle_kline,'o',1,"<core>");