private void SendLoginRequest(Socket _clientSocket) { var idClient = _clientSocket.LocalEndPoint.ToString(); var cryptoClass = new CryptographyObject(idClient); var jsonLogin = new JsonRequest { Service = "CustomerService",//"UserController", Action = "Iniciar Sesion", Credentials = new Credentials { CustomerNumber = txtUsername.Text, Pin = cryptoClass.stringToMd5(txtPassword.Text), Hash = cryptoClass.Md5Gen() } }; var json = JsonConvert.SerializeObject(jsonLogin, Formatting.Indented); var encrypt = cryptoClass.Encriptar(json); //var desencryptToJson = mainForm.Instance.Desencriptar(encrypt); var buffer = Encoding.ASCII.GetBytes(encrypt); //var buffer = Encoding.ASCII.GetBytes(json); _clientSocket.Send(buffer); var receivedBuffer = new byte[BUFFER_SIZE]; var receivedBytes = _clientSocket.Receive(receivedBuffer); var data = new byte[receivedBytes]; Array.Copy(receivedBuffer, data, receivedBytes); var encryptString = Encoding.ASCII.GetString(data); var jsonResponse = cryptoClass.Desencriptar(encryptString); //var jsonResponse = encryptString; JsonResponse = JsonConvert.DeserializeObject <JsonResponse>(jsonResponse); mainForm.Instance.Credentials = mainForm.Instance.Credentials == null ? JsonResponse.MessageResult == "Autorizado" ? JsonResponse.Credentials : mainForm.Instance.Credentials : new Credentials(); //Console.WriteLine("Received: " + Encoding.ASCII.GetString(data)); //return Encoding.ASCII.GetString(data) == "0" ? 0 : 1; //} }
private void SendMyFilesRequest(Socket _clientSocket) { var idClient = _clientSocket.LocalEndPoint.ToString(); var cryptoClass = new CryptographyObject(idClient); var jsonRequest = new JsonRequest { Service = "FileController", Action = "Listar Archivos", Credentials = new Credentials { CustomerNumber = Instance.Credentials.CustomerNumber, Pin = Instance.Credentials.Pin, Hash = cryptoClass.Md5Gen() } }; var json = JsonConvert.SerializeObject(jsonRequest, Formatting.Indented); //var buffer = Encoding.ASCII.GetBytes(json); var encrypt = cryptoClass.Encriptar(json); //var desencryptToJson = mainForm.Instance.Desencriptar(encrypt); var buffer = Encoding.ASCII.GetBytes(encrypt); _clientSocket.Send(buffer); var receivedBuffer = new byte[BUFFER_SIZE]; var receivedBytes = _clientSocket.Receive(receivedBuffer); var data = new byte[receivedBytes]; Array.Copy(receivedBuffer, data, receivedBytes); //var jsonResponse = Encoding.ASCII.GetString(data); var encryptString = Encoding.ASCII.GetString(data); var jsonResponse = cryptoClass.Desencriptar(encryptString); JsonResponse = JsonConvert.DeserializeObject <JsonResponse>(jsonResponse); if (JsonResponse.MessageResult == "Invalid") { MessageBox.Show("No se pudo completar la acción."); return; } Instance.fileRepository.Files = JsonResponse.Files; //ucMisArchivosDescarga.Instance.fileRepository.Files = JsonResponse.Files; //Console.WriteLine("Received: " + Encoding.ASCII.GetString(data)); }
private void SendUploadFileRequest(Socket _clientSocket, string filePath) { try { var idClient = _clientSocket.LocalEndPoint.ToString(); var cryptoClass = new CryptographyObject(idClient); var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); var bytesArray = new byte[fs.Length]; var bytesToRead = (int)fs.Length; //var bytesRead = 0; var br = new BinaryReader(fs); var bytes = new FileInfo(filePath); var numBytes = bytes.Length; var fileBuff = br.ReadBytes(bytesToRead); var fileData = Convert.ToBase64String(fileBuff); var jsonRequest = new JsonRequest { Service = "FileController", Action = "Subir Archivo", Credentials = new Credentials { CustomerNumber = Instance.Credentials.CustomerNumber, Pin = Instance.Credentials.Pin, Hash = cryptoClass.Md5Gen(), }, FileAux = new FileDto { FileName = Instance.safeFileNameSelected, FileData = fileData } }; //var json = JsonConvert.SerializeObject(jsonRequest, Formatting.Indented); //var buffer = Encoding.ASCII.GetBytes(json); var json = JsonConvert.SerializeObject(jsonRequest, Formatting.Indented); var encrypt = cryptoClass.Encriptar(json); //var desencryptToJson = cryptoClass.Desencriptar(encrypt); var buffer = Encoding.ASCII.GetBytes(encrypt); _clientSocket.Send(buffer); var receivedBuffer = new byte[BUFFER_SIZE]; var receivedBytes = _clientSocket.Receive(receivedBuffer); var data = new byte[receivedBytes]; Array.Copy(receivedBuffer, data, receivedBytes); //var jsonResponse = Encoding.ASCII.GetString(data); var encryptString = Encoding.ASCII.GetString(data); var jsonResponse = cryptoClass.Desencriptar(encryptString); JsonResponse = JsonConvert.DeserializeObject <JsonResponse>(jsonResponse); if (JsonResponse.MessageResult == "Invalid Request") { MessageBox.Show("No se pudo completar la acción."); return; } MessageBox.Show(JsonResponse.MessageResult); } catch (Exception ex) { } }
private void ReceiveCallback(IAsyncResult AR) { var socket = (Socket)AR.AsyncState; if (!socket.Connected) { return; } var received = socket.EndReceive(AR); var dataBuf = new byte[received]; var idClient = socket.RemoteEndPoint.ToString(); var cryptoClass = new CryptographyObject(idClient); Array.Copy(_buffer, dataBuf, received); var encryptText = Encoding.ASCII.GetString(dataBuf); JsonRequest = cryptoClass.Desencriptar(encryptText); UpdateTramaJsonEntrante(JsonRequest, encryptText); var jsonSimpleRequest = JsonConvert.DeserializeObject <JsonRequest>(JsonRequest); var serverHash = cryptoClass.Md5Gen(); UpdateHash(jsonSimpleRequest.Credentials.Hash, serverHash); var jsonResponse = new JsonResponse(); #region ValidateHash if (jsonSimpleRequest.Credentials.Hash != serverHash) { MessageBox.Show("El cliente ha creado una petición con una llave inválida."); return; } if (jsonSimpleRequest == null) { MessageBox.Show("Ha ocurrido un error con la petición del cliente"); return; } if (jsonSimpleRequest.Action == "Desconectar del sistema") { MessageBox.Show("Usuario se ha desconectado."); users.Remove(jsonSimpleRequest.Credentials.CustomerNumber); UpdateUsersConnected(); return; } #endregion switch (jsonSimpleRequest.Service) { case "CustomerService": _controller.SetJsonRequest(jsonSimpleRequest); switch (jsonSimpleRequest.Action) { case "Iniciar Sesion": _controller.Login(); jsonResponse = _controller.JsonResponse; if (_controller.JsonResponse.MessageResult == "Autorizado") { users.Add(jsonSimpleRequest.Credentials.CustomerNumber); UpdateUsersConnected(); } break; case "Cambiar Pin": _controller.ChangePin(); jsonResponse = _controller.JsonResponse; break; case "Actualizar Telefono": _controller.UpdateTelefono(); jsonResponse = _controller.JsonResponse; break; case "Consultar Usuario": _controller.GetCustomer(); jsonResponse = _controller.JsonResponse; break; } break; case "AccountService": _controller.SetJsonRequest(jsonSimpleRequest); switch (jsonSimpleRequest.Action) { case "Consultar Saldo": _controller.GetAccount(); jsonResponse = _controller.JsonResponse; break; case "Retirar Efectivo": _controller.Withdrawal(); jsonResponse = _controller.JsonResponse; break; case "Depositar Efectivo": _controller.Deposit(); jsonResponse = _controller.JsonResponse; break; case "Transferir": _controller.Transfer(); jsonResponse = _controller.JsonResponse; break; } break; case "ProductService": _controller.SetJsonRequest(jsonSimpleRequest); switch (jsonSimpleRequest.Action) { case "Consultar Productos": _controller.GetAllProductsByCustomer(); jsonResponse = _controller.JsonResponse; break; case "Pagar Producto": _controller.PayProduct(); jsonResponse = _controller.JsonResponse; break; } break; case "LogService": _controller.SetJsonRequest(jsonSimpleRequest); switch (jsonSimpleRequest.Action) { case "Consultar Bitacora": _controller.GetAllLogByCustomer(); jsonResponse = _controller.JsonResponse; break; } break; default: jsonResponse.MessageResult = "Invalid Request"; break; } UpdateBitacora(); var json = JsonConvert.SerializeObject(jsonResponse, Formatting.Indented); var encryptSendText = cryptoClass.Encriptar(json); UpdateTramaJsonSaliente(json, encryptSendText); var data = Encoding.ASCII.GetBytes(encryptSendText); socket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallback), socket); socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket); }