diff options
Diffstat (limited to 'src/rdb.c')
-rw-r--r-- | src/rdb.c | 496 |
1 files changed, 0 insertions, 496 deletions
diff --git a/src/rdb.c b/src/rdb.c deleted file mode 100644 index 09b2aacf4..000000000 --- a/src/rdb.c +++ /dev/null @@ -1,496 +0,0 @@ -/* RDB functions. - * - * (C) 2003-2008 Anope Team - * Contact us at info@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * - * $Id$ - * - */ -#include "services.h" - -/*************************************************************************/ - -/* Initialize the current RDB database engine */ -int rdb_init() -{ - -#ifdef USE_MYSQL - return db_mysql_init(); -#endif - - return 0; -} - -/*************************************************************************/ - -/* Check if RDB can be used to load/save data */ -int rdb_open() -{ - -#ifdef USE_MYSQL - return db_mysql_open(); /* db_mysql_open(); */ -#endif - - return 0; -} - -/*************************************************************************/ - -/* Strictly spoken this should close the database. However, it's not too - * efficient to close it every time after a write or so, so we just - * pretend we closed it while in reality it's still open. - */ -int rdb_close() -{ - -#ifdef USE_MYSQL - return 1; /* db_mysql_close(); */ -#endif - - return 1; -} - -/*************************************************************************/ - -/* Quote the string to be used in inclused for the current RDB database */ -char *rdb_quote(char *str) -{ -#ifdef USE_MYSQL - return db_mysql_quote(str); -#endif - - return sstrdup(str); -} - -/*************************************************************************/ - -/* Tag a table by setting the 'active' field to 0 for all rows. After an - * update, all rows with active still 0 will be deleted; this is done to - * easily delete old entries from the database. - */ -int rdb_tag_table(const char* table) -{ -#ifdef USE_MYSQL - return db_mysql_try("UPDATE %s SET active = 0", table); -#endif - - return 0; - -} - -/* Be sure to quote all user input in the clause! */ -int rdb_tag_table_where(const char* table, const char* clause) -{ -#ifdef USE_MYSQL - return db_mysql_try("UPDATE %s SET active = 0 WHERE %s", table, - clause); -#endif - - return 0; - -} - -/*************************************************************************/ - -/* Empty an entire database table */ -int rdb_empty_table(const char* table) -{ -#ifdef USE_MYSQL - return db_mysql_try("TRUNCATE TABLE %s", table); -#endif - - return 0; - -} - -/*************************************************************************/ - -/* Clean up a table with 'dirty' records (active = 0) */ -int rdb_clean_table(const char* table) -{ -#ifdef USE_MYSQL - return db_mysql_try("DELETE FROM %s WHERE active = 0", table); -#endif - - return 0; -} - -/* Be sure to quote user input in the clause! */ -int rdb_clean_table_where(const char* table, const char* clause) -{ -#ifdef USE_MYSQL - return db_mysql_try("DELETE FROM %s WHERE active = 0 AND (%s)", table, - clause); -#endif - - return 0; -} - -/*************************************************************************/ - -/* Delete specific records from a table. The clause is MySQL syntax, and - * should be all quoted up nicely in the calling code. - */ -int rdb_scrub_table(const char* table, const char* clause) -{ -#ifdef USE_MYSQL - return db_mysql_try("DELETE FROM %s WHERE %s", table, clause); -#endif - - return 0; - -} - -/*************************************************************************/ - -/* Execute a direct MySQL query. Do NOT forget to quote all user input! - * NOTE: this ideally shouldn't be used, but that's probably a phase3 utopia - */ -int rdb_direct_query(char *query) -{ - -#ifdef USE_MYSQL - alog("Direct Query: %s", query); - return db_mysql_query(query); -#endif - - return 0; - -} - -/*************************************************************************/ - -/* Update the needed tables when someone changes their display. - * The original author didn't even like this (claimed it should be in - * mysql.c), and i do agree muchly. - */ -int rdb_ns_set_display(char *newnick, char *oldnick) -{ - int ret = 0; - char *q_newnick; - char *q_oldnick; - - q_newnick = rdb_quote(newnick); - q_oldnick = rdb_quote(oldnick); - -#ifdef USE_MYSQL - /* Change the display on NS_CORE */ - ret = - db_mysql_try - ("UPDATE anope_ns_core SET display = '%s' WHERE display = '%s'", - q_newnick, q_oldnick); - - /* Change the display on NS_ALIAS for all grouped nicks */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_ns_alias SET display='%s' WHERE display='%s'", - q_newnick, q_oldnick); - - /* Change the display on ChanServ ACCESS list */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_cs_access SET display='%s' WHERE display='%s'", - q_newnick, q_oldnick); - - /* Change the display on ChanServ AKICK list */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_cs_akicks SET creator='%s' WHERE creator='%s'", - q_newnick, q_oldnick); - - /* Change the display on MemoServ sent memos -- is it required? */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_ms_info SET sender='%s' WHERE sender='%s'", - q_newnick, q_oldnick); - - /* Change the display on MemoServ received memos -- is it required? */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_ms_info SET receiver='%s' WHERE receiver='%s'", - q_newnick, q_oldnick); - - /* Change the akills set on the person's nick */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_cs_akicks SET dmask='%s' WHERE dmask='%s' AND flags & %d", - q_newnick, q_oldnick, AK_ISNICK); - - /* Change the display on NickServ ACCESS list */ - if (ret) - ret = - db_mysql_try - ("UPDATE anope_ns_access SET display='%s' WHERE display='%s'", - q_newnick, q_oldnick); - - /* No need to update anope_cs_info here as it is updated when we - * save the database. - * - * anope_hs_core is per nick, not per display; a changed display - * won't change anything there - */ - -#endif - - free(q_newnick); - free(q_oldnick); - - return ret; -} - -/*************************************************************************/ - -int rdb_save_ns_core(NickCore * nc) -{ - -#ifdef USE_MYSQL - return db_mysql_save_ns_core(nc); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_ns_alias(NickAlias * na) -{ - -#ifdef USE_MYSQL - return db_mysql_save_ns_alias(na); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_ns_req(NickRequest * nr) -{ - -#ifdef USE_MYSQL - return db_mysql_save_ns_req(nr); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_cs_info(ChannelInfo * ci) -{ - -#ifdef USE_MYSQL - return db_mysql_save_cs_info(ci); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_bs_core(BotInfo * bi) -{ - -#ifdef USE_MYSQL - return db_mysql_save_bs_core(bi); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_hs_core(HostCore * hc) -{ - -#ifdef USE_MYSQL - return db_mysql_save_hs_core(hc); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime, - SList * ak, SList * sgl, SList * sql, SList * szl) -{ - -#ifdef USE_MYSQL - return db_mysql_save_os_db(maxusercnt, maxusertime, ak, sgl, sql, szl); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_save_news(NewsItem * ni) -{ - -#ifdef USE_MYSQL - return db_mysql_save_news(ni); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_bs_dbase(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_bs_dbase(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_hs_dbase(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_hs_dbase(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_ns_dbase(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_ns_dbase(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_news(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_news(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_exceptions(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_exceptions(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_cs_dbase(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_cs_dbase(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_os_dbase(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_os_dbase(); -#endif - - return 0; -} - -/*************************************************************************/ - -int rdb_load_ns_req_dbase(void) -{ - -#ifdef USE_MYSQL - return db_mysql_load_ns_req_dbase(); -#endif - - return 0; -} - -/*************************************************************************/ - -#define LOAD_DBASE(num, name, func) {\ - if (!func) {\ - alog("RDB unable to load %s database (%d/8) !!!", name, num);\ - return 0;\ - }\ - if (debug)\ - alog("debug: RDB Loaded %s DataBase (%d/8)", name, num);\ -} - -int rdb_load_dbases(void) -{ - LOAD_DBASE(1, "NickServ", rdb_load_ns_dbase()); - - if (s_HostServ) { - LOAD_DBASE(2, "HostServ", rdb_load_hs_dbase()); - } - - if (s_BotServ) { - LOAD_DBASE(3, "BotServ", rdb_load_bs_dbase()); - } - - LOAD_DBASE(4, "ChanServ", rdb_load_cs_dbase()); - LOAD_DBASE(5, "OperServ", rdb_load_os_dbase()); - LOAD_DBASE(6, "News", rdb_load_news()); - LOAD_DBASE(7, "Exception", rdb_load_exceptions()); - - if (PreNickDBName) { - LOAD_DBASE(8, "PreNick", rdb_load_ns_req_dbase()); - } else if (debug) { - alog("debug: RDB No need to load PreNickDB (8/8)"); - } - - alog("RDB: All DataBases loaded."); - - return 0; -} - -/*************************************************************************/ - -int rdb_save_exceptions(Exception * e) -{ - -#ifdef USE_MYSQL - return db_mysql_save_exceptions(e); -#endif - - return 0; -} - -/* EOF */ |