Example #1
0
/**
* Provide the user interface to add/remove a qdb ban from a nickname
* @param u The user who executed this command
* @return MOD_CONT if we want to process other commands in this command
* stack, MOD_STOP if we dont
**/
int myAddQDBBan(User * u)
{
	char *text;
	char *nick;
	char *command;
	char *setting;
	int stop = 0;
	NickCore *nc;
	NickAlias *na;

	text = moduleGetLastBuffer();
	if (text) {
		nick = myStrGetToken(text, ' ', 0);
		if (nick) {
			command = myStrGetToken(text, ' ', 1);
			if (command) {
				if (stricmp(command, "QDBBAN") == 0) {
					setting = myStrGetToken(text, ' ', 2);
					if (setting) {
						if (!(na = findnick(nick))) {
							notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick);
						}
						else {
							nc = na->nc;

							if (stricmp(setting, "ON") == 0) {
								moduleAddData(&nc->moduleData, "qdbban", "on");
								moduleNoticeLang(s_NickServ, u, QDBBAN_ADD_SUCCESS, nc->display);
								alog("ns_qdbban: %s!%s@%s banned %s from using the QDB", u->nick, u->username, u->host, nc->display);
							}
							else if (stricmp(setting, "OFF") == 0) {
								moduleDelData(&nc->moduleData, "qdbban");
								moduleNoticeLang(s_NickServ, u, QDBBAN_DEL_SUCCESS, nc->display);
								alog("ns_qdbban: %s!%s@%s unbanned %s from using the QDB", u->nick, u->username, u->host, nc->display);
							}
							else {
								moduleNoticeLang(s_NickServ, u, QDBBAN_HELP);
							}
						}
						free(setting);
					}
					else {
						moduleNoticeLang(s_NickServ, u, QDBBAN_HELP);
					}

					stop = 1;
				}
				free(command);
			}
			free(nick);
		}
	}

	if (stop == 0) {
		return MOD_CONT;
	}
	else {
		return MOD_STOP;
	}
}
Example #2
0
int do_resendcode(User * u)
{
    char *buffer = NULL;
    char *nick = NULL;
    NickAlias *na = NULL;

    buffer = moduleGetLastBuffer();
    if (buffer)
        nick = myStrGetToken(buffer, ' ', 0);

    if (!nick) {
        moduleNoticeLang(s_NickServ, u, RESENDCODE_SYNTAX);
    } else if (!anope_valid_nick(nick)) {
        notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
    } else if (!(na = findnick(nick))) {
        notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick);
    } else if (nick_identified(na->u)) {
        notice_lang(s_NickServ, u, NICK_ALREADY_IDENTIFIED);
    } else if (!(moduleGetData(&na->nc->moduleData, MODULEDATAKEY))) {
        moduleNoticeLang(s_NickServ, u, RESETPASS_NOT_REQUESTED, u->nick);
    } else {
        if (do_sendmail(u, na) != 0) {
            alog(LOG_COULDNT_SENDMAIL, MYNAME, na->nick);
        } else {
            moduleNoticeLang(s_NickServ, u, RESETPASS_SUCCESS, na->nick);
            moduleNoticeLang(s_NickServ, u, RESETPASS_INSTRUC);
        }
    }

    return MOD_CONT;
}
Example #3
0
static int my_cs_help_appendtopic(User * u)
{
    moduleNoticeLang(s_ChanServ, u, LNG_APPENDTOPIC_SYNTAX);
    notice(s_ChanServ, u->nick, " ");
    moduleNoticeLang(s_ChanServ, u, LNG_CHAN_HELP_APPENDTOPIC);
    return MOD_STOP;
}
Example #4
0
int myChanServAvoiceHelp(User *u)
{
    moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_SYNTAX);
    anope_cmd_notice(s_ChanServ, u->nick, " ");
	moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_HELP_FULL);
    return MOD_CONT;
}
Example #5
0
static int hs_help_request(User * u)
{
    moduleNoticeLang(s_HostServ, u, LNG_REQUEST_SYNTAX);
    notice(s_HostServ, u->nick, " ");
    moduleNoticeLang(s_HostServ, u, LNG_HELP_REQUEST);

    return MOD_CONT;
}
Example #6
0
static int hs_help_waiting(User * u)
{
    if (is_host_setter(u)) {
        moduleNoticeLang(s_HostServ, u, LNG_WAITING_SYNTAX);
        notice(s_HostServ, u->nick, " ");
        moduleNoticeLang(s_HostServ, u, LNG_HELP_WAITING);
    } else {
        notice_lang(s_HostServ, u, NO_HELP_AVAILABLE, "WAITING");
    }

    return MOD_CONT;
}
Example #7
0
static int my_cs_help_enforce(User * u)
{
    moduleNoticeLang(s_ChanServ, u, LNG_ENFORCE_SYNTAX);
    notice(s_ChanServ, u->nick, " ");
    moduleNoticeLang(s_ChanServ, u, LNG_CHAN_HELP_ENFORCE);
    notice(s_ChanServ, u->nick, " ");
    if (cbmodes['R'].flag != 0)
        moduleNoticeLang(s_ChanServ, u, LNG_CHAN_HELP_ENFORCE_R_ENABLED);
    else
        moduleNoticeLang(s_ChanServ, u, LNG_CHAN_HELP_ENFORCE_R_DISABLED);

    return MOD_STOP;
}
Example #8
0
/**
 * The suspend command.
 * @param u The user who issued the command
 * @param ci The channel we will be suspending.
 * @param reason The reason given for suspending the channel.
 * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
 **/
