Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="libirc.ProcessorIRC"/> class.
 /// </summary>
 /// <param name="_network">Network we parse this raw IRC data on</param>
 /// <param name="_text">Raw text data as received from ircd</param>
 /// <param name="_pong">_pong.</param>
 /// <param name="_date">Date of this message, if you specify 0 the current time will be used</param>
 /// <param name="updated">If true this text will be considered as newly obtained information</param>
 public ProcessorIRC(Network _network, string _text, ref DateTime _pong, long _date = 0, bool isBacklog = false)
 {
     _Network = _network;
     _Protocol = _network._Protocol;
     ServerLineRawText = _text;
     Date = _date;
     pong = _pong;
     IsBacklog = isBacklog;
 }
Exemplo n.º 2
0
 private bool IdleTime(Network.IncomingDataEventArgs info)
 {
     Network.NetworkWHOISEventArgs ev = new Network.NetworkWHOISEventArgs(this.ServerLineRawText, this.Date);
     ev.Source = info.Source;
     ev.Parameters = info.Parameters;
     ev.ParameterLine = info.ParameterLine;
     ev.WhoisType = Network.NetworkWHOISEventArgs.Mode.Uptime;
     _Network.__evt_WHOIS(ev);
     return true;
 }
Exemplo n.º 3
0
 private bool ChannelBans(Network.IncomingDataEventArgs info)
 {
     if (info.Parameters.Count > 4)
     {
         Channel channel = _Network.GetChannel(info.Parameters[1]);
         if (channel != null)
         {
             if (!channel.ContainsBan(info.Parameters[2]))
                 channel.InsertBan(info.Parameters[2], info.Parameters[3], info.Parameters[4]);
             if (channel.IsParsingBanData)
                 return true;
         }
         return IsBacklog;
     }
     return false;
 }
Exemplo n.º 4
0
 private bool ChannelInfo(Network.IncomingDataEventArgs info)
 {
     if (info.Parameters.Count > 2)
     {
         Channel channel = _Network.GetChannel(info.Parameters[1]);
         Network.NetworkChannelDataEventArgs args = new Network.NetworkChannelDataEventArgs(this.ServerLineRawText, this.Date);
         args.Command = info.Command;
         args.Message = info.Message;
         args.Parameters = info.Parameters;
         args.Channel = channel;
         args.ChannelName = info.Parameters[1];
         if (channel != null)
         {
             channel.ChannelMode.ChangeMode(info.Parameters[2]);
             _Network.__evt_ChannelInfo(args);
             return true;
         }
         _Network.__evt_ChannelInfo(args);
     }
     return IsBacklog;
 }
Exemplo n.º 5
0
 private bool ChannelBans2(Network.IncomingDataEventArgs info)
 {
     if (info.Parameters.Count == 0)
         return false;
     Network.NetworkChannelEventArgs ev = new Network.NetworkChannelEventArgs(this.ServerLineRawText, this.Date);
     ev.ChannelName = info.Parameters[1];
     ev.ParameterLine = info.ParameterLine;
     ev.Parameters = info.Parameters;
     ev.Channel = _Network.GetChannel(ev.Parameters[1]);
     if (ev.Channel.Bans == null)
         ev.Channel.Bans = new List<ChannelBan>();
     _Network.__evt_ChannelFinishBan(ev);
     if (ev.Channel != null)
     {
         if (ev.Channel.IsParsingBanData)
         {
             ev.Channel.IsParsingBanData = false;
             return true;
         }
     }
     return IsBacklog;
 }
Exemplo n.º 6
0
 private bool WhoisText(Network.IncomingDataEventArgs info)
 {
     Network.NetworkWHOISEventArgs ev = new Network.NetworkWHOISEventArgs(this.ServerLineRawText, this.Date);
     ev.WhoisType = Network.NetworkWHOISEventArgs.Mode.Info;
     ev.Parameters = info.Parameters;
     ev.Message = info.Message;
     ev.ParameterLine = info.ParameterLine;
     _Network.__evt_WHOIS(ev);
     return true;
 }
