diff options
| author | rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-07-19 14:08:30 +0000 |
|---|---|---|
| committer | rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-07-19 14:08:30 +0000 |
| commit | a1479a87757fb5e9b48f3c8bb5dd9cc247406f1a (patch) | |
| tree | 06d23a51082a398c512ed8f1e39bdac60d4dd658 /src/rdb.c | |
| parent | 7fffea77edbe72cd66f7a55f41a3966204f9cf86 (diff) | |
BUILD : 1.7.4 (264) BUGS : N/A NOTES : Switched to autoconf - try to commit part 1
git-svn-id: svn://svn.anope.org/anope/trunk@264 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@169 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/rdb.c')
| -rw-r--r-- | src/rdb.c | 466 |
1 files changed, 466 insertions, 0 deletions
diff --git a/src/rdb.c b/src/rdb.c new file mode 100644 index 000000000..5876273dd --- /dev/null +++ b/src/rdb.c @@ -0,0 +1,466 @@ +/* RDB functions. + * + * (C) 2003 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ +#include "services.h" + +/*************************************************************************/ + +int rdb_init() +{ + +#ifdef USE_MYSQL + return db_mysql_init(); +#endif + +} + +/*************************************************************************/ + +int rdb_open() +{ + +#ifdef USE_MYSQL + return do_mysql; // db_mysql_open(); +#endif + +} + +/*************************************************************************/ + +int rdb_close() +{ + +#ifdef USE_MYSQL + return 1; // db_mysql_close(); +#endif + +} + +/*************************************************************************/ + +int rdb_tag_table(char *table) +{ + static char buf[1024]; + +#ifdef USE_MYSQL + snprintf(buf, sizeof(buf), "UPDATE %s SET active='0'", table); + return db_mysql_query(buf); +#endif + + return 0; + +} + +/*************************************************************************/ + +int rdb_clear_table(char *table) +{ + static char buf[1024]; + +#ifdef USE_MYSQL + snprintf(buf, sizeof(buf), "TRUNCATE TABLE %s", table); + return db_mysql_query(buf); +#endif + + return 0; + +} + +/*************************************************************************/ + +int rdb_scrub_table(char *table, char *clause) +{ + + static char buf[1024]; + +#ifdef USE_MYSQL + snprintf(buf, sizeof(buf), "DELETE FROM %s WHERE %s", table, clause); + return db_mysql_query(buf); +#endif + + return 0; + +} + +/*************************************************************************/ + +int rdb_direct_query(char *query) +{ + +#ifdef USE_MYSQL + alog("Direct Query: %s", query); + return db_mysql_query(query); +#endif + + return 0; + +} + +/*************************************************************************/ + +/* I still don't really like doing it this way, it should really be done + * inside mysql.c and not here. So I'll revisit this later + */ +int rdb_ns_set_display(char *newnick, char *oldnick) +{ + static char buf[1024]; + +#ifdef USE_MYSQL + /* Change the display on NS_CORE */ + snprintf(buf, sizeof(buf), + "UPDATE anope_ns_core SET display='%s' WHERE display='%s'", + newnick, oldnick); + db_mysql_query(buf); + + /* Change the display on NS_ALIAS for all grouped nicks */ + snprintf(buf, sizeof(buf), + "UPDATE anope_ns_alias SET display='%s' WHERE display='%s'", + newnick, oldnick); + db_mysql_query(buf); + + /* Change the display on ChanServ ACCESS list */ + snprintf(buf, sizeof(buf), + "UPDATE anope_cs_access SET display='%s' WHERE display='%s'", + newnick, oldnick); + db_mysql_query(buf); + + /* Change the display on ChanServ AKICK list */ + snprintf(buf, sizeof(buf), + "UPDATE anope_cs_access SET creator='%s' WHERE creator='%s'", + newnick, oldnick); + db_mysql_query(buf); + + /* Change the display on MemoServ sent memos */ + snprintf(buf, sizeof(buf), + "UPDATE anope_ms_info SET sender='%s' WHERE sender='%s'", + newnick, oldnick); + db_mysql_query(buf); + + /* Change the display on MemoServ received memos */ + snprintf(buf, sizeof(buf), + "UPDATE anope_ms_info SET receiver='%s' WHERE receiver='%s'", + newnick, oldnick); + db_mysql_query(buf); + + /* Need to do bwords and akills */ + +#endif + + return 0; +} + +/*************************************************************************/ + +int rdb_cs_deluser(char *nick) +{ + static char buf[1024]; + +#ifdef USE_MYSQL + snprintf(buf, sizeof(buf), + "UPDATE anope_cs_info SET successor=NULL WHERE successor='%s'", + nick); + db_mysql_query(buf); + + snprintf(buf, sizeof(buf), "display='%s'", nick); + rdb_scrub_table("anope_cs_access", buf); + snprintf(buf, sizeof(buf), "creator='%s'", nick); + rdb_scrub_table("anope_cs_akicks", buf); + + return 1; +#endif + + return 0; +} + +/*************************************************************************/ + +int rdb_cs_delchan(ChannelInfo * ci) +{ + static char buf[1024]; + char *channel = ci->name; + +#ifdef USE_MYSQL + snprintf(buf, sizeof(buf), + "UPDATE anope_cs_info SET successor=NULL WHERE name='%s'", + channel); + db_mysql_query(buf); + + snprintf(buf, sizeof(buf), "name='%s'", channel); + rdb_scrub_table("anope_cs_info", buf); + snprintf(buf, sizeof(buf), "receiver='%s' AND serv='CHAN'", channel); + rdb_scrub_table("anope_ms_info", buf); + snprintf(buf, sizeof(buf), "channel='%s'", channel); + rdb_scrub_table("anope_cs_access", buf); + rdb_scrub_table("anope_cs_akicks", buf); + rdb_scrub_table("anope_cs_levels", buf); + rdb_scrub_table("anope_cs_badwords", buf); + if (ci->founder) { + snprintf(buf, sizeof(buf), + "update anope_ns_core set channelcount=channelcount-1 where display='%s'", + ci->founder->display); + db_mysql_query(buf); + } + + return 1; +#endif + + return 0; +} + +/*************************************************************************/ + +int rdb_cs_set_founder(char *channel, char *founder) +{ + static char buf[1024]; + +#ifdef USE_MYSQL + snprintf(buf, sizeof(buf), + "UPDATE anope_cs_info SET founder='%s', successor=NULL WHERE name='%s'", + founder, channel); + db_mysql_query(buf); + + snprintf(buf, sizeof(buf), + "UPDATE anope_ns_core SET channelcount=channelcount+1 WHERE display='%s'", + founder); + db_mysql_query(buf); + + /* Do i need to scrub the access list for this channel ? */ + snprintf(buf, sizeof(buf), "display='%s' AND channel='%s'", founder, + channel); + rdb_scrub_table("anope_cs_access", buf); + + return 1; +#endif + + return 0; +} + +/*************************************************************************/ + +void rdb_save_ns_core(NickCore * nc) +{ + +#ifdef USE_MYSQL + db_mysql_save_ns_core(nc); +#endif + +} + +/*************************************************************************/ + +void rdb_save_ns_alias(NickAlias * na) +{ + +#ifdef USE_MYSQL + db_mysql_save_ns_alias(na); +#endif + +} + +/*************************************************************************/ + +void rdb_save_ns_req(NickRequest * nr) +{ + +#ifdef USE_MYSQL + db_mysql_save_ns_req(nr); +#endif + +} + +/*************************************************************************/ + +void rdb_save_cs_info(ChannelInfo * ci) +{ + +#ifdef USE_MYSQL + db_mysql_save_cs_info(ci); +#endif + +} + +/*************************************************************************/ + +void rdb_save_bs_core(BotInfo * bi) +{ + +#ifdef USE_MYSQL + db_mysql_save_bs_core(bi); +#endif + +} + +/*************************************************************************/ + +void rdb_save_hs_core(HostCore * hc) +{ + +#ifdef USE_MYSQL + db_mysql_save_hs_core(hc); +#endif + +} + +/*************************************************************************/ + +void rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime, + SList * ak, SList * sgl, SList * sql, SList * szl, + HostCache * hc) +{ + +#ifdef USE_MYSQL + db_mysql_save_os_db(maxusercnt, maxusertime, ak, sgl, sql, szl, hc); +#endif + +} + +/*************************************************************************/ + +void rdb_save_news(NewsItem * ni) +{ + +#ifdef USE_MYSQL + db_mysql_save_news(ni); +#endif + +} + +/*************************************************************************/ + +void rdb_load_bs_dbase(void) +{ + +#ifdef USE_MYSQL + db_mysql_load_bs_dbase(); +#endif + +} + +/*************************************************************************/ + +void rdb_load_hs_dbase(void) +{ + +#ifdef USE_MYSQL + db_mysql_load_hs_dbase(); +#endif + +} + +/*************************************************************************/ + +void rdb_load_ns_dbase(void) +{ + +#ifdef USE_MYSQL + db_mysql_load_ns_dbase(); +#endif +} + +/*************************************************************************/ + +void rdb_load_news(void) +{ +#ifdef USE_MYSQL + db_mysql_load_news(); +#endif +} + +/*************************************************************************/ + +void rdb_load_exceptions(void) +{ +#ifdef USE_MYSQL + db_mysql_load_exceptions(); +#endif +} + +/*************************************************************************/ + +void rdb_load_cs_dbase(void) +{ +#ifdef USE_MYSQL + db_mysql_load_cs_dbase(); +#endif +} + +/*************************************************************************/ + +void rdb_load_os_dbase(void) +{ +#ifdef USE_MYSQL + db_mysql_load_os_dbase(); +#endif +} + +/*************************************************************************/ + +void rdb_load_ns_req_dbase(void) +{ +#ifdef USE_MYSQL + db_mysql_load_ns_req_dbase(); +#endif +} + +/*************************************************************************/ + +void rdb_load_dbases(void) +{ + if (!skeleton) { + rdb_load_ns_dbase(); + if (debug) + alog("RDB: Loaded NickServ DataBase (1/8)"); + if (s_HostServ) { + rdb_load_hs_dbase(); + if (debug) + alog("RDB: Loaded HostServ DataBase (2/8)"); + } + if (s_BotServ) { + rdb_load_bs_dbase(); + if (debug) + alog("RDB: Loaded BotServ DataBase (3/8)"); + } + rdb_load_cs_dbase(); + if (debug) + alog("RDB: Loaded ChanServ DataBase (4/8)"); + } + rdb_load_os_dbase(); + if (debug) + alog("RDB: Loaded OperServ DataBase (5/8)"); + rdb_load_news(); + if (debug) + alog("RDB: Loaded News DataBase (6/8)"); + rdb_load_exceptions(); + if (debug) + alog("RDB: Loaded Exception Database (7/8)"); + if (PreNickDBName) { + rdb_load_ns_req_dbase(); + if (debug) + alog("RDB: Loaded PreNick DataBase (8/8)"); + } else { + if (debug) + alog("RDB: No need to load PreNickDB (8/8)"); + } + alog("RDB: All DataBases loaded."); +} + +/*************************************************************************/ + +void rdb_save_exceptions(Exception * e) +{ + +#ifdef USE_MYSQL + db_mysql_save_exceptions(e); +#endif + +} |
