diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2019-01-04 12:55:07 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-04 12:55:07 +0100 |
commit | 022b1eca0b553326ffff0dcf2212ec1c2af8b868 (patch) | |
tree | d093039e434e2f408ad1c03a3a22d79f800eda89 /src/serverenvironment.cpp | |
parent | 4a7c97c5f6f5e110c587de1569c4ffe53f2c2ef4 (diff) | |
download | minetest-022b1eca0b553326ffff0dcf2212ec1c2af8b868.tar.gz minetest-022b1eca0b553326ffff0dcf2212ec1c2af8b868.tar.bz2 minetest-022b1eca0b553326ffff0dcf2212ec1c2af8b868.zip |
Make sqlite3 default auth & player backends for new worlds (#8043)
* Make sqlite3 default auth & player backends for new worlds
Also notify about auth backend depreciation
Diffstat (limited to 'src/serverenvironment.cpp')
-rw-r--r-- | src/serverenvironment.cpp | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index b25840528..4e75a7c80 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -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() |