Ejemplo n.º 1
0
        public void ChangeFriendSlotAssigned(uint ID, byte[] ClientHash, ushort Port, bool assigned)
        {
            int index = m_FindFriend(ID, ClientHash, Port);

            if (index >= 0)
            {
                SFriend Friend = (SFriend)List[index];
                Friend.FriendSlot = assigned;
                CClient client = CKernel.ClientsList.GetClient(Friend.ID, Friend.Port, Friend.ServerIP, Friend.UserHash);
                List[index] = Friend;
                if (client != null)
                {
                    Constants.FriendLevel friendLevel;
                    if (assigned)
                    {
                        friendLevel = Constants.FriendLevel.FriendSlot;
                    }
                    else
                    {
                        friendLevel = Constants.FriendLevel.Friend;
                    }
                    client.FriendStatus = friendLevel;
                }
                this.Save();
            }
        }
Ejemplo n.º 2
0
        private bool SetValueFromXmlElement(XmlElement element)
        {
            try
            {
                XmlNodeList nodes = element.ChildNodes;
                foreach (XmlElement el in nodes)
                {
                    if (el.Name == "Friend")
                    {
                        SFriend my_Friend = new SFriend();
                        my_Friend.FriendSlot = false;
                        //load Friend.UserHash
                        if (el.Attributes["UserHash"].InnerText != "")
                        {
                            byte[] x = null;
                            switch (_currentversion)
                            {
                            case "0.1":
                                x = new byte[el.Attributes["UserHash"].InnerText.Length];
                                x = Encoding.Default.GetBytes(el.Attributes["UserHash"].InnerText);
                                break;

                            case "0.2":
                                x = Convert.FromBase64String(el.Attributes["UserHash"].InnerText);
                                break;
                            }
                            my_Friend.UserHash = (byte[])x;
                        }
                        else
                        {
                            my_Friend.UserHash = null;
                        }

                        //load Friend.ID
                        my_Friend.ID = uint.Parse(el.Attributes["ID"].InnerText);

                        //load Friend.OurName
                        my_Friend.OurName = el.Attributes["OurName"].InnerText;

                        //load Friend.Name
                        my_Friend.Name = el.Attributes["Name"].InnerText;

                        //load Friend.Port
                        my_Friend.Port = ushort.Parse(el.Attributes["Port"].InnerText);

                        //load Friend.Software
                        my_Friend.Software = el.Attributes["Software"].InnerText;

                        //load Friend.Version
                        my_Friend.Version = uint.Parse(el.Attributes["Version"].InnerText);

                        //load Friend.LastOnline
                        my_Friend.LastOnline = new DateTime(long.Parse(el.Attributes["LastOnline"].InnerText));

                        //load friendSlot
                        if (el.Attributes["FriendSlot"] != null)
                        {
                            my_Friend.FriendSlot = bool.Parse(el.Attributes["FriendSlot"].InnerText);
                        }

                        List.Add(my_Friend);
                        Constants.FriendLevel friendSlot;
                        if (my_Friend.FriendSlot)
                        {
                            friendSlot = Constants.FriendLevel.FriendSlot;
                        }
                        else
                        {
                            friendSlot = Constants.FriendLevel.Friend;
                        }

                        CKernel.ClientsList.AddClient(my_Friend.ID, my_Friend.Port, 0, my_Friend.UserHash, my_Friend.Port, null, friendSlot);

                        //switch ( el.Attributes["type"].InnerText )
                    }
                }
            }
            catch
            {
                CLog.Log(Constants.Log.Info, "Error loading friends list");
                return(false);
            }
            return(true);
        }
