summaryrefslogtreecommitdiff
path: root/rdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'rdb.c')
-rw-r--r--rdb.c347
1 files changed, 347 insertions, 0 deletions
diff --git a/rdb.c b/rdb.c
new file mode 100644
index 000000000..6a2eda29f
--- /dev/null
+++ b/rdb.c
@@ -0,0 +1,347 @@
+/* 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: rdb.c,v 1.11 2003/08/04 01:09:43 dane Exp $
+ *
+ */
+#include "services.h"
+
+/*************************************************************************/
+
+int rdb_init()
+{
+
+#ifdef USE_MYSQL
+ return db_mysql_init();
+#endif
+
+}
+
+/*************************************************************************/
+
+int rdb_open()
+{
+
+#ifdef USE_MYSQL
+ return db_mysql_open();
+#endif
+
+}
+
+/*************************************************************************/
+
+int rdb_close()
+{
+
+#ifdef USE_MYSQL
+ return 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_save_exceptions(Exception * e)
+{
+
+#ifdef USE_MYSQL
+ db_mysql_save_exceptions(e);
+#endif
+
+}