Exemplo n.º 7
0
 private bool TopicInfo(Network.IncomingDataEventArgs info)
 {
     if (info.Parameters.Count < 4)
         return false;
     Network.NetworkTOPICEventArgs ev = new Network.NetworkTOPICEventArgs(this.ServerLineRawText, this.Date);
     ev.Source = info.Source;
     ev.Parameters = info.Parameters;
     ev.ParameterLine = info.ParameterLine;
     ev.ChannelName = info.Parameters[1];
     string user = info.Parameters[2];
     string time = info.Parameters[3];
     double dt;
     if (!double.TryParse(time, out dt))
         dt = 0;
     ev.TopicDate = dt;
     ev.Source = user;
     ev.Channel = _Network.GetChannel(info.Parameters[1]);
     _Network.__evt_TopicInfo(ev);
     if (ev.Channel != null)
     {
         ev.Channel.TopicDate = (int)dt;
         ev.Channel.TopicUser = user;
     }
     return true;
 }
Exemplo n.º 8
0
 private bool ProcessNick(Network.IncomingDataEventArgs info)
 {
     string _new = info.Message;
     Network.NetworkNICKEventArgs ev = new Network.NetworkNICKEventArgs(this.ServerLineRawText, this.Date);
     ev.Source = info.Source;
     ev.OldNick = ev.SourceInfo.Nick;
     if (string.IsNullOrEmpty(info.Message) && !string.IsNullOrEmpty(info.ParameterLine))
     {
         // server is f****d
         _new = info.ParameterLine;
         // server is totally borked
         if (_new.Contains(" "))
         {
             _new = _new.Substring(0, _new.IndexOf(" ", StringComparison.Ordinal));
         }
     }
     ev.NewNick = _new;
     _Network.__evt_NICK(ev);
     lock (_Network.Channels)
     {
         foreach (Channel channel in _Network.Channels.Values)
         {
             if (channel.ChannelWork)
             {
                 User user = channel.UserFromName(ev.SourceInfo.Nick);
                 if (user != null && !IsBacklog)
                     user.Nick = _new;
             }
         }
     }
     return true;
 }
Exemplo n.º 9
0
 private bool ParseInfo(Network.IncomingDataEventArgs info)
 {
     if (info.Parameters.Count < 3)
     {
         return false;
     }
     // :irc-2t.tm-irc.org 353 petr = #support :petr user1227554 &OperBot Revi
     if (IsBacklog)
     {
         return true;
     }
     Network.ChannelUserListEventArgs ev = new Network.ChannelUserListEventArgs(ServerLineRawText, this.Date);
     ev.Parameters = info.Parameters;
     ev.ParameterLine = info.ParameterLine;
     ev.UserNicknames.AddRange(info.Message.Split(' '));
     ev.ChannelName = info.Parameters[2];
     Channel channel = _Network.GetChannel(info.Parameters[2]);
     if (channel != null)
     {
         ev.Channel = channel;
         foreach (string nick in ev.UserNicknames)
         {
             if (String.IsNullOrEmpty(nick))
             {
                 continue;
             }
             User user = channel.UserFromName(nick);
             if (user == null)
             {
                 user = new User(nick, _Network);
                 channel.InsertUser(user);
             }
             else
             {
                 char UserMode_ = '\0';
                 if (nick.Length > 0)
                 {
                     foreach (char mode in _Network.UChars)
                     {
                         if (nick[0] == mode)
                         {
                             UserMode_ = nick[0];
                             // there is no need to check for other modes
                             break;
                         }
                     }
                     user.SymbolMode(UserMode_);
                 }
             }
             ev.Users.Add(user);
         }
         _Network.__evt_ChannelUserList(ev);
         return true;
     }
     _Network.__evt_ChannelUserList(ev);
     return IsBacklog;
 }
Exemplo n.º 10
0
        private bool Join(Network.IncomingDataEventArgs info)
        {
            string channel_name = info.ParameterLine.Trim();
            if (string.IsNullOrEmpty(channel_name))
            {
                channel_name = info.Message;
            }
            Channel channel = _Network.GetChannel(channel_name);
            Network.NetworkChannelEventArgs ed = new Network.NetworkChannelEventArgs(ServerLineRawText, this.Date);
            ed.ChannelName = channel_name;
            ed.Source = info.Source;
            ed.Channel = channel;
            ed.ParameterLine = info.ParameterLine;
            if (channel != null)
            {
                if (!IsBacklog)
                    channel.InsertUser(new User(ed.SourceInfo, _Network));

                _Network.__evt_JOIN(ed);
                return true;
            }
            _Network.__evt_JOIN(ed);
            return IsBacklog;
        }