int do_suspend(User * u, ChannelInfo *ci, char *reason) {
	Channel *c;

	if (!ci) {
		moduleNoticeLang(ci->bi->nick, u, LANG_SUSPEND_SYNTAX);
		return MOD_CONT;
	}

	if (ForceForbidReason && !reason) {
		moduleNoticeLang(ci->bi->nick, u, LANG_SUSPEND_NO_REASON);
		return MOD_CONT;
	}

	if (readonly) {
		notice_lang(ci->bi->nick, u, READ_ONLY_MODE);
		return MOD_CONT;
	}

	ci->flags |= CI_SUSPENDED;
	ci->forbidby = sstrdup(u->nick);
	if (reason)
		ci->forbidreason = sstrdup(reason);

	if ((c = findchan(ci->name))) {
		struct c_userlist *cu, *next;
		char *av[3];

		for (cu = c->users; cu; cu = next) {
			next = cu->next;

			if (is_oper(cu->user))
				continue;

			av[0] = c->name;
			av[1] = cu->user->nick;
			av[2] = reason ? reason : "CHAN_SUSPEND_REASON";
			xanadu_cmd_kick(ci->bi->nick, av[0], av[1], av[2]);
			do_kick(ci->bi->nick, 3, av);
		}
	}

	if (WallForbid)
		xanadu_cmd_global(ci->bi->nick, "\2%s\2 used SUSPEND on channel \2%s\2",
				u->nick, ci->name);

	alog("%s: %s set SUSPEND for channel %s", ci->bi->nick, u->nick, ci->name);
	notice_lang(ci->bi->nick, u, CHAN_SUSPEND_SUCCEEDED, ci->name);
	send_event(EVENT_CHAN_SUSPENDED, 1, ci->name);

	return MOD_CONT;
}
Example #9
0
static int hs_help_reject(User * u)
{
    if (is_host_setter(u)) {
        moduleNoticeLang(s_HostServ, u, LNG_REJECT_SYNTAX);
        notice(s_HostServ, u->nick, " ");
        moduleNoticeLang(s_HostServ, u, LNG_HELP_REJECT);
        if (HSRequestMemoUser)
            moduleNoticeLang(s_HostServ, u, LNG_HELP_REJECT_MEMO);
    } else {
        notice_lang(s_HostServ, u, NO_HELP_AVAILABLE, "REJECT");
    }

    return MOD_CONT;
}
Example #10
0
static int hs_help_activate(User * u)
{
    if (is_host_setter(u)) {
        moduleNoticeLang(s_HostServ, u, LNG_ACTIVATE_SYNTAX);
        notice(s_HostServ, u->nick, " ");
        moduleNoticeLang(s_HostServ, u, LNG_HELP_ACTIVATE);
        if (HSRequestMemoUser)
            moduleNoticeLang(s_HostServ, u, LNG_HELP_ACTIVATE_MEMO);
    } else {
        notice_lang(s_HostServ, u, NO_HELP_AVAILABLE, "ACTIVATE");
    }

    return MOD_CONT;
}
Example #11
0
static int hs_do_reject(User * u)
{
    char *cur_buffer;
    char *nick;
    char *reason;
    HostCore *tmp, *hc;
    boolean found = false;

    cur_buffer = moduleGetLastBuffer();
    nick = myStrGetToken(cur_buffer, ' ', 0);
    reason = myStrGetTokenRemainder(cur_buffer, ' ', 1);

    if (!nick) {
        moduleNoticeLang(s_HostServ, u, LNG_REJECT_SYNTAX);
        if (reason)
            free(reason);
        return MOD_CONT;
    }

    tmp = findHostCore(hs_request_head, nick, &found);
    if (found) {
        if (!tmp)
            hc = hs_request_head;
        else
            hc = tmp->next;

        if (HSRequestMemoUser) {
            if (reason)
                my_memo_lang(u, hc->nick, 2, NULL, LNG_REJECT_MEMO_REASON,
                             reason);
            else
                my_memo_lang(u, hc->nick, 2, NULL, LNG_REJECT_MEMO);
        }

        hs_request_head = deleteHostCore(hs_request_head, tmp);
        moduleNoticeLang(s_HostServ, u, LNG_REJECTED, nick);
        alog("Host Request for %s rejected by %s (%s)", nick, u->nick,
             reason ? reason : "");
    } else {
        moduleNoticeLang(s_HostServ, u, LNG_NO_REQUEST, nick);
    }

    free(nick);
    if (reason)
        free(reason);

    return MOD_CONT;
}
Example #12
0
/**
 * Handle seen fantasy command.
 **/
