Esempio n. 1
0
void html_top10client_title(FILE * ptr)
{
    SET_SEGV_LOCATION();
    if (ptr) {
        fprintf(ptr, "%s", langstring(HTML_TOP10_CLIENT_TITLE));
    }
}
Esempio n. 2
0
void fatal_perror(const char *fmt, ...)
{
    va_list args;
    char *buf, buf2[4096];
    int errno_save = errno;
#ifdef _WIN32
    char errbuf[256];
#else
    char *errbuf;
#endif

#ifdef _WIN32
    strerror_s(errbuf, sizeof(errbuf), errno_save);
#else
    errbuf = strerror(errno_save);
#endif

    checkday();

    buf = log_gettimestamp();

    va_start(args, fmt);
    ircvsnprintf(buf2, sizeof(buf2), fmt, args);
    va_end(args);
    if (!NoLogs && logfile)
        fprintf(logfile, "%sFATAL: %s: %s\n", buf, buf2, errbuf);

    if (stderr)
        fprintf(stderr, "%sFATAL: %s: %s\n", buf, buf2, errbuf);

    if (servsock >= 0)
        denora_cmd_global(NULL, langstring(GLOBAL_FATAL_ERROR), buf2,
                          errbuf);
    exit(1);
}
Esempio n. 3
0
void html_dailystats_title(FILE * ptr)
{
    SET_SEGV_LOCATION();
    if (ptr) {
        fprintf(ptr, "%s", langstring(HTML_DAILY_TITLE));
    }
}
Esempio n. 4
0
int db_mysql_init()
{

    SET_SEGV_LOCATION();

    /* If the host is not defined, assume we don't want MySQL */
    if (!SqlHost) {
        denora->do_sql = 0;
        alog(LOG_NORMAL, langstring(ALOG_SQL_DISABLED));
        return 0;
    } else {
        denora->do_sql = 1;
        alog(LOG_NORMAL, langstring(ALOG_SQL_ENABLED), "MySQL");
        alog(LOG_SQLDEBUG, "MySQL: client version %s.",
             mysql_get_client_info());
    }

    SET_SEGV_LOCATION();

    /* The following configuration options are required.
     * If missing disable MySQL to avoid any problems.
     */

    if ((denora->do_sql) && (!SqlName || !SqlUser)) {
        denora->do_sql = 0;
        alog(LOG_ERROR, langstring(ALOG_SQL_NOTSET));
        return 0;
    }

    SET_SEGV_LOCATION();

    if (!db_mysql_open()) {
        denora->do_sql = 0;
        return 0;
    } else {
        denora->do_sql = 1;
        alog(LOG_SQLDEBUG, "MySQL: server version %s.",
             mysql_get_server_info(mysql));
    }
    SET_SEGV_LOCATION();

    return 1;
}
Esempio n. 5
0
/* ENVINFO command */
static int do_envinfo(User * u, int ac, char **av)
{
    int uptime;

    if (denora->protocoldebug) {
        protocol_debug(NULL, ac, av);
    }

    uptime = time(NULL) - denora->start_time;

    notice_lang(s_StatServ, u, STAT_ENVINFO_HEADER);
    /* version, protocol, uplink */
    notice_lang(s_StatServ, u, STAT_ENVINFO_VERSION,
                denora->versiondotted);
    notice_lang(s_StatServ, u, STAT_ENVINFO_PROTOCOL,
                denora->version_protocol);
    notice_lang(s_StatServ, u, STAT_ENVINFO_UPLINK, denora->uplink);
    /* Yes/No responses */
    notice_lang(s_StatServ, u, STAT_ENVINFO_SQL,
                denora->do_sql ? langstring(SAY_YES) : langstring(SAY_NO));
    notice_lang(s_StatServ, u, STAT_ENVINFO_HTML,
                denora->do_html ? langstring(SAY_YES) :
                langstring(SAY_NO));
    notice_lang(s_StatServ, u, STAT_ENVINFO_DEBUG,
                denora->debug ? langstring(SAY_YES) : langstring(SAY_NO));
    /* How many modules loaded */
    notice_lang(s_StatServ, u, STAT_ENVINFO_MODULESLOADED, moduleCount(0));
    /* Language in use */
    notice_lang(s_StatServ, u, STAT_ENVINFO_LANGUAGE,
                langstring(LANG_NAME));
    /* Stats uptime information */
    if (uptime / 86400 == 1)
        notice_lang(s_StatServ, u, STATS_UPTIME_1DHMS, uptime / 86400,
                    (uptime / 3600) % 24, (uptime / 60) % 60, uptime % 60);
    else
        notice_lang(s_StatServ, u, STATS_UPTIME_DHMS, uptime / 86400,
                    (uptime / 3600) % 24, (uptime / 60) % 60, uptime % 60);
    /* End of ENVINFO */
    notice_lang(s_StatServ, u, STAT_ENVINFO_FOOTER);

    return MOD_CONT;
}
Esempio n. 6
0
/**
 * Connect to SQL Database
 *
 * @return void - no returend value
 *
 */
