int	server_client_receive_analize(t_trame **list_trame, \
				      char *buffer)
{
  int	i;
  char	**tab;

  i = 0;
  if ((tab = my_strtok(buffer, " ", 0)) == NULL)
    return (EXIT_FAILURE);
  while (tab[i])
    {
      if (is_number(tab[i]) == 1)
	{
	  if ((server_client_add_trame(list_trame, my_getnbr(tab[i]),
				       tab[i + 1])) == EXIT_FAILURE)
	    return (EXIT_FAILURE);
	  i++;
	}
      else
	(*list_trame)->buffer = my_strconcat((*list_trame)->buffer, tab[i]);
      if (tab[i] != NULL)
	i++;
    }
  return (EXIT_SUCCESS);
}
Exemplo n.º 2
0
void testMY_STRCONCAT(void){
    char* str = NULL;

    if(temp_file != NULL){
        str = my_strconcat("test", "ing");
        CU_ASSERT_STRING_EQUAL(str, "testing");
        free(str);
        str = my_strconcat("test", NULL);
        CU_ASSERT_STRING_EQUAL(str, "test");
        free(str);
        str = my_strconcat(NULL, "ing");
        CU_ASSERT_STRING_EQUAL(str, "ing");
        free(str);
        str = my_strconcat(NULL, NULL);
        CU_ASSERT(str == NULL);
    }
}
char		*server_distribution_send_plage(int x0,
						int x1)
{
  char		*buffer;
  char		*buffer_x0;
  char		*buffer_x1;

  if ((buffer_x0 = server_int_to_str(x0)) == NULL)
    return (NULL);
  if ((buffer_x1 = server_int_to_str(x1)) == NULL)
    return (NULL);
  if ((buffer = my_strconcat(buffer_x0, "-")) == NULL)
    return (NULL);
  if ((buffer = my_strconcat(buffer, buffer_x1)) == NULL)
    return (NULL);
  free(buffer_x0);
  free(buffer_x1);
  return (buffer);
}
Exemplo n.º 4
0
void exe_mkfile(t_dir* lroot, char* name){
	char* fullname;
	t_metafile *f;

//	printf("Dir fullname: %s \n", lroot->fullname);	
	fullname = (char*)xmalloc(sizeof(char)* 1);
	fullname[0] = '\0';
	fullname = my_strconcat(fullname, lroot->fullname);
	fullname = my_strconcat(fullname, name);

	f = (t_metafile*)xmalloc(sizeof(t_metafile)*1);

	f->fullname = (char*)xmalloc(sizeof(char)*my_strlen(fullname)*1);
	my_strcpy(f->fullname, fullname);
	f->fullname[my_strlen(fullname)] = '\0';	
	
	f->path = (char*)xmalloc(sizeof(char)*(my_strlen(lroot->path)+1));
	my_strcpy(f->path,lroot->path); 
	f->path[my_strlen(lroot->path)] = '\0';

	f->filesize = 0;
	
	f->tv = time_stamp();
	
	f->LFile = create_Lfile(f->filesize);
	

	f->filename = (char*)xmalloc(sizeof(char)*(my_strlen(name)+1));
	my_strcpy(f->filename, name);
	f->path[my_strlen(lroot->path)] = '\0';

/*	printf("1: %s\n", f->filename);
	printf("2: %s\n", f->fullname);
	printf("3: %s\n", f->path);
	printf("4: %i\n", f->filesize);
	printf("5: %d\n", (int)f->tv);
	print_Ldisk();
*/
	p_push(lroot->GFiles, f, 0);
	gl_filecount++;

}
Exemplo n.º 5
0
int	main(int argc, char **argv)
{
  char	c, *user, *pwd, *homedir;

  user = "******";
  pwd = "\0";
  homedir = "\0";
  write_stdout("\n\t**ADD A USER IN DATABANK**\n\n");
  write_stdout("<enter your login>\n");
  while ((read(STDIN_FILENO, &c, 1) != -1) && (c != '\n'))
    user = my_strconcat(user, c);
  write_stdout("<enter your password>\n");
  while ((read(STDIN_FILENO, &c, 1) != -1) && (c != '\n'))
    pwd = my_strconcat(pwd, c);
  write_stdout("<enter your homedirectory>\n");
  while ((read(STDIN_FILENO, &c, 1) != -1) && (c != '\n'))
    homedir = my_strconcat(homedir, c);
  add_user_db(user, pwd, homedir);
  write_stdout("<you are now a member of our databank>\n");
  return 0;
}
Exemplo n.º 6
0
Arquivo: server.c Projeto: agincel/SIT
void changeUserNick(struct s_node **head, int userfd, char *newNick)
{
	struct user *currentUser = NULL;
	while (*head != NULL)
	{
		currentUser = (struct user *)(*head)->elem;
		if (currentUser->fd == userfd)
			currentUser->nick = my_strconcat(newNick, "");
		else
			*head = (*head)->next;
	}
}
Exemplo n.º 7
0
char		*server_client_trame(t_client *client, char *trame, char *buffer)
{
  int		retrn;

  trame = my_strconcat(trame, buffer);
  if ((retrn = server_client_receive_is_valide(trame)) > -1)
    {
      server_client_receive_action(client, \
				   server_client_receive_cut_trame(trame));
      trame = my_strdup(&trame[retrn + 1]);
    }
  return (trame);
}
Exemplo n.º 8
0
Arquivo: server.c Projeto: agincel/SIT
int main(int argc, char *argv[])
{
    int listener, newsockfd, portno, i, j, bytesRead;
    fd_set master, readfd;
    struct s_node *userList = NULL;
    struct user *newUser = NULL;

    socklen_t clilen;

    char buffer[256];
    char *messageSending;

    struct sockaddr_in serv_addr, cli_addr;
    int n, maxFileDescriptors = 0;

    char **parsedInput;

    if (argc < 2) 
    {
        my_str("Usage: /server [port]\n");
        exit(1);
    }

    listener = socket(AF_INET, SOCK_STREAM, 0);

    if (listener < 0) 
    {
       my_str("ERROR opening socket");
       exit(1);
    }

    my_bzero((char *) &serv_addr, sizeof(serv_addr));

    portno = my_atoi(argv[1]);

    serv_addr.sin_family = AF_INET; 
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(portno);
    my_memset(&(serv_addr.sin_zero), '\0', 8);

    if (bind(listener, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) 
    {
        my_str("Binding failed.\n");
        exit(1);
    }

    listen(listener,5);

    FD_ZERO(&master);
    FD_ZERO(&readfd);

    FD_SET(listener, &master);
    maxFileDescriptors = listener;
    my_str("Server is now online!\n\n");
    while(1)
    {
        readfd = master;

        if (select(maxFileDescriptors + 1, &readfd, NULL, NULL, NULL) < 0)
            error("select() failed!\n");

        for(i = 3; i <= maxFileDescriptors; i++)
        {
            if(FD_ISSET(i, &readfd))
            {
                if(i == listener) /* we got a new connection */
                {
                	my_str("Got a new connection!\n");
                    clilen = sizeof(cli_addr);
                    newsockfd = accept(listener, 
                                (struct sockaddr *) &cli_addr, 
                                &clilen);

                    if (newsockfd < 0) 
                        error("ERROR on accept");

                    /* read in username */
                    my_bzero(buffer, 256);
                    bytesRead = read(newsockfd, buffer, 255);
                    if (bytesRead > 0) /* was valid username */
                    {
                    	newUser = (struct user *)malloc(sizeof(struct user));
                    	newUser->fd = newsockfd;
                    	newUser->nick = my_strconcat(buffer, ""); /* hacky lmao */
                    	add_node(new_node(newUser, NULL, NULL), &userList);
                    	my_str("New user entry: ");
                    	my_str(buffer);
                    	my_char('\n');
                        messageSending = my_strconcat(buffer, " has connected.");
                        for(j = 3; j <= maxFileDescriptors; j++)
                        {
                            if(FD_ISSET(j, &master))
                            {
                                if(j != listener && j != i)
                                {
                                    if (write(j, messageSending, my_strlen(messageSending)) < 0)
                                        error("write() error!\n");
                                }
                            }
                        }
                    }
                    else
                    	my_str("no nickname received...\n");

                    FD_SET(newsockfd, &master);
                    if (newsockfd > maxFileDescriptors)
                        maxFileDescriptors = newsockfd;
                }
                else /* we got text */
                {
                    bytesRead = read(i, buffer, 255);
                    messageSending = "";
                    if (bytesRead > 1) /* got a message, not just a newline */
                    {
                    	buffer[bytesRead] = '\0';
                    	if (buffer[0] == '/') /* special command */
                    	{
                    		parsedInput = my_str2vect(buffer);

                    		if (my_strcmp(parsedInput[0], "/nick") == 0)
                    		{
                    			if (parsedInput[1] != NULL)
                    			{
                    				messageSending = my_strconcat(getUserNick(userList, i), " changed their nick to ");
                    				removeUser(&userList, i);
                    				newUser = (struct user *)malloc(sizeof(struct user));
                    				newUser->fd = i;
                    				newUser->nick = parsedInput[1];
                    				add_node(new_node(newUser, NULL, NULL), &userList);
                    				messageSending = my_strconcat(messageSending, getUserNick(userList, i));
                    			}
                    		}
                    		else if (my_strcmp(parsedInput[0], "/me") == 0)
                    		{
                    			messageSending = my_strconcat(getUserNick(userList, i), " ");
                  				messageSending = my_strconcat(messageSending, my_vect2str(&parsedInput[1]));
                    		}else if (my_strcmp(parsedInput[0], "/exit") == 0)
                            {
                                messageSending = "";
                            }else /* invalid command */
                            {
                                if (write(i, "Invalid command.", my_strlen("Invalid command.")) < 0)
                                    error("wrote() error!\n");
                            }
                    	}
                    	else /* normal message */
                    	{
	                        messageSending = my_strconcat(getUserNick(userList, i), ": ");
	                        messageSending = my_strconcat(messageSending, buffer);

                    	}

                    	if (my_strcmp(messageSending, "") != 0) /* if wrote message to send, send it */
                    	{
	                        my_str(messageSending);
	                        my_char('\n');
                    		for(j = 3; j <= maxFileDescriptors; j++)
	                        {
	                            if(FD_ISSET(j, &master))
	                            {
	                                if(j != listener && j != i)
	                                {
	                                    if (write(j, messageSending, my_strlen(messageSending)) < 0)
	                                        error("write() error!\n");
	                                }
	                            }
	                        }
	                    }
                    }
                    else if (bytesRead == 0) /* we closed the file descriptor on client */
                    {
                        messageSending = my_strconcat("SERVER: ", getUserNick(userList, i));
                        messageSending = my_strconcat(messageSending, " disconnected.\n");
                        my_str(messageSending);
                        removeUser(&userList, i);

                        for(j = 3; j <= maxFileDescriptors; j++)
                        {
                            if(FD_ISSET(j, &master))
                            {
                                if(j != listener && j != i)
                                {
                                    /* change to "SERVER: /nick disconnected" */
                                    if (write(j, messageSending, my_strlen(messageSending)) < 0)
                                        error("write() error!\n");
                                }
                            }
                        }

                        close(i);
                        FD_CLR(i, &master);
                        continue;
                    }
                    else if (bytesRead < 0)
                        error("Read error...\n");
                }
            }




        }
    }
    return 0; 
}