int do_fantasy_seen(int argc, char **argv)
{
    User *u;
    char *target = NULL;
    ChannelStats *cs;
    char *message = NULL;

    if (denora->debug)
        protocol_debug(NULL, argc, argv);

    if (argc >= 3 && stricmp(argv[0], "seen") == 0) {
        u = finduser(argv[1]);
        cs = find_cs(argv[2]);
        if (argc == 3) {
            if (cs->flags & CS_NOTICE)
                moduleNoticeLang(s_StatServ, u, SEEN_USAGE,
                                 ChanStatsTrigger);
            else
                moduleNoticeChanLang(s_StatServ, cs, SEEN_USAGE,
                                     ChanStatsTrigger);
        } else {
            target = myStrGetToken(argv[3], ' ', 0);
            message = do_seen(u, target);
            if (cs->flags & CS_NOTICE)
                notice(s_StatServ, u->nick, message);
            else
                denora_cmd_privmsg(s_StatServ, cs->name, message);
        }
    }
    return MOD_CONT;
}
Example #13
0
int check_email_limit_reached(char *email, User * u)
{
    if ((NSEmailMax < 1) || !email || is_services_admin(u))
        return MOD_CONT;

    if (count_email_in_use(email, u) < NSEmailMax)
        return MOD_CONT;

    if (NSEmailMax == 1)
        moduleNoticeLang(s_NickServ, u, LNG_NSEMAILMAX_REACHED_ONE);
    else
        moduleNoticeLang(s_NickServ, u, LNG_NSEMAILMAX_REACHED,
                         NSEmailMax);

    return MOD_STOP;
}
Example #14
0
static int myFullHelp(User * u)
{
    myFullHelpSyntax(u);
    notice(s_ChanServ, u->nick, "");
    moduleNoticeLang(s_ChanServ, u, TBAN_HELP_DETAIL);
    return MOD_CONT;
}
Example #15
0
int cs_version(User * u, int ac, char **av)
{
    if (Log_ConnectServ) {
        alog(LOG_NORMAL, "%s : %s used VERSION", s_ConnectServ, u->nick);
    }
    moduleNoticeLang(s_ConnectServ, u, CS_DISPLAY_VERSION, s_ConnectServ, VERSION);
    return MOD_CONT;
}
Example #16
0
int cs_about(User * u, int ac, char **av)
{
    if (Log_ConnectServ) {
        alog(LOG_NORMAL, "%s : %s used ABOUT", s_ConnectServ, u->nick);
    }
    moduleNoticeLang(s_ConnectServ, u, CS_HELP_ABOUT);
    return MOD_CONT;
}
Example #17
0
static int hs_do_activate(User * u)
{
    char *cur_buffer;
    char *nick;
    NickAlias *na;
    HostCore *tmp, *hc;
    boolean found = false;

    cur_buffer = moduleGetLastBuffer();
    nick = myStrGetToken(cur_buffer, ' ', 0);

    if (!nick) {
        moduleNoticeLang(s_HostServ, u, LNG_ACTIVATE_SYNTAX);
        return MOD_CONT;
    }

    if ((na = findnick(nick))) {
        tmp = findHostCore(hs_request_head, nick, &found);
        if (found) {
            if (!tmp)
                hc = hs_request_head;
            else
                hc = tmp->next;

            addHostCore(hc->nick, hc->vIdent, hc->vHost, u->nick,
                        time(NULL));

            if (HSRequestMemoUser)
                my_memo_lang(u, hc->nick, 2, NULL, LNG_ACTIVATE_MEMO);

            hs_request_head = deleteHostCore(hs_request_head, tmp);
            moduleNoticeLang(s_HostServ, u, LNG_ACTIVATED, nick);
            alog("Host Request for %s activated by %s", nick, u->nick);
        } else {
            moduleNoticeLang(s_HostServ, u, LNG_NO_REQUEST, nick);
        }
    } else {
        notice_lang(s_HostServ, u, NICK_X_NOT_REGISTERED, nick);
    }

    free(nick);
    return MOD_CONT;
}
Example #18
0
int do_confirm(User * u)
{
    char *buffer = NULL;
    char *nick = NULL;
    char *passcode = NULL;
    char *moduledata = NULL;
    NickAlias *na = NULL;

    buffer = moduleGetLastBuffer();

    if (buffer)
    {
        nick = myStrGetToken(buffer, ' ', 0);
        passcode = myStrGetToken(buffer, ' ', 1);
    }

    if (!nick) {
        moduleNoticeLang(s_NickServ, u, ENTERCODE_SYNTAX);
    } else if (!anope_valid_nick(nick)) {
        notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
    } else if (!(na = findnick(nick))) {
        notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick);
    } else if (nick_identified(na->u)) {
        notice_lang(s_NickServ, u, NICK_ALREADY_IDENTIFIED);
    } else if (!passcode) {
        moduleNoticeLang(s_NickServ, u, ENTERCODE_SYNTAX);
    } else {
        if (!(moduledata = moduleGetData(&na->nc->moduleData, MODULEDATAKEY))) {
            moduleNoticeLang(s_NickServ, u, RESETPASS_NOT_REQUESTED, nick);
        } else if (strcmp(passcode, moduledata) != 0) {
            moduleNoticeLang(s_NickServ, u, ENTERCODE_WRONG_PASSCODE);
            free(moduledata);
        } else {
            ns_setpassword(u, na->nc);
            moduleDelData(&na->nc->moduleData, MODULEDATAKEY);
            free(moduledata);
        }
    }

    return MOD_CONT;
}
Example #19
0
/**
 * Handle msg fantasy command.
 **/
