#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"
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);
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) {
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;
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);