1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-06-28 14:16:06 +02: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

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

View File

@ -3,25 +3,40 @@
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
modpath.."/?/init.lua;"
-- For LuaIRC to find its files
..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
-- /usr/local/share and /usr/local/lib but LuaSocket is often installed under
-- /usr/share and /usr/lib.
if not rawget(_G,"jit") and package.config:sub(1, 1) == "/" then
package.path = package.path..
if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
ie.package.path = ie.package.path..
";/usr/share/lua/5.1/?.lua"..
";/usr/share/lua/5.1/?/init.lua"
package.cpath = package.cpath..
-- ";/usr/lib/lua/5.1/?.so"
";/usr/lib/x86_64-linux-gnu/lua/5.1/?.so"
if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
ie.package.path = ie.package.path..
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 = {
version = "0.2.0",
connected = false,
@ -30,7 +45,7 @@ irc = {
recent_message_count = 0,
joined_players = {},
modpath = modpath,
lib = require("irc"),
lib = lib,
}
-- Compatibility
@ -38,7 +53,7 @@ mt_irc = irc
dofile(modpath.."/config.lua")
dofile(modpath.."/messages.lua")
dofile(modpath.."/hooks.lua")
loadfile(modpath.."/hooks.lua")(ie)
dofile(modpath.."/callback.lua")
dofile(modpath.."/chatcmds.lua")
dofile(modpath.."/botcmds.lua")
@ -104,9 +119,6 @@ function irc:connect()
return
end
print("== This is a debug line, please check for it ==")
print(self.config.NSPass)
print("=== DEBUG FINISHED ===")
if self.config.NSPass then
self:say("NickServ", "IDENTIFY "..self.config.NSPass)
end