Mantis#1718. Thank you kindly, Mircea for a patch that:

Adds some IRC bridge improvement.
0.6.0-stable
Charles Krinke 2008-07-12 17:19:24 +00:00
parent 132b95ec95
commit 0b28cf84f1
1 changed files with 17 additions and 9 deletions

View File

@ -181,7 +181,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
if (m_irc.Equals(sender)) return; if (m_irc.Equals(sender)) return;
ScenePresence avatar = null; ScenePresence avatar = null;
Scene scene = (Scene) e.Scene; Scene scene = (Scene)e.Scene;
if (scene == null) if (scene == null)
scene = m_scenes[0]; scene = m_scenes[0];
@ -249,7 +249,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
{ {
m_log.DebugFormat("[IRC] {0} logging on", clientName); m_log.DebugFormat("[IRC] {0} logging on", clientName);
m_irc.PrivMsg(m_irc.Nick, "Sim", m_irc.PrivMsg(m_irc.Nick, "Sim",
String.Format("notices {0} logging on", clientName)); String.Format("notices {0} logging on", clientName));
} }
m_last_new_user = clientName; m_last_new_user = clientName;
} }
@ -309,6 +309,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
// but filters out multiple reports // but filters out multiple reports
if (clientName != m_last_leaving_user) if (clientName != m_last_leaving_user)
{ {
Console.WriteLine("Avatar was seen logging out.");
Console.ReadLine();
Console.WriteLine();
m_last_leaving_user = clientName; m_last_leaving_user = clientName;
m_irc.PrivMsg(m_irc.Nick, "Sim", String.Format("notices {0} logging out", clientName)); m_irc.PrivMsg(m_irc.Nick, "Sim", String.Format("notices {0} logging out", clientName));
m_log.InfoFormat("[IRC]: {0} logging out", clientName); m_log.InfoFormat("[IRC]: {0} logging out", clientName);
@ -367,6 +370,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
private string m_basenick = null; private string m_basenick = null;
private string m_channel = null; private string m_channel = null;
private bool m_nrnick = false;
private bool m_connected = false; private bool m_connected = false;
private bool m_enabled = false; private bool m_enabled = false;
private List<Scene> m_last_scenes = null; private List<Scene> m_last_scenes = null;
@ -380,7 +384,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
private NetworkStream m_stream; private NetworkStream m_stream;
internal object m_syncConnect = new object(); internal object m_syncConnect = new object();
private TcpClient m_tcp; private TcpClient m_tcp;
private string m_user = "USER OpenSimBot 8 * :I'm an OpenSim to irc bot"; private string m_user = "USER OpenSimBot 8 * :I'm an OpenSim to IRC bot";
private StreamWriter m_writer; private StreamWriter m_writer;
private Thread pingSender; private Thread pingSender;
@ -418,13 +422,17 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
m_server = config.Configs["IRC"].GetString("server"); m_server = config.Configs["IRC"].GetString("server");
m_nick = config.Configs["IRC"].GetString("nick"); m_nick = config.Configs["IRC"].GetString("nick");
m_basenick = m_nick; m_basenick = m_nick;
m_nrnick = config.Configs["IRC"].GetBoolean("nicknum");
m_channel = config.Configs["IRC"].GetString("channel"); m_channel = config.Configs["IRC"].GetString("channel");
m_port = (uint) config.Configs["IRC"].GetInt("port", (int) m_port); m_port = (uint)config.Configs["IRC"].GetInt("port", (int)m_port);
m_user = config.Configs["IRC"].GetString("username", m_user); m_user = config.Configs["IRC"].GetString("username", m_user);
m_privmsgformat = config.Configs["IRC"].GetString("msgformat", m_privmsgformat); m_privmsgformat = config.Configs["IRC"].GetString("msgformat", m_privmsgformat);
if (m_server != null && m_nick != null && m_channel != null) if (m_server != null && m_nick != null && m_channel != null)
{ {
m_nick = m_nick + Util.RandomClass.Next(1, 99); if (m_nrnick == true)
{
m_nick = m_nick + Util.RandomClass.Next(1, 99);
}
m_enabled = true; m_enabled = true;
} }
} }
@ -463,7 +471,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
m_last_scenes = scenes; m_last_scenes = scenes;
} }
m_tcp = new TcpClient(m_server, (int) m_port); m_tcp = new TcpClient(m_server, (int)m_port);
m_log.Info("[IRC]: Connecting..."); m_log.Info("[IRC]: Connecting...");
m_stream = m_tcp.GetStream(); m_stream = m_tcp.GetStream();
m_log.Info("[IRC]: Connected to " + m_server); m_log.Info("[IRC]: Connected to " + m_server);
@ -737,7 +745,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
Int32 commandCode = Int32.Parse(commArgs[1]); Int32 commandCode = Int32.Parse(commArgs[1]);
switch (commandCode) switch (commandCode)
{ {
case (int) ErrorReplies.NicknameInUse: case (int)ErrorReplies.NicknameInUse:
// Gen a new name // Gen a new name
m_nick = m_basenick + Util.RandomClass.Next(1, 99); m_nick = m_basenick + Util.RandomClass.Next(1, 99);
m_log.ErrorFormat("[IRC]: IRC SERVER reports NicknameInUse, trying {0}", m_nick); m_log.ErrorFormat("[IRC]: IRC SERVER reports NicknameInUse, trying {0}", m_nick);
@ -747,9 +755,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
m_writer.WriteLine(String.Format("JOIN {0}", m_channel)); m_writer.WriteLine(String.Format("JOIN {0}", m_channel));
m_writer.Flush(); m_writer.Flush();
break; break;
case (int) ErrorReplies.NotRegistered: case (int)ErrorReplies.NotRegistered:
break; break;
case (int) Replies.EndOfMotd: case (int)Replies.EndOfMotd:
break; break;
} }
} }