private void HandleUpdate(string[] message) { if (message.GetLength(0) != 2) { return; } try { string[] files = Directory.GetFiles(Path.Combine(Application.StartupPath, message[0])); if (message[1].Equals(files[0])) { _manager.SendMessage("0"); } else { string b = new FileInfo(Path.Combine(Application.StartupPath, message[0], files[0])).Length.ToString(); _manager.SendMessage(b + '/' + Path.GetFileName(files[0])); _client.Client.SendFile(Path.Combine(Application.StartupPath, message[0], files[0])); } } catch (Exception) { _manager.SendMessage("0"); } }
public void ForwardMessagesToAllClients() { while (true) { if (client.Connected == true) { NetworkStream clientStream = client.GetStream(); if (clientStream.DataAvailable == false) { Thread.Sleep(100); continue; } string messageProtocol = NetworkManager.ReadMessage(client, 302); char[] mesageProtocolArray = messageProtocol.ToCharArray(); if (messageProtocol[0] == 'C' && messageProtocol[1] == 'H' && messageProtocol[2] == 'A' && messageProtocol[3] == 'T' && messageProtocol[4] == 'M' && messageProtocol[5] == 'E') { string messageString = string.Empty; for (int i = 6; i < mesageProtocolArray.Length; i++) { messageString = messageString + mesageProtocolArray[i]; } string[] messageProtocolContent = messageString.Split('-'); Protocol message = ProtocolCreator.PublishMessage(messageProtocolContent[0], GetUserGroup(messageProtocolContent[0]), messageProtocolContent[1]); foreach (User user in userAccountManager.OnlineUser) { NetworkManager.SendMessage(message, user.Client); } } Thread.Sleep(100); } else { break; } } }
public void VerifyUserLogin(string username, string password, TcpClient client, string userPath) { string path = userPath + @"\" + username + ".txt"; if (File.Exists(path) == false) { Protocol loginInvalid = ProtocolCreator.LoginInvalid(); NetworkManager.SendMessage(loginInvalid, client); } else if (File.Exists(path) == true) { if (VerifyUserData(username, password, path) == true) { Protocol loginOK = ProtocolCreator.LoginOk(); NetworkManager.SendMessage(loginOK, client); string protocolString = loginOK.ToString(); char[] protocolStringArray = protocolString.ToCharArray(); string sessionKey = string.Empty; if (protocolStringArray[0] == 'C' && protocolStringArray[1] == 'H' && protocolStringArray[2] == 'A' && protocolStringArray[3] == 'T' && protocolStringArray[4] == 'L' && protocolStringArray[5] == 'O') { for (int i = 6; i < protocolStringArray.Length; i++) { sessionKey = sessionKey + protocolStringArray[i]; } this.OnlineUser.Add(new User(username, client, sessionKey)); Console.WriteLine("{0} ({1}) has logged in!", username, ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()); MessageManager messageManager = new MessageManager(this, client); messageManager.ForwardMessagesToAllClients(); } } else { Protocol loginInvalid = ProtocolCreator.LoginInvalid(); NetworkManager.SendMessage(loginInvalid, client); } } }
public static void CreateNewUser(string username, string password, TcpClient client, string userPath) { string path = userPath + @"\" + username + ".txt"; if (File.Exists(path) == true) { Protocol registrationInvalid = ProtocolCreator.RegistrationInvalid(); NetworkManager.SendMessage(registrationInvalid, client); } else { if (CheckIfLegalUserData(username, password) == false) { Protocol registrationInvalid = ProtocolCreator.RegistrationInvalid(); NetworkManager.SendMessage(registrationInvalid, client); } else { string[] userFile = new string[3]; userFile[0] = "Username: "******"Password: "******"User Group: User"; File.WriteAllLines(path, userFile); Protocol registrationOk = ProtocolCreator.RegistrationOk(); NetworkManager.SendMessage(registrationOk, client); Console.WriteLine("{0} ({1}) has registered!", username, ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()); } } }