Added auto-reconnect on ping timeout

This commit is contained in:
Diego Martínez 2013-01-08 13:50:47 -02:00
parent 10afaf5783
commit 7caf0dc25f
8 changed files with 80 additions and 21 deletions

View File

@ -183,8 +183,6 @@ I'd like to thank the users who supported this mod both on the Minetest
LICENSE
-------
This license applies only to the `init.lua' and `config.lua' files.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004

2
etc/quickinst.sh Executable file
View File

@ -0,0 +1,2 @@
#! /bin/sh
(cd Build && cmake . && make && make pack_mod && rm -fr ~/.minetest/games/testing/mods/irc && cp -fr irc ~/.minetest/games/testing/mods/ )

View File

@ -1,7 +1,21 @@
-- IRC Mod for Minetest
-- By Diego Martínez <kaeza@users.sf.net>
--
-- This mod allows to tie a Minetest server to an IRC channel.
--
-- This program is free software. It comes without any warranty, to
-- the extent permitted by applicable law. You can redistribute it
-- and/or modify it under the terms of the Do What The Fuck You Want
-- To Public License, Version 2, as published by Sam Hocevar. See
-- http://sam.zoy.org/wtfpl/COPYING for more details.
--
local irc = require("irc");
minetest.register_on_joinplayer(function ( player )
irc.say(mt_irc.channel, "*** "..player:get_player_name().." joined the game");
mt_irc.say(mt_irc.channel, "*** "..player:get_player_name().." joined the game");
mt_irc.connected_players[player:get_player_name()] = mt_irc.auto_join;
end);
@ -39,7 +53,7 @@ local function bot_command ( from, message )
end
if (not mt_irc.bot_commands[cmd]) then
irc.say(from, "Unknown command `"..cmd.."'. Try `!help'.");
mt_irc.say(from, "Unknown command `"..cmd.."'. Try `!help'.");
return;
end
@ -80,14 +94,11 @@ irc.register_callback("private_msg", function ( from, message )
end);
irc.register_callback("kick", function ( chaninfo, to, from )
if (mt_irc.connect_ok) then
mt_irc.connect_ok = false;
minetest.chat_send_all("IRC: Bot was kicked by "..from..". Reconnecting bot in 5 seconds...");
mt_irc.got_motd = true;
mt_irc.connect_ok = false;
irc.quit("Kicked");
minetest.after(5, mt_irc.connect);
end
minetest.chat_send_all("IRC: Bot was kicked by "..from..". Reconnecting bot in 5 seconds...");
mt_irc.got_motd = false;
mt_irc.connect_ok = false;
irc.quit("Kicked");
minetest.after(5, mt_irc.connect);
end);
irc.register_callback("nick_change", function ( from, old_nick )
@ -123,3 +134,11 @@ minetest.register_on_shutdown(function ( )
irc.poll();
end
end);
irc.handlers.on_error = function (from, respond_to)
minetest.chat_send_all("IRC: Ping timeout. Reconnecting bot in 5 seconds...");
mt_irc.got_motd = false;
mt_irc.connect_ok = false;
irc.quit("Ping timeout");
minetest.after(5, mt_irc.connect);
end

View File

@ -1,4 +1,18 @@
-- IRC Mod for Minetest
-- By Diego Martínez <kaeza@users.sf.net>
--
-- This mod allows to tie a Minetest server to an IRC channel.
--
-- This program is free software. It comes without any warranty, to
-- the extent permitted by applicable law. You can redistribute it
-- and/or modify it under the terms of the Do What The Fuck You Want
-- To Public License, Version 2, as published by Sam Hocevar. See
-- http://sam.zoy.org/wtfpl/COPYING for more details.
--
local irc = require("irc");
minetest.register_chatcommand("msg", {
params = "<name> <message>";
description = "Send a private message to an IRC user";

View File

@ -1,3 +1,16 @@
-- IRC Mod for Minetest
-- By Diego Martínez <kaeza@users.sf.net>
--
-- This mod allows to tie a Minetest server to an IRC channel.
--
-- This program is free software. It comes without any warranty, to
-- the extent permitted by applicable law. You can redistribute it
-- and/or modify it under the terms of the Do What The Fuck You Want
-- To Public License, Version 2, as published by Sam Hocevar. See
-- http://sam.zoy.org/wtfpl/COPYING for more details.
--
-- *************************
-- ** BASIC USER SETTINGS **
-- *************************
@ -8,7 +21,7 @@ mt_irc.server = nil;
-- Port to connect on joinplayer (number, default 6667)
mt_irc.port = nil;
-- Channel to connect on joinplayer (string, default "#minetest-irc-testing")
-- Channel to connect on joinplayer (string, default "##mt-irc-mod")
mt_irc.channel = nil;
-- ***********************
@ -23,7 +36,7 @@ mt_irc.timeout = nil;
-- Nickname when using single conection (string, default "minetest-"..<server-id>);
-- (<server-id> is the server IP address packed as a 32 bit integer).
mt_irc.server_nick = nil;
mt_irc.server_nick = "HelloIRC";
-- Password to use when using single connection (string, default "")
mt_irc.password = nil;

View File

@ -1,4 +1,16 @@
-- IRC Mod for Minetest
-- By Diego Martínez <kaeza@users.sf.net>
--
-- This mod allows to tie a Minetest server to an IRC channel.
--
-- This program is free software. It comes without any warranty, to
-- the extent permitted by applicable law. You can redistribute it
-- and/or modify it under the terms of the Do What The Fuck You Want
-- To Public License, Version 2, as published by Sam Hocevar. See
-- http://sam.zoy.org/wtfpl/COPYING for more details.
--
-- TODO
--[[

View File

@ -1,5 +1,6 @@
-- IRC Mod for Minetest
-- (C) 2012 Diego Martínez <kaeza@users.sf.net>
-- By Diego Martínez <kaeza@users.sf.net>
--
-- This mod allows to tie a Minetest server to an IRC channel.
--
@ -142,7 +143,7 @@ mt_irc.say = function ( to, msg )
irc.say(to, msg);
end
mt_irc._irc = irc;
mt_irc.irc = irc;
dofile(MODPATH.."/callback.lua");
dofile(MODPATH.."/chatcmds.lua");

View File

@ -43,11 +43,11 @@ local icallbacks = {
ctcp_version = {},
}
local requestinfo = {whois = {}}
local handlers = {}
local ctcp_handlers = {}
local user_handlers = {}
local serverinfo = {}
local ip = nil
handlers = {}
ctcp_handlers = {}
user_handlers = {}
serverinfo = {}
ip = nil
-- }}}
-- defaults {{{