diff options
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/extra/m_ssl_gnutls.cpp | 8 | ||||
-rw-r--r-- | src/modules/extra/m_ssl_openssl.cpp | 8 | ||||
-rw-r--r-- | src/modules/m_xline_db.cpp | 19 |
3 files changed, 24 insertions, 11 deletions
diff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp index bf48a49d1..06daf763e 100644 --- a/src/modules/extra/m_ssl_gnutls.cpp +++ b/src/modules/extra/m_ssl_gnutls.cpp @@ -263,10 +263,10 @@ class ModuleSSLGnuTLS : public Module ConfigTag* Conf = ServerInstance->Config->ConfValue("gnutls"); - cafile = Conf->getString("cafile", "conf/ca.pem"); - crlfile = Conf->getString("crlfile", "conf/crl.pem"); - certfile = Conf->getString("certfile", "conf/cert.pem"); - keyfile = Conf->getString("keyfile", "conf/key.pem"); + cafile = Conf->getString("cafile", CONFIG_PATH "/ca.pem"); + crlfile = Conf->getString("crlfile", CONFIG_PATH "/crl.pem"); + certfile = Conf->getString("certfile", CONFIG_PATH "/cert.pem"); + keyfile = Conf->getString("keyfile", CONFIG_PATH "/key.pem"); dh_bits = Conf->getInt("dhbits"); std::string hashname = Conf->getString("hash", "md5"); diff --git a/src/modules/extra/m_ssl_openssl.cpp b/src/modules/extra/m_ssl_openssl.cpp index a8020bba1..36fe2941e 100644 --- a/src/modules/extra/m_ssl_openssl.cpp +++ b/src/modules/extra/m_ssl_openssl.cpp @@ -203,10 +203,10 @@ class ModuleSSLOpenSSL : public Module ConfigTag* conf = ServerInstance->Config->ConfValue("openssl"); - cafile = conf->getString("cafile", "conf/ca.pem"); - certfile = conf->getString("certfile", "conf/cert.pem"); - keyfile = conf->getString("keyfile", "conf/key.pem"); - dhfile = conf->getString("dhfile", "conf/dhparams.pem"); + cafile = conf->getString("cafile", CONFIG_PATH "/ca.pem"); + certfile = conf->getString("certfile", CONFIG_PATH "/cert.pem"); + keyfile = conf->getString("keyfile", CONFIG_PATH "/key.pem"); + dhfile = conf->getString("dhfile", CONFIG_PATH "/dhparams.pem"); std::string hash = conf->getString("hash", "md5"); if (hash != "sha1" && hash != "md5") throw ModuleException("Unknown hash type " + hash); diff --git a/src/modules/m_xline_db.cpp b/src/modules/m_xline_db.cpp index 683c14afa..21c75f45e 100644 --- a/src/modules/m_xline_db.cpp +++ b/src/modules/m_xline_db.cpp @@ -21,6 +21,8 @@ #include "inspircd.h" #include "xline.h" +/* $ModConfig: <xlinedb filename="data/xline.db"> + * Specify the filename for the xline database here*/ /* $ModDesc: Keeps a dynamic log of all XLines created, and stores them in a seperate conf file (xline.db). */ class ModuleXLineDB : public Module @@ -28,11 +30,21 @@ class ModuleXLineDB : public Module std::vector<XLine *> xlines; bool reading_db; // If this is true, addlines are as a result of db reading, so don't bother flushing the db to disk. // DO REMEMBER TO SET IT, otherwise it's annoying :P + std::string xlinedbpath; public: ModuleXLineDB() { Implementation eventlist[] = { I_OnAddLine, I_OnDelLine, I_OnExpireLine }; ServerInstance->Modules->Attach(eventlist, this, 3); + /* Load the configuration + * Note: + * this is on purpose not in the OnRehash() method. It would be non-trivial to change the database on-the-fly. + * Imagine a scenario where the new file already exists. Merging the current XLines with the existing database is likely a bad idea + * ...and so is discarding all current in-memory XLines for the ones in the database. + */ + ConfigTag* Conf = ServerInstance->Config->ConfValue("xlinedb"); + xlinedbpath = Conf->getString("filename", DATA_PATH "/xline.db"); + reading_db = true; ReadDatabase(); reading_db = false; @@ -99,7 +111,8 @@ class ModuleXLineDB : public Module * -- w00t */ ServerInstance->Logs->Log("m_xline_db",DEBUG, "xlinedb: Opening temporary database"); - f = fopen("data/xline.db.new", "w"); + std::string xlinenewdbpath = xlinedbpath + ".new"; + f = fopen(xlinenewdbpath.c_str(), "w"); if (!f) { ServerInstance->Logs->Log("m_xline_db",DEBUG, "xlinedb: Cannot create database! %s (%d)", strerror(errno), errno); @@ -140,7 +153,7 @@ class ModuleXLineDB : public Module } // Use rename to move temporary to new db - this is guarenteed not to fuck up, even in case of a crash. - if (rename("data/xline.db.new", "data/xline.db") < 0) + if (rename(xlinenewdbpath.c_str(), xlinedbpath.c_str()) < 0) { ServerInstance->Logs->Log("m_xline_db",DEBUG, "xlinedb: Cannot move new to old database! %s (%d)", strerror(errno), errno); ServerInstance->SNO->WriteToSnoMask('a', "database: cannot replace old with new db: %s (%d)", strerror(errno), errno); @@ -156,7 +169,7 @@ class ModuleXLineDB : public Module char linebuf[MAXBUF]; unsigned int lineno = 0; - f = fopen("data/xline.db", "r"); + f = fopen(xlinedbpath.c_str(), "r"); if (!f) { if (errno == ENOENT) |