]> jfr.im git - irc/quakenet/newserv.git/blobdiff - noperserv/noperserv_hooks.c
merge
[irc/quakenet/newserv.git] / noperserv / noperserv_hooks.c
index c0d023839c7eefd18ffeff28f14381d21c61ac10..a5d8bd97c6b3e170566d7ba91bfba6af1378c8d8 100644 (file)
@@ -1,6 +1,7 @@
 #include "../control/control.h"
 #include "../localuser/localuser.h"
 #include "../core/schedule.h"
+#include "../core/modules.h"
 #include "../lib/splitline.h"
 #include "../lib/flags.h"
 #include "../lib/irc_string.h"
@@ -56,7 +57,7 @@ void noperserv_setup_hooks(void) {
   oldwall = controlwall;
   controlwall = &noperserv_wall;
 
-  memset(&special, 0, sizeof(specialsched));
+  memset(&special, 0, sizeof(struct specialsched));
 
   if(!mynick) {
     registerhook(HOOK_CONTROL_REGISTERED, &noperserv_trap_registration);
@@ -166,6 +167,17 @@ CommandHandler noperserv_find_hook(char *command) {
   return NULL;
 }
 
+int noperserv_modules_loaded(char *mask) {
+  int i;
+  char *ptr;
+
+  for(i=0,ptr=lsmod(i);ptr;ptr=lsmod(++i))
+    if(match2strings(mask, ptr))
+      return 1;
+
+  return 0;
+}
+
 int noperserv_specialmod(nick *np, char *command, ScheduleCallback reloadhandler, int cargc, char **cargv) {
   CommandHandler oldcommand = noperserv_find_hook(command);
   if(cargc < 1) {
@@ -262,7 +274,8 @@ int noperserv_showcommands(void *sender, int cargc, char **cargv) {
   controlreply(np, "The following commands are registered at present:");
   
   for(i=0;i<n;i++)
-    controlreply(np, "%s (%s)", cmdlist[i]->command->content, printflags(cmdlist[i]->level, no_commandflags));
+    if(noperserv_policy_command_permitted(cmdlist[i]->level, np))
+      controlreply(np, "%s (%s)", cmdlist[i]->command->content, printflags(cmdlist[i]->level, no_commandflags));
 
   controlreply(np, "End of list.");
   return CMD_OK;
@@ -451,7 +464,7 @@ void noperserv_wall(flag_t permissionlevel, flag_t noticelevel, char *format, ..
   Error("noperserv", ERR_INFO, "$%s$ %s", flags, buf);
 
   for(;au;au=au->next) {
-    if(NOGetNoticeLevel(au) & noticelevel) {
+    if((NOGetNoticeLevel(au) & noticelevel) && !(NOGetAuthLevel(au) & __NO_RELAY)) {
       for(nl=au->nick;nl;nl=nl->next)
         if(noperserv_policy_command_permitted(permissionlevel, nl->nick))
           controlreply(nl->nick, "$%s$ %s", flags, buf);