summaryrefslogtreecommitdiff
path: root/modules/database
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-05-05 01:55:04 -0400
committerAdam <Adam@anope.org>2013-05-05 01:55:04 -0400
commit1d0bb9b26b7ad58ab0bf979ac046f4511b3bf12b (patch)
tree4486f0784bdf050fd7eb225c0cb9df352ce1f45a /modules/database
parent781defb7076ddfddf723ca08cd0a518b6657b64f (diff)
Rework the config file reader to be much more flexible and move many configuration directives to the actual modules they are used in.
Diffstat (limited to 'modules/database')
-rw-r--r--modules/database/db_flatfile.cpp31
-rw-r--r--modules/database/db_old.cpp3
-rw-r--r--modules/database/db_plain.cpp14
-rw-r--r--modules/database/db_sql.cpp10
-rw-r--r--modules/database/db_sql_live.cpp11
5 files changed, 31 insertions, 38 deletions
diff --git a/modules/database/db_flatfile.cpp b/modules/database/db_flatfile.cpp
index dcf4a5aa4..8cede5394 100644
--- a/modules/database/db_flatfile.cpp
+++ b/modules/database/db_flatfile.cpp
@@ -102,12 +102,10 @@ class LoadData : public Serialize::Data
class DBFlatFile : public Module, public Pipe
{
- Anope::string database_file;
/* Day the last backup was on */
int last_day;
/* Backup file names */
std::map<Anope::string, std::list<Anope::string> > backups;
- bool use_fork;
bool loaded;
void BackupDatabase()
@@ -121,7 +119,7 @@ class DBFlatFile : public Module, public Pipe
const std::vector<Anope::string> &type_order = Serialize::Type::GetTypeOrder();
std::set<Anope::string> dbs;
- dbs.insert(database_file);
+ dbs.insert(Config->GetModule(this)->Get<const Anope::string &>("database"));
for (unsigned i = 0; i < type_order.size(); ++i)
{
@@ -146,7 +144,7 @@ class DBFlatFile : public Module, public Pipe
{
Log(this) << "Unable to back up database " << *it << "!";
- if (!Config->NoBackupOkay)
+ if (!Config->GetModule(this)->Get<bool>("nobackupok"))
Anope::Quitting = true;
continue;
@@ -154,7 +152,8 @@ class DBFlatFile : public Module, public Pipe
backups[*it].push_back(newname);
- if (Config->KeepBackups > 0 && backups[*it].size() > static_cast<unsigned>(Config->KeepBackups))
+ unsigned keepbackups = Config->GetModule(this)->Get<unsigned>("keepbackups");
+ if (keepbackups > 0 && backups[*it].size() > keepbackups)
{
unlink(backups[*it].front().c_str());
backups[*it].pop_front();
@@ -164,10 +163,10 @@ class DBFlatFile : public Module, public Pipe
}
public:
- DBFlatFile(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, DATABASE | VENDOR), last_day(0), use_fork(false), loaded(false)
+ DBFlatFile(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, DATABASE | VENDOR), last_day(0), loaded(false)
{
- Implementation i[] = { I_OnReload, I_OnLoadDatabase, I_OnSaveDatabase, I_OnSerializeTypeCreate };
+ Implementation i[] = { I_OnLoadDatabase, I_OnSaveDatabase, I_OnSerializeTypeCreate };
ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation));
}
@@ -187,22 +186,16 @@ class DBFlatFile : public Module, public Pipe
Log(this) << "Error saving databases: " << buf;
- if (!Config->NoBackupOkay)
+ if (!Config->GetModule(this)->Get<bool>("nobackupok"))
Anope::Quitting = true;
}
- void OnReload(ServerConfig *conf, ConfigReader &reader) anope_override
- {
- database_file = reader.ReadValue("db_flatfile", "database", "anope.db", 0);
- use_fork = reader.ReadFlag("db_flatfile", "fork", "no", 0);
- }
-
EventReturn OnLoadDatabase() anope_override
{
const std::vector<Anope::string> &type_order = Serialize::Type::GetTypeOrder();
std::set<Anope::string> tried_dbs;
- const Anope::string &db_name = Anope::DataDir + "/" + database_file;
+ const Anope::string &db_name = Anope::DataDir + "/" + Config->GetModule(this)->Get<const Anope::string &>("database");
std::fstream fd(db_name.c_str(), std::ios_base::in);
if (!fd.is_open())
@@ -253,7 +246,7 @@ class DBFlatFile : public Module, public Pipe
int i = -1;
#ifndef _WIN32
- if (use_fork)
+ if (Config->GetModule(this)->Get<bool>("fork"))
{
i = fork();
if (i > 0)
@@ -279,7 +272,7 @@ class DBFlatFile : public Module, public Pipe
if (s_type->GetOwner())
db_name = Anope::DataDir + "/module_" + s_type->GetOwner()->name + ".db";
else
- db_name = Anope::DataDir + "/" + database_file;
+ db_name = Anope::DataDir + "/" + Config->GetModule(this)->Get<const Anope::string &>("database");
if (Anope::IsFile(db_name))
rename(db_name.c_str(), (db_name + ".tmp").c_str());
@@ -311,7 +304,7 @@ class DBFlatFile : public Module, public Pipe
for (std::map<Module *, std::fstream *>::iterator it = databases.begin(), it_end = databases.end(); it != it_end; ++it)
{
std::fstream *f = it->second;
- const Anope::string &db_name = Anope::DataDir + "/" + (it->first ? (it->first->name + ".db") : database_file);
+ const Anope::string &db_name = Anope::DataDir + "/" + (it->first ? (it->first->name + ".db") : Config->GetModule(this)->Get<const Anope::string &>("database"));
if (!f->is_open() || !f->good())
{
@@ -356,7 +349,7 @@ class DBFlatFile : public Module, public Pipe
if (stype->GetOwner())
db_name = Anope::DataDir + "/module_" + stype->GetOwner()->name + ".db";
else
- db_name = Anope::DataDir + "/" + database_file;
+ db_name = Anope::DataDir + "/" + Config->GetModule(this)->Get<const Anope::string &>("database");
std::fstream fd(db_name.c_str(), std::ios_base::in);
if (!fd.is_open())
diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp
index 6eba8a2a9..52d61bfad 100644
--- a/modules/database/db_old.cpp
+++ b/modules/database/db_old.cpp
@@ -1098,8 +1098,7 @@ class DBOld : public Module
Implementation i[] = { I_OnLoadDatabase, I_OnUplinkSync };
ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation));
- ConfigReader conf;
- hashm = conf.ReadValue("db_old", "hash", "", 0);
+ hashm = Config->GetModule(this)->Get<const Anope::string &>("hash");
if (hashm != "md5" && hashm != "oldmd5" && hashm != "sha1" && hashm != "plain" && hashm != "sha256")
throw ModuleException("Invalid hash method");
diff --git a/modules/database/db_plain.cpp b/modules/database/db_plain.cpp
index 11274c593..76a2aa455 100644
--- a/modules/database/db_plain.cpp
+++ b/modules/database/db_plain.cpp
@@ -136,7 +136,7 @@ EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const Anope::string &key, co
try
{
if (key.equals_ci("BANTYPE"))
- ci->bantype = params[0].is_pos_number_only() ? convertTo<int16_t>(params[0]) : Config->CSDefBantype;
+ ci->bantype = params[0].is_pos_number_only() ? convertTo<int16_t>(params[0]) : 2;
else if (key.equals_ci("MEMOMAX"))
ci->memos.memomax = params[0].is_pos_number_only() ? convertTo<int16_t>(params[0]) : -1;
else if (key.equals_ci("FOUNDER"))
@@ -618,7 +618,7 @@ class DBPlain : public Module
{
Log() << "Unable to back up database!";
- if (!Config->NoBackupOkay)
+ if (!Config->GetModule(this)->Get<bool>("nobackupok"))
Anope::Quitting = true;
return;
@@ -626,7 +626,7 @@ class DBPlain : public Module
Backups.push_back(newname);
- unsigned KeepBackups = Config->KeepBackups;
+ unsigned KeepBackups = Config->GetModule(this)->Get<unsigned>("keepbackups");
if (KeepBackups && Backups.size() > KeepBackups)
{
unlink(Backups.front().c_str());
@@ -635,10 +635,12 @@ class DBPlain : public Module
}
}
- void OnReload(ServerConfig *conf, ConfigReader &reader) anope_override
+ void OnReload(Configuration::Conf *conf) anope_override
{
- DatabaseFile = Anope::DataDir + "/" + reader.ReadValue("db_plain", "database", "anope.db", 0);
- BackupFile = Anope::DataDir + "/backups/" + reader.ReadValue("db_plain", "database", "anope.db", 0);
+ DatabaseFile = Anope::DataDir + "/" + conf->GetModule(this)->Get<const Anope::string &>("database");
+ if (DatabaseFile.empty())
+ DatabaseFile = "anope.db";
+ BackupFile = Anope::DataDir + "/backups/" + DatabaseFile;
}
EventReturn OnLoadDatabase() anope_override
diff --git a/modules/database/db_sql.cpp b/modules/database/db_sql.cpp
index 894037026..400619159 100644
--- a/modules/database/db_sql.cpp
+++ b/modules/database/db_sql.cpp
@@ -146,12 +146,12 @@ class DBSQL : public Module, public Pipe
this->imported = true;
}
- void OnReload(ServerConfig *conf, ConfigReader &reader) anope_override
+ void OnReload(Configuration::Conf *conf) anope_override
{
- Anope::string engine = reader.ReadValue("db_sql", "engine", "", 0);
- this->sql = ServiceReference<Provider>("SQL::Provider", engine);
- this->prefix = reader.ReadValue("db_sql", "prefix", "anope_db_", 0);
- this->import = reader.ReadFlag("db_sql", "import", "false", 0);
+ Configuration::Block *block = conf->GetModule(this);
+ this->sql = ServiceReference<Provider>("SQL::Provider", block->Get<const Anope::string &>("engine"));
+ this->prefix = block->Get<const Anope::string &>("prefix", "anope_db_");
+ this->import = block->Get<bool>("import");
}
void OnShutdown() anope_override
diff --git a/modules/database/db_sql_live.cpp b/modules/database/db_sql_live.cpp
index 239c543c2..a7116892d 100644
--- a/modules/database/db_sql_live.cpp
+++ b/modules/database/db_sql_live.cpp
@@ -7,7 +7,6 @@ using namespace SQL;
class DBMySQL : public Module, public Pipe
{
private:
- Anope::string engine;
Anope::string prefix;
ServiceReference<Provider> SQL;
time_t lastwarn;
@@ -29,7 +28,7 @@ class DBMySQL : public Module, public Pipe
}
else
{
- if (Anope::CurTime - Config->UpdateTimeout > lastwarn)
+ if (Anope::CurTime - Config->GetBlock("options")->Get<time_t>("updatetimeout") > lastwarn)
{
Log() << "Unable to locate SQL reference, going to readonly...";
Anope::ReadOnly = this->ro = true;
@@ -130,11 +129,11 @@ class DBMySQL : public Module, public Pipe
init = false;
}
- void OnReload(ServerConfig *conf, ConfigReader &reader) anope_override
+ void OnReload(Configuration::Conf *conf) anope_override
{
- this->engine = reader.ReadValue("db_sql", "engine", "", 0);
- this->SQL = ServiceReference<Provider>("SQL::Provider", this->engine);
- this->prefix = reader.ReadValue("db_sql", "prefix", "anope_db_", 0);
+ Configuration::Block *block = conf->GetModule(this);
+ this->SQL = ServiceReference<Provider>("SQL::Provider", block->Get<const Anope::string &>("engine"));
+ this->prefix = block->Get<const Anope::string &>("prefix", "anope_db_");
}
void OnSerializableConstruct(Serializable *obj) anope_override