Example #1
0
        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;

            //}
        }
Example #2
0
        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));
        }
Example #3
0
        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)
            {
            }
        }
Example #4
0
        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);
        }