Пример #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();
            }
        }
Пример #2
0
 public SFriend[] GetFriends()
 {
     if (apw)
     {
         SFriend[] response= new SFriend[CKernel.FriendsList.List.Count];
         for (int i=0;i!=CKernel.FriendsList.List.Count;i++)
         {
             //response[i] = new SFriend();
             response[i] = (SFriend)CKernel.FriendsList.List[i];
         }
         return response;
     }
     else return null;
 }
Пример #3
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);
        }
Пример #4
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);
        }
Пример #5
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();
        }
Пример #6
0
 public void AddFriend(SFriend friend)
 {
     krnGateway.AddFriend(friend.ID, friend.Port, friend.ServerIP, friend.UserHash, 0, friend.OurName, friend.Name, friend.Software, friend.Version, friend.FriendSlot);
     InterfaceClient source = new InterfaceClient();
     source.Name=friend.OurName;
     source.ID=friend.ID;
     source.Port=friend.Port;
     if (friend.UserHash!=null) source.UserHash=friend.UserHash;
     OnAddingFriend(source);
 }
Пример #7
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();
        }
Пример #8
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;
        }
Пример #9
0
        private void buttonAddFriendOk_Click(object sender, System.EventArgs e)
        {
            bool validate = false;
            uint ip;
            ip=0;
            if ((textBoxIP.Text!="") && (textBoxName.Text!="") && (textBoxPort.Text!=""))
            {
                //validate ip or id
                //if (Regex.IsMatch(textBoxIP.Text, @"^(((?<=255\\d{1,3})\.){3}(?<=255\\d{1,3}))$"))
                if (Regex.IsMatch(textBoxIP.Text, @"^(((\d{1,3})\.){3}(\d{1,3}))$"))
                {
                    try
                    {
                        IPAddress DirectionIP=IPAddress.Parse(textBoxIP.Text);
                        ip=BitConverter.ToUInt32(DirectionIP.GetAddressBytes(),0);
                    }
                    catch
                    {
                        ip=0;
                    }

                }

                if ((ip==0) && (Regex.IsMatch(textBoxIP.Text,@"^\d{9,12}$")))
                {
                    ip=Convert.ToUInt32(textBoxIP.Text);
                }
                //validate port

                if ((ip!=0) && (Regex.IsMatch(textBoxPort.Text,@"^\d{1,5}$")) && Convert.ToInt32(textBoxPort.Text)<=65535)
                {
                    validate=true;
                }
                if ((!textBoxIP.Enabled)&&(!textBoxPort.Enabled)) validate=true;
            }

            if (validate)
            {
                SFriend friend= new SFriend();
                friend.Name = textBoxName.Text;
                friend.OurName = textBoxName.Text;
                if (textBoxUserHash.Text!="")
                {
                    byte[] x = new byte[textBoxUserHash.Text.Length];
                    x = Convert.FromBase64String( textBoxUserHash.Text );
                    friend.UserHash=x;
                }
                friend.ID = ip;
                friend.FriendSlot=false;
                friend.Port = Convert.ToUInt16(textBoxPort.Text);
                listViewFriends.Height+=panelAddFriend.Height-buttonAddFriend.Height;
                panelAddFriend.Visible=false;
                krnGateway.AddFriend(friend);
                buttonAddFriend.Visible=true;
            }
            else
            {
                //send a message box
            }
        }