1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-01-11 18:40:25 +01:00

Updated IRC to handle mod security

- Solves part of #47
This commit is contained in:
LeMagnesium 2015-07-05 15:31:21 +02:00
parent 6aebcc4a4e
commit 8076227918
6 changed files with 59 additions and 22 deletions

View File

@ -32,6 +32,11 @@ many distributions, for example:
# # On Debian/Ubuntu: # # On Debian/Ubuntu:
# apt-get install lua-socket # apt-get install lua-socket
You will also need to add IRC to your trusted mods if you haven't disabled mod
security. Here's an example configuration line:
secure.trusted_mods = irc
Settings Settings
-------- --------

View File

@ -1,8 +1,10 @@
-- This file is licensed under the terms of the BSD 2-clause license. -- This file is licensed under the terms of the BSD 2-clause license.
-- See LICENSE.txt for details. -- See LICENSE.txt for details.
local ie = ...
-- MIME is part of LuaSocket -- MIME is part of LuaSocket
local b64e = require("mime").b64 local b64e = ie.require("mime").b64
irc.hooks = {} irc.hooks = {}
irc.registered_hooks = {} irc.registered_hooks = {}

View File

@ -3,25 +3,40 @@
local modpath = minetest.get_modpath(minetest.get_current_modname()) local modpath = minetest.get_modpath(minetest.get_current_modname())
package.path = -- Handle mod security if needed
local ie, req_ie = _G, minetest.request_insecure_environment
if req_ie then ie = req_ie() end
if not ie then
error("The IRC mod requires access to insecure functions in order "..
"to work. Please add the irc mod to your secure.trusted_mods "..
"setting or disable the irc mod.")
end
ie.package.path =
-- To find LuaIRC's init.lua -- To find LuaIRC's init.lua
modpath.."/?/init.lua;" modpath.."/?/init.lua;"
-- For LuaIRC to find its files -- For LuaIRC to find its files
..modpath.."/?.lua;" ..modpath.."/?.lua;"
..package.path ..ie.package.path
..";/usr/lib/*/lua/5.1/socket/*.so" ..";/usr/lib/*/lua/5.1/socket/*.so"
-- The build of Lua that Minetest comes with only looks for libraries under -- The build of Lua that Minetest comes with only looks for libraries under
-- /usr/local/share and /usr/local/lib but LuaSocket is often installed under -- /usr/local/share and /usr/local/lib but LuaSocket is often installed under
-- /usr/share and /usr/lib. -- /usr/share and /usr/lib.
if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
package.path = package.path.. ie.package.path = ie.package.path..
";/usr/share/lua/5.1/?.lua".. ";/usr/share/lua/5.1/?.lua"..
";/usr/share/lua/5.1/?/init.lua" ";/usr/share/lua/5.1/?/init.lua"
package.cpath = package.cpath.. if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
";/usr/lib/lua/5.1/?.so" ie.package.path = ie.package.path..
end end
-- Temporarily set require so that LuaIRC can access it
local old_require = require
require = ie.require
local lib = ie.require("irc")
require = old_require
irc = { irc = {
version = "0.2.0", version = "0.2.0",
connected = false, connected = false,
@ -30,7 +45,7 @@ irc = {
recent_message_count = 0, recent_message_count = 0,
joined_players = {}, joined_players = {},
modpath = modpath, modpath = modpath,
lib = require("irc"), lib = lib,
} }
-- Compatibility -- Compatibility
@ -38,7 +53,7 @@ mt_irc = irc
dofile(modpath.."/config.lua") dofile(modpath.."/config.lua")
dofile(modpath.."/messages.lua") dofile(modpath.."/messages.lua")
dofile(modpath.."/hooks.lua") loadfile(modpath.."/hooks.lua")(ie)
dofile(modpath.."/callback.lua") dofile(modpath.."/callback.lua")
dofile(modpath.."/chatcmds.lua") dofile(modpath.."/chatcmds.lua")
dofile(modpath.."/botcmds.lua") dofile(modpath.."/botcmds.lua")

View File

@ -1,8 +1,10 @@
-- This file is licensed under the terms of the BSD 2-clause license. -- This file is licensed under the terms of the BSD 2-clause license.
-- See LICENSE.txt for details. -- See LICENSE.txt for details.
local ie = ...
-- MIME is part of LuaSocket -- MIME is part of LuaSocket
local b64e = require("mime").b64 local b64e = ie.require("mime").b64
irc.hooks = {} irc.hooks = {}
irc.registered_hooks = {} irc.registered_hooks = {}
@ -252,7 +254,7 @@ function irc.hooks.preregister(conn)
conn:send("CAP REQ sasl") conn:send("CAP REQ sasl")
conn:send("AUTHENTICATE PLAIN") conn:send("AUTHENTICATE PLAIN")
conn:send("AUTHENTICATE "..authString) conn:send("AUTHENTICATE "..authString)
--LuaIRC will send CAP END conn:send("CAP END")
end end

View File

@ -3,25 +3,40 @@
local modpath = minetest.get_modpath(minetest.get_current_modname()) local modpath = minetest.get_modpath(minetest.get_current_modname())
package.path = -- Handle mod security if needed
local ie, req_ie = _G, minetest.request_insecure_environment
if req_ie then ie = req_ie() end
if not ie then
error("The IRC mod requires access to insecure functions in order "..
"to work. Please add the irc mod to your secure.trusted_mods "..
"setting or disable the irc mod.")
end
ie.package.path =
-- To find LuaIRC's init.lua -- To find LuaIRC's init.lua
modpath.."/?/init.lua;" modpath.."/?/init.lua;"
-- For LuaIRC to find its files -- For LuaIRC to find its files
..modpath.."/?.lua;" ..modpath.."/?.lua;"
..package.path ..ie.package.path
..";/usr/lib/*/lua/5.1/socket/*.so"
-- The build of Lua that Minetest comes with only looks for libraries under -- The build of Lua that Minetest comes with only looks for libraries under
-- /usr/local/share and /usr/local/lib but LuaSocket is often installed under -- /usr/local/share and /usr/local/lib but LuaSocket is often installed under
-- /usr/share and /usr/lib. -- /usr/share and /usr/lib.
if not rawget(_G,"jit") and package.config:sub(1, 1) == "/" then if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
package.path = package.path.. ie.package.path = ie.package.path..
";/usr/share/lua/5.1/?.lua".. ";/usr/share/lua/5.1/?.lua"..
";/usr/share/lua/5.1/?/init.lua" ";/usr/share/lua/5.1/?/init.lua"
package.cpath = package.cpath.. if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
-- ";/usr/lib/lua/5.1/?.so" ie.package.path = ie.package.path..
";/usr/lib/x86_64-linux-gnu/lua/5.1/?.so"
end end
-- Temporarily set require so that LuaIRC can access it
local old_require = require
require = ie.require
local lib = ie.require("irc")
require = old_require
irc = { irc = {
version = "0.2.0", version = "0.2.0",
connected = false, connected = false,
@ -30,7 +45,7 @@ irc = {
recent_message_count = 0, recent_message_count = 0,
joined_players = {}, joined_players = {},
modpath = modpath, modpath = modpath,
lib = require("irc"), lib = lib,
} }
-- Compatibility -- Compatibility
@ -38,7 +53,7 @@ mt_irc = irc
dofile(modpath.."/config.lua") dofile(modpath.."/config.lua")
dofile(modpath.."/messages.lua") dofile(modpath.."/messages.lua")
dofile(modpath.."/hooks.lua") loadfile(modpath.."/hooks.lua")(ie)
dofile(modpath.."/callback.lua") dofile(modpath.."/callback.lua")
dofile(modpath.."/chatcmds.lua") dofile(modpath.."/chatcmds.lua")
dofile(modpath.."/botcmds.lua") dofile(modpath.."/botcmds.lua")
@ -104,9 +119,6 @@ function irc:connect()
return return
end end
print("== This is a debug line, please check for it ==")
print(self.config.NSPass)
print("=== DEBUG FINISHED ===")
if self.config.NSPass then if self.config.NSPass then
self:say("NickServ", "IDENTIFY "..self.config.NSPass) self:say("NickServ", "IDENTIFY "..self.config.NSPass)
end end

View File

@ -12,6 +12,7 @@ NPC pour qu'il devienne dressé. Cliquer-droit sur lui le fera alternativement s
suivre. suivre.
---xx/07/2015--- (Remerciements : LeMagnesium/Mg, Obani, mgl512/Le_Docteur, Gael-de-Sailly, crabman77/crabman) ---xx/07/2015--- (Remerciements : LeMagnesium/Mg, Obani, mgl512/Le_Docteur, Gael-de-Sailly, crabman77/crabman)
MAJ de "irc" (prise en charge de la sécurité des mods)
MAJ de "money" (utilisation d'une version plus récente et optimisée, nouvelles textures) MAJ de "money" (utilisation d'une version plus récente et optimisée, nouvelles textures)
MAJ de "3d_armor" (nombreux bugfixs, ajout d'un paramètre de "poids" augmentant la faim en fonction de l'armure portée, les valeurs seront disponibles sur le site bientôt) MAJ de "3d_armor" (nombreux bugfixs, ajout d'un paramètre de "poids" augmentant la faim en fonction de l'armure portée, les valeurs seront disponibles sur le site bientôt)
MAJ de "nether" (crashfix de la nourriture du nether) MAJ de "nether" (crashfix de la nourriture du nether)