private void CommandAddContact(Connection Connection, Data dato)
        {
            string[] payloadSplitted = dato.Payload.Message.Split('|');
            string   login           = payloadSplitted[0];
            string   contactToAdd    = payloadSplitted[1];

            bool ok = UsersContactsPersistenceHandler.GetInstance().AddContact(login, contactToAdd);

            string statusMessage = ok ? "SUCCESS" : "ERROR";
            string message       = contactToAdd + STATUS_DELIMITER + "0" + CONTACT_DELIMITER + statusMessage;

            Data retDato = new Data()
            {
                Command = Command.RES,
                OpCode  = OpCodeConstants.RES_ADD_CONTACT,
                Payload = new MultiplePayload()
                {
                    Message = message, Destination = login
                }
            };

            foreach (var item in retDato.GetBytes())
            {
                Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item));
                Connection.WriteToStream(item);
            }
        }
        private void CommandGetContactList(Connection Connection, Data dato)
        {
            string        login    = dato.Payload.Message;
            List <string> contacts = UsersContactsPersistenceHandler.GetInstance().GetContacts(login);

            StringBuilder message = new StringBuilder();
            bool          first   = true;

            foreach (var item in contacts)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    message.Append(CONTACT_DELIMITER);
                }
                message.Append(item).Append(STATUS_DELIMITER).Append("0");
            }
            Data retDato = new Data()
            {
                Command = Command.RES, OpCode = OpCodeConstants.RES_CONTACT_LIST, Payload = new MultiplePayload()
                {
                    Message = message.ToString(), Destination = login
                }
            };

            foreach (var item in retDato.GetBytes())
            {
                Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item));
                Connection.WriteToStream(item);
            }
            Console.WriteLine("termina :CommandGetContactList");
        }
Exemple #3
0
        public void SetupConn()  // Setup connection and login
        {
            connection = new Connection("DNS", new TcpClient(DNSServer, DNSPort), new ReceiveEventHandler(), delegado);


            string payload = Settings.GetInstance().GetProperty("server.name", "rodrigo-nb")
                             + ":" + Settings.GetInstance().GetProperty("server.ip", "127.0.0.1")
                             + ":" + Settings.GetInstance().GetProperty("server.port", "2001")
                             + ":" + Settings.GetInstance().GetProperty("server.transfers.port", "20001")
                             + ":" + UsersContactsPersistenceHandler.GetInstance().Count;

            Data data = new Data()
            {
                Command = Command.REQ,
                OpCode  = 3,//REQ_SERVER_CONNECT
                Payload = new Payload(payload)
            };

            int cont = 0;

            foreach (var item in data.GetBytes())
            {
                Console.WriteLine("line " + cont++ + "   --->" + ConversionUtil.GetString(item));
                log.Info("Enviando linea " + cont++ + "   --->" + ConversionUtil.GetString(item));
                connection.WriteToStream(item);
            }

            log.Info("End Register Server");
        }
        private void CommandGetFile(Connection connection, Data dato)
        {
            string[] payload  = dato.Payload.Message.Split(new string[] { PIPE_SEPARATOR }, StringSplitOptions.None);
            string   login    = payload[0];
            string   owner    = payload[1];
            string   hashfile = payload[2];

            FileInfo fi = FileOperationsSingleton.GetInstance().GetFile(hashfile, login);
            Data     retDato;

            if (fi == null)
            {
                retDato = new Data()
                {
                    Command = Command.RES,
                    OpCode  = OpCodeConstants.RES_SEARCH_FILES,
                    Payload = new Payload()
                    {
                        Message = "ERROR [wrong file or not found]"
                    }
                };
            }
            else
            {
                string port = Settings.GetInstance().GetProperty("server.transfers.port", "20001");
                string ip   = Settings.GetInstance().GetProperty("server.ip", "127.0.0.1");

                long size = fi.Length;

                string message = login + PIPE_SEPARATOR + owner + PIPE_SEPARATOR + hashfile + PIPE_SEPARATOR + ip + PIPE_SEPARATOR + port + PIPE_SEPARATOR + size;

                retDato = new Data()
                {
                    Command = Command.RES,
                    OpCode  = OpCodeConstants.RES_SEARCH_FILES,
                    Payload = new Payload()
                    {
                        Message = message
                    }
                };
            }

            foreach (var item in retDato.GetBytes())
            {
                Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item));
                connection.WriteToStream(item);
            }
        }
        private void CommandSearchFiles(Connection connection, Data dato)
        {//REQ07
         // login + "|" + hashQuery + "|" + pattern;


            string[]          payload   = dato.Payload.Message.Split(new string[] { PIPE_SEPARATOR }, StringSplitOptions.None);
            string            login     = payload[0];
            string            queryHash = payload[1];
            string            pattern   = payload[2];
            List <FileObject> results   = FileOperationsSingleton.GetInstance().SearchFilesMatching(pattern);

            StringBuilder message     = new StringBuilder();
            string        destination = login + ARROBA_SEPARATOR + queryHash + ARROBA_SEPARATOR + Settings.GetInstance().GetProperty("server.name", "DEFAULT_SERVER");

            bool first = true;

            foreach (var item in results)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    message.Append(PIPE_SEPARATOR);
                }
                message.Append(item.ToNetworkString());
            }

            string tmp = message.ToString();

            Data retDato = new Data()
            {
                Command = Command.RES,
                OpCode  = OpCodeConstants.RES_SEARCH_FILES,
                Payload = new MultiplePayload()
                {
                    Message = tmp, Destination = destination
                }
            };

            foreach (var item in retDato.GetBytes())
            {
                Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item));
                connection.WriteToStream(item);
            }
        }
Exemple #6
0
        private void SendReadyToReceiveFile(Connection clientConnection)
        {
            Data retDato = new Data()
            {
                Command = Command.RES,
                OpCode  = OpCodeConstants.RES_UPLOAD_FILE,
                Payload = new Payload()
                {
                    Message = MessageConstants.MESSAGE_SERVER_READY
                }
            };

            foreach (var item in retDato.GetBytes())
            {
                clientConnection.WriteToStream(item);
            }
        }
        private void CommandCreateNewUser(Connection Connection, Data dato)
        {
            string login   = dato.Payload.Message;
            bool   ok      = UsersContactsPersistenceHandler.GetInstance().RegisterNewUser(login);
            Data   retDato = new Data()
            {
                Command = Command.RES,
                OpCode  = OpCodeConstants.RES_CREATE_USER,
                Payload = new MultiplePayload()
                {
                    Message = (ok? "SUCCESS" : "ERROR"), Destination = login
                }
            };

            foreach (var item in retDato.GetBytes())
            {
                Console.WriteLine("Envio :{0}", ConversionUtil.GetString(item));
                Connection.WriteToStream(item);
            }
        }