moremesecons_sayer: request an insecure environment

This commit is contained in:
paly2 2016-12-09 15:36:04 +01:00
parent ffe8d5f8c0
commit b341335d3b
1 changed files with 22 additions and 3 deletions

View File

@ -1,10 +1,29 @@
local MAX_DISTANCE = 8
local use_speech_dispatcher = true
local popen, execute = io.popen, os.execute
if use_speech_dispatcher then
if not minetest.is_singleplayer() then
minetest.log("warning", "[moremesecons_sayer] use_speech_dispatcher = true, but the speech dispatcher can only be used in singleplayer")
use_speech_dispatcher = false
else
local ie = {}
if minetest.request_insecure_environment then
ie = minetest.request_insecure_environment()
end
if not ie then
minetest.log("warning", "[moremesecons_sayer] This mod needs access to insecure functions in order to use the speech dispatcher. Please add the moremesecons_sayer mod to your secure.trusted_mods settings or disable the speech dispatcher.")
use_speech_dispatcher = false
else
popen = ie.io.popen
execute = ie.os.execute
end
end
end
local sayer_activate
if use_speech_dispatcher
and minetest.is_singleplayer() -- must! executing commands with it and crashes may be possible
and io.popen("if hash spd-say 2>/dev/null; then printf yes; fi"):read("*all") == "yes" then
and popen("if hash spd-say 2>/dev/null; then printf yes; fi"):read("*all") == "yes" then
minetest.log("info", "[moremesecons_sayer] using speech dispatcher")
local tab = {
"spd-say",
@ -46,7 +65,7 @@ and io.popen("if hash spd-say 2>/dev/null; then printf yes; fi"):read("*all") ==
else
tab[4] = "-i "..volume
end
os.execute(table.concat(tab, " "))
execute(table.concat(tab, " "))
end
else
function sayer_activate(pos)