Ejemplo n.º 1
0
    public void JOIN(IMessage IMessage)
    {
        string[] channels = IMessage.Params[0].Split(',');
        string[] keys     = null;
        if (IMessage.Params.Length == 2)
        {
            keys = IMessage.Params[1].Split(',');
        }

        foreach (string s in channels)
        {
            if (Database.GetDatabase().HasChannel(s))
            {
                IChannel ch = Database.GetDatabase().GetChannel(s);
                int      i  = Array.IndexOf <string>(channels, s);
                if (ch.Modes.ContainsKey('k') && ch.Modes['k'] == keys[i])
                {
                    ch.AddClient(IMessage.Owner);
                }
                else if (!ch.Modes.ContainsKey('k'))
                {
                    ch.AddClient(IMessage.Owner);
                }
                else
                {
                    IMessage.Owner.SendMessage(IMessage.CreateMessage(IMessage.Owner, Server.GetServer().HostString, Reply.ERR_BADCHANNELKEY, new string[] { IMessage.Owner.NickName, s, "Cannot join channel (+k)" }));
                }
            }
            else
            {
                IMessage.Owner.SendMessage(IMessage.CreateMessage(IMessage.Owner, Server.GetServer().HostString, Reply.ERR_NOSUCHCHANNEL, new string[] { IMessage.Owner.NickName, s, "No such channel" }));
            }
        }
    }
Ejemplo n.º 2
0
        public static void JoinClientToChannel(IMessage message)
        {
            //#Chan,#Chan2 ChanKey,ChanKey2
            string[] channels = null;
            string[] chanKeys = null;

            if (message.Params.Count() > 1)
            {
                if (message.Params[1].Contains(','))
                {
                    chanKeys = message.Params[1].Split(',');
                }
                else
                {
                    chanKeys = new string[] { message.Params[1] }
                };
            }

            if (message.Params[0].Contains(','))
            {
                channels = message.Params[0].Split(',');
            }
            else
            {
                channels = new string[] { message.Params[0] }
            };

            foreach (string s in channels)
            {
                if (Database.GetDatabase().HasChannel(s.Remove(0, 1)))
                {
                    IChannel j = Database.GetDatabase().GetChannel(s.Remove(0, 1));
                    if (chanKeys != null && chanKeys.Count() > Array.IndexOf <string>(channels, s))
                    {
                        if (j.Modes.ContainsKey('k') && j.Modes['k'] == chanKeys[Array.IndexOf <string>(channels, s)])
                        {
                            j.AddClient(message.Owner);
                        }
                        else
                        {
                            message.Owner.SendMessage(IRCMessage.GetStatic().CreateMessage(message.Owner, "", Reply.ERR_BADCHANNELKEY, new string[] { s, "Cannot join channel (+k)" }));
                        }
                    }
                    else
                    {
                        j.AddClient(message.Owner);
                    }
                }
                else
                {
                    message.Owner.SendMessage(IRCMessage.GetStatic().CreateMessage(message.Owner, "", Reply.ERR_NOSUCHCHANNEL, new string[] { s, "No such channel" }));
                }
            }
        }
Ejemplo n.º 3
0
        private void ChatMessage(ChatRoomMsg_t message)
        {
            if (message.m_ulSteamIDUser == clientUser.GetSteamID())
            {
                return;
            }

            IChannel ch = GetSteamChannel(message.m_ulSteamIDChat);

            if (ch == null)
            {
                return;
            }

            byte[]         msg  = new byte[4096];
            EChatEntryType type = EChatEntryType.k_EChatEntryTypeInvalid;

            int len = clientFriends.GetChatRoomEntry(message.m_ulSteamIDChat, (int)message.m_iChatID, ref message.m_ulSteamIDUser, msg, 4096, ref type);

            len--;

            if (type != EChatEntryType.k_EChatEntryTypeChatMsg && type != EChatEntryType.k_EChatEntryTypeEmote)
            {
                return;
            }

            byte[] a = new byte[len];
            Array.Copy(msg, a, len);

            string[] Messs = Encoding.UTF8.GetString(a).Split(new char[] { '\n' });
            IClient  cl    = GetSteamClient(message.m_ulSteamIDUser);

            if (cl == null)
            {
                if (clientList.Clients.ContainsKey(message.m_ulSteamIDUser))
                {
                    cl = clientList.Clients[message.m_ulSteamIDUser];
                }
                else
                {
                    cl = new SteamClient(message.m_ulSteamIDUser);
                }
                clients.Add(cl);
                ch.AddClient(cl);
            }

            foreach (string Mess in Messs)
            {
                cl.AddMessage(IRCMessage.GetStatic().CreateMessage(cl, cl.UserString, "PRIVMSG", new string[] { "&" + ch.ChannelName, (type == EChatEntryType.k_EChatEntryTypeEmote ? "ACTION " : "") + Mess + (type == EChatEntryType.k_EChatEntryTypeEmote ? "" : "") }));
            }
            //ch.SendMessage(Message.CreateMessage(cl, cl.UserString, "PRIVMSG", new string[] { "&" + Server.StripString(clientFriends.GetChatRoomName(message.m_ulSteamIDChat)), "" + (type == EChatEntryType.k_EChatEntryTypeEmote ? "ACTION " : "") + Mess + (type == EChatEntryType.k_EChatEntryTypeEmote ? "" : "") }));
        }