int do_msg_seen(User * u, int argc, char **argv)
{
    char *target = NULL;
    char *message = NULL;

    if (denora->debug)
        protocol_debug(NULL, argc, argv);

    if (argc < 1 || BadChar(argv[0])) {
        moduleNoticeLang(s_StatServ, u, SEEN_USAGE, "");
    } else {
        target = myStrGetToken(argv[0], ' ', 0);
        message = do_seen(u, target);
        notice(s_StatServ, u->nick, message);
    }
    return MOD_CONT;
}
Example #20
0
static int my_cs_enforce(User * u)
{
    char *cur_buffer;
    char *chan=NULL;
    char *what=NULL;
    Channel *c;
    ChannelInfo *ci;

    cur_buffer = moduleGetLastBuffer();
    chan = myStrGetToken(cur_buffer, ' ', 0);

    if (!chan) {
        moduleNoticeLang(s_ChanServ, u, LNG_ENFORCE_SYNTAX);
    } else if (!(c = findchan(chan))) {
        notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan);
    } else if (!(ci = c->ci)) {
        notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
    } else if (ci->flags & CI_VERBOTEN) {
        notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
    } else if (!is_services_admin(u) && !check_access(u, ci, CA_AKICK)) {
        notice_lang(s_ChanServ, u, PERMISSION_DENIED);
    } else {
        what = myStrGetToken(cur_buffer, ' ', 1);
        if (!what || (stricmp(what, "SET") == 0)) {
            do_enforce_set(c);
            moduleNoticeLang(s_ChanServ,u,LNG_CHAN_RESPONSE, what ? what : "SET");
        } else if (stricmp(what, "MODES") == 0) {
            do_enforce_modes(c);
            moduleNoticeLang(s_ChanServ,u,LNG_CHAN_RESPONSE,what);
        } else if (stricmp(what, "SECUREOPS") == 0) {
            do_enforce_secureops(c);
            moduleNoticeLang(s_ChanServ,u,LNG_CHAN_RESPONSE,what);
        } else if (stricmp(what, "RESTRICTED") == 0) {
            do_enforce_restricted(c);
            moduleNoticeLang(s_ChanServ,u,LNG_CHAN_RESPONSE,what);
        } else if (stricmp(what, "+R") == 0) {
            do_enforce_cmode_R(c);
            moduleNoticeLang(s_ChanServ,u,LNG_CHAN_RESPONSE,what);
        } else {
            moduleNoticeLang(s_ChanServ, u, LNG_ENFORCE_SYNTAX);
        }
    }

    if(chan) free(chan);
    if(what) free(what);

    return MOD_CONT;
}
Example #21
0
static void mySendResponse(User * u, char *channel, char *mask, char *time)
{
    moduleNoticeLang(s_ChanServ, u, TBAN_RESPONSE, mask, channel, time);
}
Example #22
0
static void myFullHelpSyntax(User * u)
{
    moduleNoticeLang(s_ChanServ, u, TBAN_SYNTAX);
}
Example #23
0
static void myHelp(User * u)
{
    moduleNoticeLang(s_ChanServ, u, TBAN_HELP);
}
Example #24
0
/* This help will be added to the main NickServ list */
void mMainNickHelp(User * u)
{
    moduleNoticeLang(s_NickServ, u, RESETPASS_HELP_CMD);
    moduleNoticeLang(s_NickServ, u, ENTERCODE_HELP_CMD);
    moduleNoticeLang(s_NickServ, u, RESENDCODE_HELP_CMD);
}
Example #25
0
int ResendPassCodeHelp(User * u)
{
    moduleNoticeLang(s_NickServ, u, RESENDCODE_HELP);

    return MOD_CONT;
}
Example #26
0
void myChanServHelp(User *u)
{
    moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_HELP);
}
Example #27
0
int ResetPassHelp(User * u)
{
    moduleNoticeLang(s_NickServ, u, RESETPASS_HELP);

    return MOD_CONT;
}
Example #28
0
int do_resetpass(User * u)
{
    char *buffer = NULL;
    char *nick = NULL;
    char *email = NULL;

    char passcode[PASSCODELEN];
    char *callBackinfo[1];
    NickAlias *na = NULL;

    if ((RestrictReset == 1) && !(is_oper(u))) {
        notice_lang(s_NickServ, u, ACCESS_DENIED);
        return MOD_CONT;
    }

    buffer = moduleGetLastBuffer();
    nick = myStrGetToken(buffer, ' ', 0);
    email = myStrGetToken(buffer, ' ', 1);

    if (!nick) {
        moduleNoticeLang(s_NickServ, u, RESETPASS_SYNTAX);
    } else if (!anope_valid_nick(nick)) {
        notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
    } else if (!(na = findnick(nick))) {
        notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick);
    } else if (na->status & NS_VERBOTEN) {
         notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick);
    } else if (na->nc->flags & NI_SUSPENDED) {
        notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick);
    } else if (!na->nc->email) {
         notice_user(s_NickServ, u, "%s has no email associated with their account.", na->nick);
    } else if (moduleGetData(&na->nc->moduleData, MODULEDATAKEY)) {
        moduleNoticeLang(s_NickServ, u, RESETPASS_ALREADY_REQUESTED1,
                         na->nick);
        moduleNoticeLang(s_NickServ, u, RESETPASS_ALREADY_REQUESTED2); 
    } else if (!email && !is_oper(u) && !is_helpop(u)) {
	notice(s_NickServ, u->nick, "You need to provide the e-mail address associated with the account you are trying to reset the password on.");
	notice(s_NickServ, u->nick, "Syntax: /ns resetpass <nickname> <e-mail>");
    } else if (!is_oper(u) && !is_helpop(u) && strcasecmp(email, na->nc->email)) {
	notice(s_NickServ, u->nick, "The e-mail address %s does not match the one associated with account %s.", email, na->nc->display);
    } else {
        generatePassCode(passcode);
        moduleAddData(&na->nc->moduleData, MODULEDATAKEY, passcode);
        if (do_sendmail(u, na) != 0) {
            alog(LOG_COULDNT_SENDMAIL, MYNAME, na->nick);
            moduleDelData(&na->nc->moduleData, MODULEDATAKEY);
        } else {
            callBackinfo[0] = na->nick;
            moduleAddCallback(MYNAME, time(NULL) + ExpirePassCode, expirePassCode, 1, callBackinfo);
            alog(LOG_RESETPASS_REQUESTED, MYNAME, u->nick, na->nick);
            moduleNoticeLang(s_NickServ, u, RESETPASS_SUCCESS, na->nick);
            moduleNoticeLang(s_NickServ, u, RESETPASS_INSTRUC);
        }
    }

    if (nick)
    	free(nick);
    if (email)
	free(email);

    return MOD_CONT;
}
Example #29
0
int EntercodeResetHelp(User * u)
{
    moduleNoticeLang(s_NickServ, u, ENTERCODE_HELP);

    return MOD_CONT;
}
Example #30
0
int do_avoice(User *u)
{
	char *buf = moduleGetLastBuffer();
    char *chan = myStrGetToken(buf, ' ', 0);
    char *option = myStrGetTokenRemainder(buf, ' ', 1);
	char *data;
    ChannelInfo *ci;
    if (!chan) {
		moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_SYNTAX);
		return MOD_CONT;
    }
    if ((ci = cs_findchan(chan))) {
        if (!check_access(u, ci, CA_PROTECT)) {
            notice_lang(s_ChanServ, u, PERMISSION_DENIED);
			if (chan) free(chan);
			if (option) free(option);
            return MOD_CONT;
        }
		if (!option) {
			if ((data = moduleGetData(&ci->moduleData, "avoice"))) {
				if (stricmp(data, "REG") == 0) {
					moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_STATUS_REG, chan);
				} else if (stricmp(data, "ALL") == 0) {
					moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_STATUS_ALL, chan);
				}
				free(data);
			} else {
				moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_STATUS_OFF, chan);
			}
		} else {
			if (stricmp(option, "REG") == 0) {
				moduleAddData(&ci->moduleData, "avoice", "REG");
				moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_SET_REG, chan);
			} else if (stricmp(option, "ALL") == 0) {
				moduleAddData(&ci->moduleData, "avoice", "ALL");
				moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_SET_ALL, chan);
			} else if (stricmp(option, "OFF") == 0) {
				moduleDelData(&ci->moduleData, "avoice");
				moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_SET_OFF, chan);
			} else if (stricmp(option, "STATUS") == 0) {
				if ((data = moduleGetData(&ci->moduleData, "avoice"))) {
					if (stricmp(data, "REG") == 0) {
						moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_STATUS_REG, chan);
					} else if (stricmp(data, "ALL") == 0) {
						moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_STATUS_ALL, chan);
					}
					free(data);
				} else {
					moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_STATUS_OFF, chan);
				}
			} else {
				moduleNoticeLang(s_ChanServ, u, CS_AUTOVOICE_SYNTAX);
			}
		}
	} else {
        notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
    }
	if (chan)
		free(chan);
	if (option)
		free(option);
    return MOD_CONT;
}