Skip to content

Commit

Permalink
Make sqlite3 default auth & player backends for new worlds (#8043)
Browse files Browse the repository at this point in the history
* Make sqlite3 default auth & player backends for new worlds

Also notify about auth backend depreciation
  • Loading branch information
nerzhul committed Jan 4, 2019
1 parent 4a7c97c commit 022b1ec
Showing 1 changed file with 49 additions and 23 deletions.
72 changes: 49 additions & 23 deletions src/serverenvironment.cpp
Expand Up @@ -396,36 +396,62 @@ ServerEnvironment::ServerEnvironment(ServerMap *map,
// Determine which database backend to use
std::string conf_path = path_world + DIR_DELIM + "world.mt";
Settings conf;

std::string player_backend_name = "sqlite3";
std::string auth_backend_name = "sqlite3";

bool succeeded = conf.readConfigFile(conf_path.c_str());
if (!succeeded || !conf.exists("player_backend")) {
// fall back to files
conf.set("player_backend", "files");
warningstream << "/!\\ You are using old player file backend. "
<< "This backend is deprecated and will be removed in next release /!\\"
<< std::endl << "Switching to SQLite3 or PostgreSQL is advised, "
<< "please read http://wiki.minetest.net/Database_backends." << std::endl;

if (!conf.updateConfigFile(conf_path.c_str())) {
errorstream << "ServerEnvironment::ServerEnvironment(): "
<< "Failed to update world.mt!" << std::endl;
// If we open world.mt read the backend configurations.
if (succeeded) {
// Read those values before setting defaults
bool player_backend_exists = conf.exists("player_backend");
bool auth_backend_exists = conf.exists("auth_backend");

// player backend is not set, assume it's legacy file backend.
if (!player_backend_exists) {
// fall back to files
conf.set("player_backend", "files");
player_backend_name = "files";

if (!conf.updateConfigFile(conf_path.c_str())) {
errorstream << "ServerEnvironment::ServerEnvironment(): "
<< "Failed to update world.mt!" << std::endl;
}
} else {
conf.getNoEx("player_backend", player_backend_name);
}
}

std::string name;
conf.getNoEx("player_backend", name);
m_player_database = openPlayerDatabase(name, path_world, conf);
// auth backend is not set, assume it's legacy file backend.
if (!auth_backend_exists) {
conf.set("auth_backend", "files");
auth_backend_name = "files";

std::string auth_name = "files";
if (conf.exists("auth_backend")) {
conf.getNoEx("auth_backend", auth_name);
} else {
conf.set("auth_backend", "files");
if (!conf.updateConfigFile(conf_path.c_str())) {
errorstream << "ServerEnvironment::ServerEnvironment(): "
<< "Failed to update world.mt!" << std::endl;
if (!conf.updateConfigFile(conf_path.c_str())) {
errorstream << "ServerEnvironment::ServerEnvironment(): "
<< "Failed to update world.mt!" << std::endl;
}
} else {
conf.getNoEx("auth_backend", auth_backend_name);
}
}
m_auth_database = openAuthDatabase(auth_name, path_world, conf);

if (player_backend_name == "files") {
warningstream << "/!\\ You are using old player file backend. "
<< "This backend is deprecated and will be removed in a future release /!\\"
<< std::endl << "Switching to SQLite3 or PostgreSQL is advised, "
<< "please read http://wiki.minetest.net/Database_backends." << std::endl;
}

if (auth_backend_name == "files") {
warningstream << "/!\\ You are using old auth file backend. "
<< "This backend is deprecated and will be removed in a future release /!\\"
<< std::endl << "Switching to SQLite3 is advised, "
<< "please read http://wiki.minetest.net/Database_backends." << std::endl;
}

m_player_database = openPlayerDatabase(player_backend_name, path_world, conf);
m_auth_database = openAuthDatabase(auth_backend_name, path_world, conf);
}

ServerEnvironment::~ServerEnvironment()
Expand Down

0 comments on commit 022b1ec

Please sign in to comment.