void db_connect(void)
{
    Exclude *e, *next;
    ChannelStats *cs;
    int tablecount = 0;
    char *sqlchan;

    if (!denora->do_sql) {
        alog(LOG_ERROR, langstring(ALOG_FAILED_SQL_CONNECT),
             rdb_error_msg());
        return;
    }
    SET_SEGV_LOCATION();

    /* Checking for missing tables */
    if (!rdb_check_table(ChanTable))
        tablecount++;
    if (!rdb_check_table(IsOnTable))
        tablecount++;
    if (!rdb_check_table(ServerTable))
        tablecount++;
    if (!rdb_check_table(UserTable))
        tablecount++;
    if (!rdb_check_table(GlineTable))
        tablecount++;
    if (!rdb_check_table(ChanBansTable))
        tablecount++;
    if (!rdb_check_table(CTCPTable))
        tablecount++;
    if (!rdb_check_table(SpamTable))
        tablecount++;
    if (!rdb_check_table(ChanExceptTable))
        tablecount++;
    if (!rdb_check_table(ChanInviteTable))
        tablecount++;
    if (!rdb_check_table(TLDTable))
        tablecount++;
    if (!rdb_check_table(SglineTable))
        tablecount++;
    if (!rdb_check_table(SqlineTable))
        tablecount++;
    if (!rdb_check_table(MaxValueTable))
        tablecount++;
    if (!rdb_check_table(AliasesTable))
        tablecount++;
    if (!rdb_check_table(CStatsTable))
        tablecount++;
    if (!rdb_check_table(UStatsTable))
        tablecount++;
    if (!rdb_check_table(StatsTable))
        tablecount++;
    if (!rdb_check_table(CurrentTable))
        tablecount++;
    if (!rdb_check_table(ChanStatsTable))
        tablecount++;
    if (!rdb_check_table(ServerStatsTable))
        tablecount++;
    if (!rdb_check_table(ChanQuietTable))
        tablecount++;
    if (!rdb_check_table(AdminTable))
        tablecount++;

    if (tablecount) {
        alog(LOG_ERROR,
             "Denora is missing %d required sql tables, disabling sql. Run ./mydbgen to update your sql db.",
             tablecount);
        denora->do_sql = 0;
        return;
    }

    /* Cleaning up the database */
    rdb_clear_table(ChanTable);
    rdb_clear_table(IsOnTable);
    rdb_clear_table(ServerTable);
    rdb_clear_table(UserTable);
    rdb_clear_table(GlineTable);
    rdb_clear_table(ChanBansTable);
    rdb_clear_table(CTCPTable);
    rdb_clear_table(SpamTable);
    rdb_clear_table(ChanExceptTable);
    rdb_clear_table(ChanInviteTable);
    rdb_clear_table(TLDTable);
    rdb_clear_table(SglineTable);
    rdb_clear_table(SqlineTable);

    e = first_exclude();
    while (e) {
        next = next_exclude();
        rdb_query(QUERY_LOW, "DELETE FROM %s WHERE uname=\'%s\'",
                  UStatsTable, e->name);
        e = next;
    }
    rdb_query(QUERY_LOW, "DELETE FROM %s WHERE uname=\'%s\'", UStatsTable,
              s_StatServ);
    if (s_StatServ_alias) {
        rdb_query(QUERY_LOW, "DELETE FROM %s WHERE uname=\'%s\'",
                  UStatsTable, s_StatServ_alias);
    }

    if (LogChannel) {
        if (!(cs = find_cs(LogChannel))) {
            if (cs) {
                del_cs(cs);
            }
            sqlchan = rdb_escape(LogChannel);
            save_cs_db();
            rdb_query(QUERY_LOW, "DELETE FROM %s WHERE chan=\'%s\'",
                      CStatsTable, sqlchan);
            rdb_query(QUERY_LOW, "DELETE FROM %s WHERE chan=\'%s\'",
                      UStatsTable, sqlchan);
            free(sqlchan);
        }
    }
    if (!db_getcurrent_chans()) {
        rdb_query(QUERY_LOW, "INSERT INTO %s VALUES ('chans', 0, 0); ",
                  CurrentTable);
    }

    SET_SEGV_LOCATION();
}