mirror of
https://github.com/mt-mods/playerfactions.git
synced 2025-08-08 11:20:33 +02:00
Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
d6e7c62b84 |
34
init.lua
34
init.lua
@ -159,7 +159,7 @@ function factions.register_faction(faction_name, player_name, password)
|
||||
facts[faction_name] = {
|
||||
name = faction_name,
|
||||
owner = player_name,
|
||||
password = password,
|
||||
password256 = factions.hash_password(password),
|
||||
members = { [player_name] = true }
|
||||
}
|
||||
save_factions()
|
||||
@ -178,25 +178,32 @@ function factions.disband_faction(faction_name)
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
function factions.hash_password(password)
|
||||
return minetest.sha256(password)
|
||||
end
|
||||
|
||||
|
||||
function factions.valid_password(faction_name, password)
|
||||
if not facts[faction_name] or not password then
|
||||
return false
|
||||
end
|
||||
return password == facts[faction_name].password
|
||||
|
||||
return factions.hash_password(password) == facts[faction_name].password256
|
||||
end
|
||||
|
||||
function factions.get_password(faction_name)
|
||||
if not facts[faction_name] then
|
||||
return false
|
||||
end
|
||||
return facts[faction_name].password
|
||||
function factions.get_password()
|
||||
minetest.log("warning", "Deprecated use of factions.get_password(). "
|
||||
.. "Please update to using factions.valid_password() instead.")
|
||||
return nil
|
||||
end
|
||||
|
||||
function factions.set_password(faction_name, password)
|
||||
if not (facts[faction_name] and 'string' == type(password)) then
|
||||
return false
|
||||
end
|
||||
facts[faction_name].password = password
|
||||
|
||||
facts[faction_name].password256 = factions.hash_password(password)
|
||||
save_factions()
|
||||
return true
|
||||
end
|
||||
@ -284,7 +291,8 @@ function cc.list()
|
||||
end
|
||||
end
|
||||
|
||||
function cc.info(player_name, params, not_admin)
|
||||
|
||||
function cc.info(player_name, params)
|
||||
local faction_name = params[2]
|
||||
if not faction_name then
|
||||
local player_factions = factions.get_player_factions(player_name)
|
||||
@ -309,10 +317,6 @@ function cc.info(player_name, params, not_admin)
|
||||
local summary = S("Name: @1\nOwner: @2\nMembers: @3",
|
||||
faction_name, factions.get_owner(faction_name),
|
||||
table.concat(faction_members, ", "))
|
||||
if not not_admin or factions.get_owner(faction_name) == player_name then
|
||||
summary = summary .. "\n"
|
||||
.. S("Password: @1", factions.get_password(faction_name))
|
||||
end
|
||||
return true, summary
|
||||
end
|
||||
end
|
||||
@ -579,6 +583,10 @@ do
|
||||
fact.members = {
|
||||
[fact.owner] = true
|
||||
}
|
||||
end
|
||||
if fact.password then
|
||||
fact.password256 = factions.hash_password(fact.password)
|
||||
fact.password = nil
|
||||
save_needed = true
|
||||
end
|
||||
end
|
||||
|
@ -36,7 +36,6 @@ Missing player name.=Spielername fehlt.
|
||||
Name: @1@nOwner: @2@nMembers: @3=Name: @1@nBesitzer: @2@nMitglieder: @3
|
||||
Ownership has been transferred to @1.=Eigentum wurde auf @1 übertragen.
|
||||
Password has been updated.=Passwort wurde aktualisiert.
|
||||
Password: @1=Passwort: @1
|
||||
Permission denied: Wrong password.=Berechtigung verweigert: Falsches Passwort.
|
||||
|
||||
Permission denied: You are not the owner of that faction, and don't have the @1 privilege.=Berechtigung verweigert: Du bist nicht der Besitzer dieser Fraktion und hast nicht das @1-Privileg.
|
||||
|
@ -36,7 +36,6 @@ Missing player name.=Falta el nombre del jugador.
|
||||
Name: @1@nOwner: @2@nMembers: @3=Nombre: @1@nPropietario: @2@nMiembros: @3
|
||||
Ownership has been transferred to @1.=La propiedad ha sido transferida a @1.
|
||||
Password has been updated.=La contraseña ha sido actualizada.
|
||||
Password: @1=Contraseña: @1
|
||||
Permission denied: Wrong password.=Permiso denegado: Contraseña incorrecta.
|
||||
|
||||
Permission denied: You are not the owner of that faction, and don't have the @1 privilege.=Permiso denegado: No eres el propietario de esa facción y no tienes el privilegio @1.
|
||||
|
@ -36,7 +36,6 @@ Missing player name.=Nom de joueur manquant.
|
||||
Name: @1@nOwner: @2@nMembers: @3=Nom : @1@nPropriétaire : @2@nMembres : @3
|
||||
Ownership has been transferred to @1.=La propriété a été transférée à @1.
|
||||
Password has been updated.=Le mot de passe a été mis à jour.
|
||||
Password: @1=Mot de passe : @1
|
||||
Permission denied: Wrong password.=Permission refusée : mauvais mot de passe.
|
||||
|
||||
Permission denied: You are not the owner of that faction, and don't have the @1 privilege.=Permission refusée : tu n'es pas le propriétaire de cette faction, et tu n'as pas le privilège @1.
|
||||
|
@ -36,7 +36,6 @@ Missing player name.=
|
||||
Name: @1@nOwner: @2@nMembers: @3=
|
||||
Ownership has been transferred to @1.=
|
||||
Password has been updated.=
|
||||
Password: @1=
|
||||
Permission denied: Wrong password.=
|
||||
|
||||
Permission denied: You are not the owner of that faction, and don't have the @1 privilege.=
|
||||
|
2
mod.conf
2
mod.conf
@ -1,3 +1,3 @@
|
||||
name = playerfactions
|
||||
min_minetest_version = 5.0.0
|
||||
min_minetest_version = 5.9.0
|
||||
optional_depends = mtt
|
||||
|
38
mtt.lua
38
mtt.lua
@ -43,10 +43,15 @@ local function dbChecks(callback)
|
||||
assert('table' == type(facts.Alberian.members))
|
||||
-- make sure owners have been added as memebers
|
||||
assert(true == facts.Alberian.members.Albert)
|
||||
-- should never fail
|
||||
assert('eEe' == facts.Endorian.password)
|
||||
assert('a' == facts.Alberian.password)
|
||||
assert('GgG♥💩☺' == facts.Gandalfian.password)
|
||||
-- hash tests, should never fail unless engine made a mistake
|
||||
assert('8b2713b352c6fa2d22272a91612fba2f87d0c01885762a1522a7b4aec5592a80'
|
||||
== facts.Endorian.password256)
|
||||
assert('ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb'
|
||||
== facts.Alberian.password256)
|
||||
assert('3bfe911604e3fb079ad535a0c359a8457aea39d663bb4f21648842e3a4eaccf9'
|
||||
== facts.Gandalfian.password256)
|
||||
-- no more cleartext passwords (doesn't make sense in test-environement)
|
||||
assert(nil == facts.Gandalfian.password)
|
||||
|
||||
callback()
|
||||
end
|
||||
@ -193,6 +198,12 @@ mtt.register('backend functions: disband_faction', function(callback)
|
||||
callback()
|
||||
end)
|
||||
|
||||
mtt.register('backend functions: hash_password', function(callback)
|
||||
-- (tested in basic db checks)
|
||||
|
||||
callback()
|
||||
end)
|
||||
|
||||
mtt.register('backend functions: valid_password', function(callback)
|
||||
assert(false == factions.valid_password())
|
||||
assert(false == factions.valid_password('Endorian'))
|
||||
@ -202,9 +213,9 @@ mtt.register('backend functions: valid_password', function(callback)
|
||||
callback()
|
||||
end)
|
||||
|
||||
mtt.register('backend functions: get_password', function(callback)
|
||||
assert(false == factions.get_password())
|
||||
assert('eEe' == factions.get_password('Endorian'))
|
||||
mtt.register('backend functions: get_password (depricated)', function(callback)
|
||||
assert(nil == factions.get_password())
|
||||
assert(nil == factions.get_password('Endorian'))
|
||||
|
||||
callback()
|
||||
end)
|
||||
@ -313,7 +324,6 @@ mtt.register('frontend functions: info', function(callback)
|
||||
'Gandalfian, Endorian'), 'Gandalf', 'info'))
|
||||
-- SwissalpS can't be bothered to check some of these results in depth,
|
||||
-- so just dumping result for optical check.
|
||||
-- owner sees password
|
||||
pd('Endor executes: /factions info', fcc('Endor', 'info'))
|
||||
assert(fcc('Endor', 'info'))
|
||||
factions.max_members_list = 1
|
||||
@ -323,9 +333,6 @@ mtt.register('frontend functions: info', function(callback)
|
||||
factions.max_members_list = 11
|
||||
pd('Endor executes: /factions info Gandalfian', fcc('Endor', 'info Gandalfian'))
|
||||
assert(fcc('Endor', 'info Gandalfian'))
|
||||
-- admin sees password
|
||||
pd('Albert executes: /factions info Gandalfian', fcc('Albert', 'info Gandalfian'))
|
||||
assert(fcc('Albert', 'info Gandalfian'))
|
||||
|
||||
callback()
|
||||
end)
|
||||
@ -430,13 +437,16 @@ mtt.register('frontend functions: passwd', function(callback)
|
||||
'Endor', 'passwd foobar Gandalfian'))
|
||||
assert(fccc(true, S("Password has been updated."),
|
||||
'Endor', 'passwd foobar'))
|
||||
assert(factions.get_facts().Endorian.password == 'foobar')
|
||||
assert(factions.get_facts().Endorian.password256 ==
|
||||
'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2')
|
||||
assert(fccc(true, S("Password has been updated."),
|
||||
'Gandalf', 'passwd foobar Gandalfian'))
|
||||
assert(factions.get_facts().Gandalfian.password == 'foobar')
|
||||
assert(factions.get_facts().Gandalfian.password256 ==
|
||||
'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2')
|
||||
assert(fccc(true, S("Password has been updated."),
|
||||
'Albert', 'passwd barf Gandalfian'))
|
||||
assert(factions.get_facts().Gandalfian.password == 'barf')
|
||||
assert(factions.get_facts().Gandalfian.password256 ==
|
||||
'8a6e40cfcd99060eb1efdfeb689fe26606e221b4fd487bb224ab79a82648ccd9')
|
||||
|
||||
callback()
|
||||
end)
|
||||
|
Reference in New Issue
Block a user