private void HandleIrcCommand(string message)
{
var IMessage = new IRCMessage();
IMessage.ServerId = _serverid;
IMessage.ServerName = _servername;
string[] IrcCommand = message.Split(SchumixBase.Space);
IrcCommand[0] = IrcCommand[0].Remove(0, 1, SchumixBase.Colon);
IMessage.Hostmask = IrcCommand[0];
if(IrcCommand.Length > 2)
IMessage.Channel = sUtilities.SqlEscape(IrcCommand[2]);
string[] userdata = IMessage.Hostmask.Split('!');
IMessage.Nick = userdata[0];
IMessage.SqlEscapeNick = sUtilities.SqlEscape(userdata[0]);
if(userdata.Length > 1)
{
string[] hostdata = userdata[1].Split('@');
IMessage.User = hostdata[0];
IMessage.Host = hostdata[1];
}
string opcode = IrcCommand[1];
IMessage.Info = IrcCommand;
IMessage.Args = IrcCommand.SplitToString(3, SchumixBase.Space);
IMessage.Args = IMessage.Args.Remove(0, 1, SchumixBase.Colon);
IMessage.SetMessageType();
if(IrcMethodMap.ContainsKey(opcode))
{
IrcMethodMap[opcode].Method.Invoke(IMessage);
return;
}
else
{
if(IrcCommand[0] == "PING")
{
sSender.Pong(IrcCommand[1].Remove(0, 1, SchumixBase.Colon));
return;
}
else if(IrcCommand[0] == "ERROR")
{
NetworkQuit = true;
return;
}
else
{
if(ConsoleLog.CLog)
Log.Notice("HandleIrcCommand", sLConsole.GetString("Received unhandled opcode: {0}"), opcode);
}
}
}