void html_top10client_title(FILE * ptr) { SET_SEGV_LOCATION(); if (ptr) { fprintf(ptr, "%s", langstring(HTML_TOP10_CLIENT_TITLE)); } }
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); }
void html_dailystats_title(FILE * ptr) { SET_SEGV_LOCATION(); if (ptr) { fprintf(ptr, "%s", langstring(HTML_DAILY_TITLE)); } }
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; }
/* 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; }
/** * 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(); }