Exemplo n.º 11
0
 /// <summary>
 /// Creates a new user
 /// </summary>
 /// <param name="user">user!ident@hostname</param>
 /// <param name="network">Network this class belongs to</param>
 public User(string source, Network network)
 {
     UserInfo info = new UserInfo(source);
     MakeUser(info.Nick, info.Host, network, info.Ident);
 }
Exemplo n.º 12
0
 public NetworkGenericDataEventArgs(Network.IncomingDataEventArgs info)
     : base(info.ServerLine, info.Date)
 {
     this.Command = info.Command;
     this.Message = info.Message;
     this.ParameterLine = info.ParameterLine;
     this.Parameters = info.Parameters;
     this.Source = info.Source;
 }
Exemplo n.º 13
0
 public virtual void HandleUnknownData(Network.UnknownDataEventArgs args)
 {
     if (this.UnknownDataRetrievedEvent != null)
     {
         this.UnknownDataRetrievedEvent(this, args);
     }
 }
Exemplo n.º 14
0
        /// <summary>
        /// Changes the content based on buffer
        /// </summary>
        /// <param name="data"></param>
        /// <param name="network"></param>
        public void RewriteBuffer(string data, Network network)
        {
            lock (Mode)
            {
                buffer = data;
                Mode.Clear();

                List<string> line = new List<string>();
                line.AddRange(data.Split('\n'));
                rMode.Clear();
                channelModes = "";
                string positive = "+";
                string negative = "-";
                foreach (string xx in line)
                {
                    bool rm = false;
                    int CurrentParam = 1;
                    List<string> parts = new List<string>();
                    parts.AddRange(xx.Split(' '));
                    if (parts.Count > 0)
                    {
                        if (parts[0].Contains("-") || parts[0].Contains("+"))
                        {
                            foreach (char CurrentMode in parts[0])
                            {
                                switch (CurrentMode)
                                {
                                    case '+':
                                        rm = false;
                                        continue;
                                        case '-':
                                        rm = true;
                                        continue;
                                }

                                // user mode, has a parameter
                                if (network.CUModes.Contains(CurrentMode) || network.PModes.Contains(CurrentMode))
                                {
                                    if (parts.Count < CurrentParam + 1)
                                    {
                                        return;
                                    }

                                    SimpleMode mode = new SimpleMode(CurrentMode, parts[CurrentParam]);
                                    if (rm)
                                    {
                                        rMode.Add(mode);
                                    }
                                    else
                                    {
                                        Mode.Add(mode);
                                    }
                                    CurrentParam++;
                                    continue;
                                }

                                // channel special mode with parameter
                                if (network.SModes.Contains(CurrentMode) || network.XModes.Contains(CurrentMode))
                                {
                                    if (parts.Count < CurrentParam + 1)
                                    {
                                        return;
                                    }

                                    SimpleMode mode = new SimpleMode(CurrentMode, parts[CurrentParam]);
                                    if (rm)
                                    {
                                        rMode.Add(mode);
                                        positive = positive.Replace(CurrentMode.ToString(), "");
                                        negative += CurrentMode.ToString();
                                    }
                                    else
                                    {
                                        Mode.Add(mode);
                                        negative = negative.Replace(CurrentMode.ToString(), "");
                                        positive += CurrentMode.ToString();
                                    }
                                    CurrentParam++;
                                    continue;
                                }

                                // channel mode
                                if (network.CModes.Contains(CurrentMode))
                                {
                                    SimpleMode mode = new SimpleMode(CurrentMode, null);
                                    if (rm)
                                    {
                                        rMode.Add(mode);
                                        positive = positive.Replace(CurrentMode.ToString(), "");
                                        negative += CurrentMode.ToString();
                                    }
                                    else
                                    {
                                        Mode.Add(mode);
                                        negative = negative.Replace(CurrentMode.ToString(), "");
                                        positive += CurrentMode.ToString();
                                    }
                                    continue;
                                }
                            }
                        }
                    }
                }

                if (positive.Length > 1)
                {
                    channelModes += positive;
                }

                if (negative.Length > 1)
                {
                    channelModes += negative;
                }
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// Retrieve information about the server
 /// </summary>
 /// <param name="command">Command</param>
 /// <param name="parameters">Parameters</param>
 /// <param name="value">Text</param>
 /// <returns></returns>
 private bool Info(Network.IncomingDataEventArgs info)
 {
     Network.NetworkGenericDataEventArgs args004 = new Network.NetworkGenericDataEventArgs(info);
     _Network.__evt_INFO(args004);
     if (info.ParameterLine.Contains("PREFIX=("))
     {
         string cmodes = info.ParameterLine.Substring(info.ParameterLine.IndexOf("PREFIX=(", StringComparison.Ordinal) + 8);
         cmodes = cmodes.Substring(0, cmodes.IndexOf(")", StringComparison.Ordinal));
         lock (_Network.CUModes)
         {
             _Network.CUModes.Clear();
             _Network.CUModes.AddRange(cmodes.ToCharArray());
         }
         cmodes = info.ParameterLine.Substring(info.ParameterLine.IndexOf("PREFIX=(", StringComparison.Ordinal) + 8);
         cmodes = cmodes.Substring(cmodes.IndexOf(")", StringComparison.Ordinal) + 1, _Network.CUModes.Count);
         _Network.UChars.Clear();
         _Network.UChars.AddRange(cmodes.ToCharArray());
     }
     if (info.ParameterLine.Contains("CHANMODES="))
     {
         string xmodes = info.ParameterLine.Substring(info.ParameterLine.IndexOf("CHANMODES=", StringComparison.Ordinal) + 11);
         xmodes = xmodes.Substring(0, xmodes.IndexOf(" ", StringComparison.Ordinal));
         string[] _mode = xmodes.Split(',');
         _Network.ParsedInfo = true;
         if (_mode.Length == 4)
         {
             _Network.PModes.Clear();
             _Network.CModes.Clear();
             _Network.XModes.Clear();
             _Network.SModes.Clear();
             _Network.PModes.AddRange(_mode[0].ToCharArray());
             _Network.XModes.AddRange(_mode[1].ToCharArray());
             _Network.SModes.AddRange(_mode[2].ToCharArray());
             _Network.CModes.AddRange(_mode[3].ToCharArray());
         }
     }
     return true;
 }
Exemplo n.º 16
0
 /// <summary>
 /// This needs to be there for serialization to work
 /// </summary>
 public NetworkMode()
 {
     // place holder :)
     network = null;
 }
Exemplo n.º 17
0
        private bool FinishChan(Network.IncomingDataEventArgs info)
        {
            if (info.Parameters.Count == 0)
                return false;
            Network.NetworkChannelDataEventArgs ev = new Network.NetworkChannelDataEventArgs(this.ServerLineRawText, this.Date);
            ev.ChannelName = info.Parameters[1];
            ev.ParameterLine = info.ParameterLine;
            ev.Parameters = info.Parameters;
            ev.Channel = _Network.GetChannel(info.Parameters[1]);
            if (ev.Channel != null)
                ev.Channel.IsParsingWhoData = false;

            _Network.__evt_FinishChannelParseUser(ev);
            return true;
        }
Exemplo n.º 18
0
 public User(UserInfo info, Network network)
 {
     MakeUser(info.Nick, info.Host, network, info.Ident);
 }
Exemplo n.º 19
0
        private bool Kick(Network.IncomingDataEventArgs info)
        {
            // [email protected] KICK #support HelpBot :Removed from the channel
            Network.NetworkKickEventArgs ev = new Network.NetworkKickEventArgs(this.ServerLineRawText, this.Date);
            ev.Source = info.Source;
            ev.Parameters = info.Parameters;
            ev.ChannelName = info.Parameters[0];
            ev.Message = info.Message;
            ev.Target = info.Parameters[1];
            ev.ParameterLine = info.ParameterLine;
            ev.Channel = _Network.GetChannel(info.Parameters[0]);
            if (ev.Channel != null)
            {
                if (!IsBacklog)
                {
                    User user = ev.Channel.UserFromName(info.Parameters[1]);
                    if (user != null)
                    {
                        ev.Channel.RemoveUser(user);
                        if (user.IsPidgeon)
                            ev.Channel.ChannelWork = false;

                    }
                }
                _Network.__evt_KICK(ev);
                return true;
            }
            _Network.__evt_KICK(ev);
            return IsBacklog;
        }
Exemplo n.º 20
0
 /// <summary>
 /// Creates a new user
 /// </summary>
 /// <param name="nick"></param>
 /// <param name="host"></param>
 /// <param name="network"></param>
 /// <param name="ident"></param>
 public User(string nick, string host, string ident, Network network)
 {
     if (network == null)
     {
         throw new Exception("Network can't be null in here");
     }
     MakeUser(nick, host, network, ident);
 }
Exemplo n.º 21
0
 private bool ParseUser(Network.IncomingDataEventArgs info)
 {
     // :hub.tm-irc.org 352 petr #support pidgeon D3EE8257.8361F8AE.37E3A027.IP hub.tm-irc.org petr H :0 My name is hidden, dude
     if (info.Parameters.Count <= 6)
     {
         return false;
     }
     Network.NetworkParseUserEventArgs ev = new Network.NetworkParseUserEventArgs(ServerLineRawText, this.Date);
     ev.Parameters = info.Parameters;
     ev.ChannelName = info.Parameters[1];
     ev.Channel = _Network.GetChannel(info.Parameters[1]);
     string server = info.Parameters[4];
     ev.User = new UserInfo();
     ev.User.Ident = info.Parameters[2];
     ev.User.Host = info.Parameters[3];
     ev.User.Nick = info.Parameters[5];
     string realname = info.Message;
     if (realname != null & realname.Length > 2)
     {
         realname = realname.Substring(2);
     }
     else if (realname == "0 ")
     {
         realname = "";
     }
     char mode = '\0';
     ev.IsAway = false;
     if (info.Parameters[6].Length > 0)
     {
         // if user is away we flag him
         if (info.Parameters[6].StartsWith("G", StringComparison.Ordinal))
         {
             ev.IsAway = true;
         }
         mode = info.Parameters[6][info.Parameters[6].Length - 1];
         if (!_Network.UChars.Contains(mode))
         {
             mode = '\0';
         }
         ev.StringMode = mode.ToString();
     }
     ev.RealName = realname;
     _Network.__evt_ParseUser(ev);
     if (ev.Channel != null)
     {
         if (!IsBacklog)
         {
             if (!ev.Channel.ContainsUser(ev.User.Nick))
             {
                 User _user = null;
                 if (mode != '\0')
                 {
                     _user = new User(mode.ToString() + ev.User.Nick, ev.User.Host, ev.User.Ident, _Network);
                 }
                 else
                 {
                     _user = new User(ev.User, _Network);
                 }
                 _user.LastAwayCheck = DateTime.Now;
                 _user.RealName = realname;
                 if (ev.IsAway)
                 {
                     _user.AwayTime = DateTime.Now;
                 }
                 _user.Away = ev.IsAway;
                 ev.Channel.InsertUser(_user);
                 return ev.Channel.IsParsingWhoData;
             }
             User user = ev.Channel.UserFromName(ev.User.Nick);
             if (user != null)
             {
                 user.Ident = ev.User.Ident;
                 user.Host = ev.User.Host;
                 user.Server = server;
                 user.RealName = realname;
                 user.LastAwayCheck = DateTime.Now;
                 if (!user.Away && ev.IsAway)
                 {
                     user.AwayTime = DateTime.Now;
                 }
                 user.Away = ev.IsAway;
             }
         }
         if (ev.Channel.IsParsingWhoData)
         {
             return true;
         }
     }
     return IsBacklog;
 }
Exemplo n.º 22
0
 /// <summary>
 /// Creates a new user
 /// </summary>
 /// <param name="nick">Nick</param>
 /// <param name="host">Host</param>
 /// <param name="network">Network</param>
 /// <param name="ident">Ident</param>
 /// <param name="server">Server</param>
 /// <param name="channel">Channel</param>
 public User(string nick, string host, string ident, Network network, Channel channel)
 {
     this.Channel = channel;
     MakeUser(nick, host, network, ident);
 }
Exemplo n.º 23
0
 private bool Part(Network.IncomingDataEventArgs info)
 {
     string chan = info.ParameterLine.Trim();
     Channel channel = _Network.GetChannel(chan);
     Network.NetworkChannelDataEventArgs ev = new Network.NetworkChannelDataEventArgs(this.ServerLineRawText, this.Date);
     ev.ChannelName = chan;
     ev.Channel = channel;
     ev.Source = info.Source;
     ev.Message = info.Message;
     ev.ParameterLine = info.ParameterLine;
     _Network.__evt_PART(ev);
     if (channel != null)
     {
         if (!IsBacklog)
             channel.RemoveUser(ev.SourceInfo.Nick);
         return true;
     }
     return IsBacklog;
 }
Exemplo n.º 24
0
 /// <summary>
 /// Destroy
 /// </summary>
 public virtual void Destroy()
 {
     if (IsDestroyed)
     {
         return;
     }
     Channel = null;
     _Network = null;
     destroyed = true;
 }
Exemplo n.º 25
0
 private bool Topic(Network.IncomingDataEventArgs info)
 {
     Network.NetworkTOPICEventArgs ev = new Network.NetworkTOPICEventArgs(this.ServerLineRawText, this.Date);
     ev.Source = info.Source;
     ev.ParameterLine = info.ParameterLine;
     ev.Parameters = info.Parameters;
     ev.ChannelName = info.ParameterLine.Trim();
     ev.Channel = _Network.GetChannel(ev.ChannelName);
     ev.Topic = info.Message;
     double time = Defs.ConvertDateToUnix(DateTime.Now);
     ev.TopicDate = time;
     _Network.__evt_TOPIC(ev);
     if (ev.Channel != null)
     {
         ev.Channel.Topic = info.Message;
         if (!IsBacklog)
         {
             ev.Channel.TopicDate = (int)time;
             ev.Channel.TopicUser = info.Source;
         }
         return true;
     }
     return IsBacklog;
 }
Exemplo n.º 26
0
 protected virtual void MakeUser(string nick, string host, Network network, string ident)
 {
     _Network = network;
     if (!string.IsNullOrEmpty(nick))
     {
         char prefix = nick[0];
         if (network.UChars.Contains(prefix))
         {
             SymbolMode(prefix);
             nick = nick.Substring(1);
         }
     }
     this.nick = nick;
     this.Ident = ident;
     this.Host = host;
     this.Server = network.ServerName;
 }
Exemplo n.º 27
0
 /// <summary>
 /// Constructor (normal)
 /// </summary>
 public Channel(Network network)
 {
     _Network = network;
     ChannelWork = true;
     ChannelMode = new NetworkMode(NetworkMode.ModeType.Channel, _Network);
     Topic = "";
     TopicUser = "";
 }
Exemplo n.º 28
0
 /// <summary>
 /// Creates a new instance
 /// </summary>
 /// <param name="MT"></param>
 /// <param name="_Network"></param>
 public NetworkMode(ModeType MT, Network _Network)
 {
     _ModeType = MT;
     network = _Network;
 }
Exemplo n.º 29
0
 private bool ChannelTopic(Network.IncomingDataEventArgs info)
 {
     if (info.Parameters.Count < 2)
     {
         return false;
     }
     Network.NetworkTOPICEventArgs ev = new Network.NetworkTOPICEventArgs(this.ServerLineRawText, this.Date);
     ev.Parameters = info.Parameters;
     ev.Topic = info.Message;
     ev.ChannelName = info.Parameters[1];
     string topic = info.Message;
     Channel channel = _Network.GetChannel(info.Parameters[1]);
     ev.Channel = channel;
     _Network.__evt_TopicData(ev);
     if (channel != null)
         channel.Topic = topic;
     return true;
 }
Exemplo n.º 30
0
 /// <summary>
 /// Parsing the line of whois text
 /// </summary>
 /// <param name="source"></param>
 /// <param name="parameters"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 private bool WhoisSv(Network.IncomingDataEventArgs info)
 {
     if (info.ParameterLine.Contains(" "))
     {
         string name = info.ParameterLine.Substring(info.ParameterLine.IndexOf(" ", StringComparison.Ordinal) + 1);
         if (!name.Contains(" "))
         {
             _Protocol.DebugLog("Invalid whois record " + info.ParameterLine);
             return false;
         }
         Network.NetworkWHOISEventArgs ev = new Network.NetworkWHOISEventArgs(this.ServerLineRawText, this.Date);
         ev.ParameterLine = info.ParameterLine;
         ev.Parameters = info.Parameters;
         ev.Message = info.Message;
         ev.WhoisType = Network.NetworkWHOISEventArgs.Mode.Server;
         ev.WhoisLine = name.Substring(name.IndexOf(" ", StringComparison.Ordinal) + 1);
         ev.Source = name.Substring(0, name.IndexOf(" ", StringComparison.Ordinal));
         _Network.__evt_WHOIS(ev);
         return true;
     }
     return false;
 }