Esempio n. 1
0
/**
 * Automaticaly re-set the DefCon level if the time limit has expired.
 **/
void resetDefCon(int level)
{
    char strLevel[5];
    snprintf(strLevel, 4, "%d", level);
    if (DefConLevel != level) {
        if ((DefContimer)
            && (time(NULL) - DefContimer >= dotime(DefConTimeOut))) {
            DefConLevel = level;
            send_event(EVENT_DEFCON_LEVEL, 1, strLevel);
            alog("Defcon level timeout, returning to lvl %d", level);
            xanadu_cmd_global(s_OperServ,
                             getstring2(NULL, OPER_DEFCON_WALL),
                             s_OperServ, level);
            if (GlobalOnDefcon) {
                if (DefConOffMessage) {
                    oper_global(NULL, "%s", DefConOffMessage);
                } else {
                    oper_global(NULL, getstring(NULL, DEFCON_GLOBAL),
                                DefConLevel);
                }
            }
            if (GlobalOnDefconMore && !DefConOffMessage) {
                oper_global(NULL, "%s", DefconMessage);
            }
            runDefCon();
        }
    }
}
Esempio n. 2
0
static int do_saset_language(User * u, NickCore * nc, char *param)
{
    int langnum;

    if (param[strspn(param, "0123456789")] != 0) {      /* i.e. not a number */
        syntax_error(s_NickServ, u, "SASET LANGUAGE",
                     NICK_SASET_LANGUAGE_SYNTAX);
        return MOD_CONT;
    }
    langnum = atoi(param) - 1;
    if (langnum < 0 || langnum >= NUM_LANGS || langlist[langnum] < 0) {
        notice_lang(s_NickServ, u, NICK_SASET_LANGUAGE_UNKNOWN, langnum + 1,
                    s_NickServ);
        return MOD_CONT;
    }
    nc->language = langlist[langnum];
    alog("%s: %s!%s@%s set the language of %s to %s",
         s_NickServ, u->nick, u->username, u->host, nc->display, getstring2(nc, LANG_NAME));
    notice_lang(s_NickServ, u, NICK_SASET_LANGUAGE_CHANGED, nc->display, getstring2(nc, LANG_NAME));

    return MOD_CONT;
}
Esempio n. 3
0
static void new_memo_mail(NickCore * nc, Memo * m)
{
    MailInfo *mail = NULL;

    if (!nc || !m)
        return;

    mail = MailMemoBegin(nc);
    if (!mail) {
        return;
    }
    fprintf(mail->pipe, getstring2(NULL, MEMO_MAIL_TEXT1), nc->display);
    fprintf(mail->pipe, "\n");
    fprintf(mail->pipe, getstring2(NULL, MEMO_MAIL_TEXT2), m->sender,
            m->number);
    fprintf(mail->pipe, "\n\n");
    fprintf(mail->pipe, "%s", getstring2(NULL, MEMO_MAIL_TEXT3));
    fprintf(mail->pipe, "\n\n");
    fprintf(mail->pipe, "%s", m->text);
    fprintf(mail->pipe, "\n");
    MailEnd(mail);
    return;
}
Esempio n. 4
0
/**
 * The /os set command.
 * @param u The user who issued the command
 * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
 **/
