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(); } }
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; }
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); }
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); }
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(); }
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); }
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(); }
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; }
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 } }