Ejemplo n.º 3
0
        private XmlElement ToXmlElement(XmlDocument doc)
        {
            XmlElement friendsnode = doc.CreateElement("Friends");


            for (int n = 0; n < List.Count; n++)
            {
                SFriend my_Friend = (SFriend)List[n];

                XmlElement el = doc.CreateElement("Friend");

                //save Friend.UserHash
                XmlAttribute key = doc.CreateAttribute("UserHash");
                if (my_Friend.UserHash != null)
                {
                    switch (_version)
                    {
                    case "0.1":
                        key.InnerText = Encoding.Default.GetString((byte[])my_Friend.UserHash);
                        break;

                    case "0.2":
                        key.InnerText = Convert.ToBase64String((byte[])my_Friend.UserHash);
                        break;
                    }
                }
                else
                {
                    key.InnerText = "";
                }
                el.Attributes.Append(key);

                //save Friend.ID
                key           = doc.CreateAttribute("ID");
                key.InnerText = my_Friend.ID.ToString();
                el.Attributes.Append(key);

                //save Friend.OurName
                key           = doc.CreateAttribute("OurName");
                key.InnerText = my_Friend.OurName;
                el.Attributes.Append(key);

                //save Friend.Name
                key           = doc.CreateAttribute("Name");
                key.InnerText = my_Friend.Name;
                el.Attributes.Append(key);

                //save Friend.Port
                key           = doc.CreateAttribute("Port");
                key.InnerText = my_Friend.Port.ToString();
                el.Attributes.Append(key);

                //save Friend.Software
                key           = doc.CreateAttribute("Software");
                key.InnerText = my_Friend.Software;
                el.Attributes.Append(key);

                //save Friend.Version
                key           = doc.CreateAttribute("Version");
                key.InnerText = my_Friend.Version.ToString();
                el.Attributes.Append(key);

                //save Friend.LastOnline
                key           = doc.CreateAttribute("LastOnline");
                key.InnerText = ((long)my_Friend.LastOnline.Ticks).ToString();
                el.Attributes.Append(key);

                //save Friend.FriendSlot
                key           = doc.CreateAttribute("FriendSlot");
                key.InnerText = my_Friend.FriendSlot.ToString();
                el.Attributes.Append(key);

                friendsnode.AppendChild(el);
            }
            return(friendsnode);
        }
Ejemplo n.º 4
0
        public void Add(uint ID, ushort Port, uint ServerIP, byte[] ClientHash, ushort ServerPort, string OurName, string Name, string Software, uint Version)
        {
            int index = m_FindFriend(ID, ClientHash, Port);

            Constants.FriendLevel friendLevel;
            if (index >= 0)
            {
                SFriend Friend = (SFriend)List[index];
                if (OurName != "")
                {
                    Friend.OurName = OurName;
                }
                Friend.Name = Name;
                Friend.ID   = ID;
                Friend.Port = Port;
                if (ServerIP != 0)
                {
                    Friend.ServerIP = ServerIP;
                }
                if (ServerPort != 0)
                {
                    Friend.ServerPort = ServerPort;
                }
                Friend.LastOnline = DateTime.Now;
                if (Software != null)
                {
                    Friend.Software = Software;
                }
                if (Version != 0)
                {
                    Friend.Version = Version;
                }
                if (ClientHash != null)
                {
                    Friend.UserHash = ClientHash;
                }
                List[index] = Friend;
//				Friend.FriendSlot=friendSlot;
//				CClient client=CKernel.ClientsList.GetClient(Friend.ID,Friend.Port,Friend.ServerIP,Friend.UserHash);
//				if (client!=null)
//				{
//					if (Friend.FriendSlot)
//						friendLevel=Constants.FriendLevel.FriendSlot;
//					else
//						friendLevel=Constants.FriendLevel.Friend;
//					client.FriendStatus=friendLevel;
//				}
            }
            else
            {
                SFriend Friend = new SFriend();
                Friend.OurName    = OurName;
                Friend.Name       = Name;
                Friend.UserHash   = ClientHash;
                Friend.ID         = ID;
                Friend.Port       = Port;
                Friend.ServerPort = ServerPort;
                Friend.ServerIP   = ServerIP;
                Friend.LastOnline = DateTime.Now;
                Friend.Software   = Software;
                Friend.Version    = Version;
                Friend.FriendSlot = false;
                List.Add(Friend);
                friendLevel = Constants.FriendLevel.Friend;
                CKernel.ClientsList.AddClient(Friend.ID, Friend.Port, 0, Friend.UserHash, Friend.Port, null, friendLevel);
            }

            this.Save();
        }