mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-25 10:39:29 +00:00
campaignd: Move auth functionality out of server.cpp
This commit is contained in:
parent
b5aab70128
commit
cfa0342829
@ -2,6 +2,7 @@ addon/validation.cpp
|
||||
server/common/server_base.cpp
|
||||
server/common/simple_wml.cpp
|
||||
server/campaignd/addon_utils.cpp
|
||||
server/campaignd/auth.cpp
|
||||
server/campaignd/blacklist.cpp
|
||||
server/campaignd/fs_commit.cpp
|
||||
server/campaignd/server.cpp
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "game_config.hpp"
|
||||
#include "addon/validation.hpp"
|
||||
#include "server/campaignd/addon_utils.hpp"
|
||||
#include "server/campaignd/auth.hpp"
|
||||
#include "server/campaignd/blacklist.hpp"
|
||||
#include "server/campaignd/control.hpp"
|
||||
#include "server/campaignd/fs_commit.hpp"
|
||||
@ -65,39 +66,23 @@ static lg::log_domain log_server("server");
|
||||
|
||||
#include "server/common/send_receive_wml_helpers.ipp"
|
||||
|
||||
namespace campaignd {
|
||||
|
||||
namespace {
|
||||
|
||||
/* Secure password storage functions */
|
||||
bool authenticate(config& campaign, const config::attribute_value& passphrase)
|
||||
{
|
||||
return utils::md5(passphrase, campaign["passsalt"]).base64_digest() == campaign["passhash"];
|
||||
}
|
||||
|
||||
std::string generate_salt(std::size_t len)
|
||||
{
|
||||
boost::mt19937 mt(std::time(0));
|
||||
std::string salt = std::string(len, '0');
|
||||
boost::uniform_int<> from_str(0, 63); // 64 possible values for base64
|
||||
boost::variate_generator< boost::mt19937, boost::uniform_int<>> get_char(mt, from_str);
|
||||
|
||||
for(std::size_t i = 0; i < len; i++) {
|
||||
salt[i] = crypt64::encode(get_char());
|
||||
}
|
||||
|
||||
return salt;
|
||||
return auth::verify_passphrase(passphrase, campaign["passsalt"], campaign["passhash"]);
|
||||
}
|
||||
|
||||
void set_passphrase(config& campaign, std::string passphrase)
|
||||
{
|
||||
std::string salt = generate_salt(16);
|
||||
campaign["passsalt"] = salt;
|
||||
campaign["passhash"] = utils::md5(passphrase, salt).base64_digest();
|
||||
std::tie(campaign["passsalt"], campaign["passhash"]) = auth::generate_hash(passphrase);
|
||||
}
|
||||
|
||||
} // end anonymous namespace
|
||||
|
||||
namespace campaignd {
|
||||
|
||||
server::server(const std::string& cfg_file)
|
||||
: server_base(default_campaignd_port, true)
|
||||
, addons_()
|
||||
|
Loading…
x
Reference in New Issue
Block a user