static int do_set(User * u)
{
    char *option = strtok(NULL, " ");
    char *setting = strtok(NULL, " ");
    int index;
    Channel *c;

    if (!option) {
        syntax_error(s_OperServ, u, "SET", OPER_SET_SYNTAX);
    } else if (stricmp(option, "LIST") == 0) {
        index =
            (allow_ignore ? OPER_SET_LIST_OPTION_ON :
             OPER_SET_LIST_OPTION_OFF);
        notice_lang(s_OperServ, u, index, "IGNORE");
        index =
            (readonly ? OPER_SET_LIST_OPTION_ON :
             OPER_SET_LIST_OPTION_OFF);
        notice_lang(s_OperServ, u, index, "READONLY");
        index =
            (logchan ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF);
        notice_lang(s_OperServ, u, index, "LOGCHAN");
        index =
            (debug ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF);
        notice_lang(s_OperServ, u, index, "DEBUG");
        index =
            (noexpire ? OPER_SET_LIST_OPTION_ON :
             OPER_SET_LIST_OPTION_OFF);
        notice_lang(s_OperServ, u, index, "NOEXPIRE");
#ifdef USE_MYSQL
        index =
            (do_mysql ? OPER_SET_LIST_OPTION_ON :
             OPER_SET_LIST_OPTION_OFF);
        notice_lang(s_OperServ, u, index, "SQL");
#endif
    } else if (!setting) {
        syntax_error(s_OperServ, u, "SET", OPER_SET_SYNTAX);
    } else if (stricmp(option, "IGNORE") == 0) {
        if (stricmp(setting, "on") == 0) {
            allow_ignore = 1;
            notice_lang(s_OperServ, u, OPER_SET_IGNORE_ON);
        } else if (stricmp(setting, "off") == 0) {
            allow_ignore = 0;
            notice_lang(s_OperServ, u, OPER_SET_IGNORE_OFF);
        } else {
            notice_lang(s_OperServ, u, OPER_SET_IGNORE_ERROR);
        }
#ifdef USE_MYSQL
    } else if (stricmp(option, "SQL") == 0) {
        if (stricmp(setting, "on") == 0) {
            if (!MysqlHost) {
                notice_lang(s_OperServ, u, OPER_SET_SQL_ERROR_DISABLED);
            } else {
                if (rdb_init()) {
                    notice_lang(s_OperServ, u, OPER_SET_SQL_ON);
                } else {
                    notice_lang(s_OperServ, u, OPER_SET_SQL_ERROR_INIT);
                }
            }
        } else if (stricmp(setting, "off") == 0) {
            if (!MysqlHost) {
                notice_lang(s_OperServ, u, OPER_SET_SQL_ERROR_DISABLED);
            } else {
                /* could call rdb_close() but that does nothing - TSL */
                do_mysql = 0;
                notice_lang(s_OperServ, u, OPER_SET_SQL_OFF);
            }
        } else {
            notice_lang(s_OperServ, u, OPER_SET_SQL_ERROR);
        }
#endif
    } else if (stricmp(option, "READONLY") == 0) {
        if (stricmp(setting, "on") == 0) {
            readonly = 1;
            alog("Read-only mode activated");
            close_log();
            notice_lang(s_OperServ, u, OPER_SET_READONLY_ON);
        } else if (stricmp(setting, "off") == 0) {
            readonly = 0;
            open_log();
            alog("Read-only mode deactivated");
            notice_lang(s_OperServ, u, OPER_SET_READONLY_OFF);
        } else {
            notice_lang(s_OperServ, u, OPER_SET_READONLY_ERROR);
        }

    } else if (stricmp(option, "LOGCHAN") == 0) {
        /* Unlike the other SET commands where only stricmp is necessary,
         * we also have to ensure that LogChannel is defined or we can't
         * send to it.
         *
         * -jester
         */
        if (LogChannel && (stricmp(setting, "on") == 0)) {
            if (ircd->join2msg) {
                c = findchan(LogChannel);
                anope_cmd_join(s_GlobalNoticer, LogChannel, c ? c->creation_time : time(NULL));
            }
            logchan = 1;
            alog("Now sending log messages to %s", LogChannel);
            notice_lang(s_OperServ, u, OPER_SET_LOGCHAN_ON, LogChannel);
        } else if (LogChannel && (stricmp(setting, "off") == 0)) {
            alog("No longer sending log messages to a channel");
            if (ircd->join2msg) {
                anope_cmd_part(s_GlobalNoticer, LogChannel, NULL);
            }
            logchan = 0;
            notice_lang(s_OperServ, u, OPER_SET_LOGCHAN_OFF);
        } else {
            notice_lang(s_OperServ, u, OPER_SET_LOGCHAN_ERROR);
        }
        /**
         * Allow the user to turn super admin on/off
	 *
	 * Rob
         **/
    } else if (stricmp(option, "SUPERADMIN") == 0) {
        if (!SuperAdmin) {
            notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_NOT_ENABLED);
        } else if (stricmp(setting, "on") == 0) {
            u->isSuperAdmin = 1;
            notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_ON);
            alog("%s: %s is a SuperAdmin ", s_OperServ, u->nick);
            anope_cmd_global(s_OperServ,
                             getstring2(NULL, OPER_SUPER_ADMIN_WALL_ON),
                             u->nick);
        } else if (stricmp(setting, "off") == 0) {
            u->isSuperAdmin = 0;
            notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_OFF);
            alog("%s: %s is no longer a SuperAdmin", s_OperServ, u->nick);
            anope_cmd_global(s_OperServ,
                             getstring2(NULL, OPER_SUPER_ADMIN_WALL_OFF),
                             u->nick);
        } else {
            notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_SYNTAX);
        }
    } else if (stricmp(option, "DEBUG") == 0) {
        if (stricmp(setting, "on") == 0) {
            debug = 1;
            alog("Debug mode activated");
            notice_lang(s_OperServ, u, OPER_SET_DEBUG_ON);
        } else if (stricmp(setting, "off") == 0 ||
                   (*setting == '0' && atoi(setting) == 0)) {
            alog("Debug mode deactivated");
            debug = 0;
            notice_lang(s_OperServ, u, OPER_SET_DEBUG_OFF);
        } else if (isdigit(*setting) && atoi(setting) > 0) {
            debug = atoi(setting);
            alog("Debug mode activated (level %d)", debug);
            notice_lang(s_OperServ, u, OPER_SET_DEBUG_LEVEL, debug);
        } else {
            notice_lang(s_OperServ, u, OPER_SET_DEBUG_ERROR);
        }

    } else if (stricmp(option, "NOEXPIRE") == 0) {
        if (stricmp(setting, "ON") == 0) {
            noexpire = 1;
            alog("No expire mode activated");
            notice_lang(s_OperServ, u, OPER_SET_NOEXPIRE_ON);
        } else if (stricmp(setting, "OFF") == 0) {
            noexpire = 0;
            alog("No expire mode deactivated");
            notice_lang(s_OperServ, u, OPER_SET_NOEXPIRE_OFF);
        } else {
            notice_lang(s_OperServ, u, OPER_SET_NOEXPIRE_ERROR);
        }
    } else {
        notice_lang(s_OperServ, u, OPER_SET_UNKNOWN_OPTION, option);
    }
    return MOD_CONT;
}