summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChrisTX <xpipe@hotmail.de>2012-09-23 12:30:30 +0200
committerattilamolnar <attilamolnar@hush.com>2012-10-04 15:14:04 +0200
commitc2f7fc047c2e5bbb899c820590ce07fee593b28f (patch)
treedca97896004c71a484d6dd189e78e40732a5f041 /src
parent6f5414e1bf63228471e078f29a5889f44e598a8c (diff)
Replace hardcoded paths with configurable ones
This patchset aims to ease the packaging of InspIRCd for a system-wide installation scenario. Changes in detail: configure: Add the options --log-path and --data-path m_ssl_gnutls, openssl: Change the hardcoded "conf/" to the existent CONFIG_PATH macro m_xline_db: Make the location of xline.db configurable. It will use --data-path as default value, but this can be changed using the configuration files.
Diffstat (limited to 'src')
-rw-r--r--src/helperfuncs.cpp2
-rw-r--r--src/inspircd.cpp2
-rw-r--r--src/modules/extra/m_ssl_gnutls.cpp8
-rw-r--r--src/modules/extra/m_ssl_openssl.cpp8
-rw-r--r--src/modules/m_xline_db.cpp19
5 files changed, 26 insertions, 13 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index edb5005d2..4605092a1 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -293,7 +293,7 @@ bool InspIRCd::OpenLog(char**, int)
if (!Config->cmdline.writelog) return true; // Skip opening default log if -nolog
if (Config->cmdline.startup_log.empty())
- Config->cmdline.startup_log = "logs/startup.log";
+ Config->cmdline.startup_log = LOG_PATH "/startup.log";
FILE* startup = fopen(Config->cmdline.startup_log.c_str(), "a+");
if (!startup)
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 4abfb496a..d154c3600 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -287,7 +287,7 @@ void InspIRCd::WritePID(const std::string &filename)
{
std::string fname(filename);
if (fname.empty())
- fname = "data/inspircd.pid";
+ fname = DATA_PATH "/inspircd.pid";
std::ofstream outfile(fname.c_str());
if (outfile.is_open())
{
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)