80 lines
3.3 KiB
Lua
80 lines
3.3 KiB
Lua
verbana.settings = {}
|
|
|
|
local world_path = minetest.get_worldpath()
|
|
|
|
function verbana.settings.set_universal_verification(value)
|
|
if type(value) == 'boolean' then
|
|
minetest.settings:set_bool('verbana.universal_verification', value)
|
|
verbana.settings.universal_verification = value
|
|
else
|
|
verbana.log('error', 'tried to set universal verification to %q', value)
|
|
end
|
|
end
|
|
|
|
local function get_setting(name, default)
|
|
local setting = minetest.settings:get(name)
|
|
if not setting or setting == '' then
|
|
return default
|
|
end
|
|
return setting
|
|
end
|
|
|
|
local function get_jail_bounds()
|
|
-- (x1,y1,z1),(x2,y2,z2)
|
|
local bounds = minetest.settings:get('verbana.jail_bounds')
|
|
if not bounds or bounds == '' then
|
|
return nil
|
|
end
|
|
local x1, y1, z1, x2, y2, z2 = bounds:match(
|
|
'^%s*%(%s*(%-?%d+)%s*,%s*(%-?%d+)%s*,%s*(%-?%d+)%s*%),%(%s*(%-?%d+)%s*,%s*(%-?%d+)%s*,%s*(%-?%d+)%s*%)%s*$'
|
|
)
|
|
if not x1 then
|
|
verbana.log('warning', 'The setting of verbana.jail_bounds %q is invalid, ignoring.', bounds)
|
|
return nil
|
|
end
|
|
x1 = tonumber(x1)
|
|
y1 = tonumber(y1)
|
|
z1 = tonumber(z1)
|
|
x2 = tonumber(x2)
|
|
y2 = tonumber(y2)
|
|
z2 = tonumber(z2)
|
|
if x1 > x2 then x1, x2 = x2, x1 end
|
|
if y1 > y2 then y1, y2 = y2, y1 end
|
|
if z1 > z2 then z1, z2 = z2, z1 end
|
|
return {vector.new(x1, y1, z1), vector.new(x2, y2, z2)}
|
|
end
|
|
|
|
verbana.settings.db_path = get_setting('verbana.db_path', ('%s/verbana.sqlite'):format(world_path))
|
|
verbana.settings.asn_description_path = get_setting('verbana.asn_description_path', ('%s/data-used-autnums'):format(verbana.modpath))
|
|
verbana.settings.asn_data_path = get_setting('verbana.asn_data_path', ('%s/data-raw-table'):format(verbana.modpath))
|
|
|
|
verbana.settings.admin_priv = get_setting('verbana.admin_priv', 'ban_admin')
|
|
verbana.settings.moderator_priv = get_setting('verbana.moderator_priv', 'ban')
|
|
verbana.settings.kick_priv = get_setting('verbana.kick_priv', nil)
|
|
|
|
verbana.settings.verified_privs = minetest.string_to_privs(get_setting('default_privs', 'shout,interact'))
|
|
verbana.settings.unverified_privs = minetest.string_to_privs(get_setting('verbana.unverified_privs', 'shout'))
|
|
verbana.settings.whitelisted_privs = minetest.string_to_privs(get_setting('verbana.whitelisted_privs', ''))
|
|
if #verbana.settings.whitelisted_privs == 0 then verbana.settings.whitelisted_privs = nil end
|
|
|
|
verbana.settings.spawn_pos = minetest.string_to_pos(get_setting('static_spawnpoint', '(0,0,0)'))
|
|
verbana.settings.unverified_spawn_pos = minetest.string_to_pos(get_setting('verbana.unverified_spawn_pos', minetest.pos_to_string(verbana.settings.spawn_pos)))
|
|
|
|
verbana.settings.universal_verification = minetest.settings:get_bool('verbana.universal_verification', false)
|
|
verbana.settings.jail_bounds = get_jail_bounds()
|
|
verbana.settings.jail_check_period = tonumber(get_setting('verbana.jail_check_period'))
|
|
|
|
local debug_is_default -- we revert to debug mode if verification or sban is enabled
|
|
if ((
|
|
minetest.get_modpath('sban') and
|
|
minetest.registered_chatcommands['bang'] -- sban doesn't publish an API, so use this as a proxy
|
|
) or (
|
|
minetest.global_exists('verification')
|
|
)) then
|
|
debug_is_default = 'true'
|
|
else
|
|
debug_is_default = 'false'
|
|
end
|
|
verbana.settings.debug_mode = get_setting('verbana.debug_mode', debug_is_default) == 'true'
|
|
|