Esempio n. 1
0
		/// <summary>
		/// Try to register client. Send response about result.
		/// </summary>
		/// <param name="client">client.</param>
		/// <param name="message">client's message.</param>
		private void RegisterClient(MpClient client, RegisterRequestMessage message)
		{
			Message response;

			if (string.IsNullOrEmpty(message.Login) ||
				string.IsNullOrEmpty(message.Password) ||
				message.Login.Length > 20 ||
				message.Password.Length > 30)
			{
				response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Error };
			}
			else
			{
				if (DBoperations.Register(message.Login, message.Password))
				{
					log.Info($"Client registered: {message.Login}");

					response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Success };
				}
				else
				{
					response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Fail };
				}
			}

			try
			{
				// response to client
				client.SendMessage(response);
			}
			catch (ConnectionInterruptedException e)
			{
				log.Error(e);
			}

			// close connection
			log.Info($"Client disconnected. ip {((IPEndPoint)client.tcpClient.Client.RemoteEndPoint).Address.ToString()}");

			try
			{
				client.Close();
			}
			catch (ConnectionInterruptedException e)
			{
				log.Error(e);
			}
		}
Esempio n. 2
0
		/// <summary>
		/// Try to login client. Send response about result.
		/// </summary>
		/// <param name="client">client.</param>
		/// <param name="message">client's message.</param>
		private void LoginClient(MpClient client, LoginRequestMessage message)
		{
			bool isLoggedIn = false;
			Message response;

			if (string.IsNullOrEmpty(message.Login) ||
				string.IsNullOrEmpty(message.Password) ||
				message.Login.Length > 20 ||
				message.Password.Length > 30)
			{
				response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Error };
			}
			else if (usersHandler.GetOnlineUser(message.Login) != null)
			{
				response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.AlreadyLogin };
			}
			else
			{
				int id; // client's id in db
				if (DBoperations.Login(message.Login, message.Password, out id))
				{
					log.Info($"Client login: {message.Login}");

					// user is online
					OnlineUser user = new OnlineUser(id, message.Login, client);
					usersHandler.AddUser(user);
					isLoggedIn = true;
					response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Success };
				}
				else
				{
					response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Fail };
				}
			}

			try
			{
				// response to client
				client.SendMessage(response);
			}
			catch (ConnectionInterruptedException e)
			{
				log.Error(e);
			}

			// close connection with client if client not logged in
			if (!isLoggedIn)
			{
				log.Info($"Client disconnected. ip {((IPEndPoint)client.tcpClient.Client.RemoteEndPoint).Address.ToString()}");

				try
				{
					client.Close();
				}
				catch (ConnectionInterruptedException e)
				{
					log.Error(e);
				}
			}
		}