コード例 #1
0
ファイル: main.c プロジェクト: Monpoke/iut-n4-webserver
/**
 * Main program
 * @return 
 */
int main(int argc, char** argv) {

    
    // document root
    char* docroot = open_documentroot(argc, argv);


    int server = creer_serveur(WEBSERVER_PORT);
    printf("Server launched:\n");

    // Mimes
    loadMimes();
    
    // Load stats
    init_stats();
    
    
    // Signaux
    initialiser_signaux();

    
    /**
     * Get client request
     * @return 
     */
    createClient(server, docroot);

    return 0;

}
コード例 #2
0
ファイル: main.c プロジェクト: kileurf/serveur_web
int main(void){
	int socket_serveur=creer_serveur(8080);
	initialiser_signaux();
	//int status;
	int socket_client;
	//signal(SIGCHLD, hand);
	while (1) {
		socket_client = accept ( socket_serveur , NULL , NULL );
		if ( socket_client == -1){
			perror ( " accept " ); /* traitement d ’ erreur */
		}
		const char * message_bienvenue = "La sortie c'est sur la petite croix (rouge) merci 			d'appuyer dessus.\n Nutella et Caramel\n J'vous aimes putain";
		//int pid;
		if((pid=fork())==0){
			char *buf = malloc(sizeof(char)*80);
			write ( socket_client , message_bienvenue , strlen		(message_bienvenue));

			FILE *f = fdopen(socket_client, "r+");
 			do {fgets(buf, sizeof(buf),f);
 				printf("%s",buf);
 				fflush(stdout);
 				write ( socket_client, buf , strlen (buf));
			}while(buf[0]!='.' && buf[1]!='q');
 			free(buf);	
			close(socket_client);
			exit(0);
		}
		
    		

        	   
	}
	
	return 0;
}
コード例 #3
0
ファイル: main.c プロジェクト: fevrec/powned
int main (void)
{	
	int socket_serveur = creer_serveur(8080);
	initialiser_signaux();	
	int statut;
	
	while (1) {
		int socket_client = accept ( socket_serveur , NULL , NULL );
		if ( socket_client == -1){
			perror ( " accept " ); /* traitement d ’ erreur */
		}
		int pid;
		if ((pid = fork()) == 0) {
			char *buf = malloc(255);
			/* On peut maintenant dialoguer avec le client */
			//sleep(1);
			/*const char * message_bienvenue = "Mesdames, messieurs,\n client, cliente\nJe suis heureux de vous annoncer que moi, serveur, s'est connecté à vous meme.\nPuisse le lien qui nous unis etre aussi fort que l'amour liant Mr java et Madame Eclipse.\nCe message sera envoyé tant que vous me recevrez, tant que vous m'ecouterez de votre oreille attentive...\nPaix et amour, guerre et haine, ne sont que futilitées, nous vivons notre passion comme un arbre perds ses feuilles en automne...\nVive les programmes ! Pro comme professionel, gramme comme le peu qu'il nous faut pour nous faire plaisir. Ajoutez a ces éléments, un peu de feuille marron et blanche afin d'obtenir un moment de paix et d'armonie autour de vous.\nA tout de suite pour un nouveau message !\n" ;
			write ( socket_client , message_bienvenue , strlen ( message_bienvenue ));*/
			FILE *f = fdopen(socket_client, "w+");
			fgets_or_exit(buf,255,f);
			/*write ( 1 , buf , strlen (buf));
			write (socket_client, buf, strlen(buf));*/
			free(buf);
			fclose(f);
			return 1;
		}
       	printf("connexion acceptée\n") ;
		if (waitpid(pid, &statut, WNOHANG) == -1)
			perror("erreur waitpid");
            close(socket_client);
		
	}
	return 0;
}	
コード例 #4
0
ファイル: main.c プロジェクト: seysn/Tomchapache
int main() 
{   
    char buf[BUF_SIZE];
    int socket_serveur, socket_client;
    if((socket_serveur = creer_serveur(8080)) == EXIT_FAILURE) {
        return EXIT_FAILURE;
    }

    initialiser_signaux();
    const char * message_bienvenue = "Bonjour, bienvenue sur le serveur\nle plus parfait du monde.\nSur votre droite, vous pourrez voir\nrien qui n\'est plus parfait que\nle serveur qui defie la perfection.\nSur votre gauche, pareil.\nNenufar.\nOgnon.\r\n";

    while (1) {
        socket_client = accept(socket_serveur, NULL, NULL);
        if (socket_client == -1) {
            perror("accept");
            return EXIT_FAILURE;
        }
        FILE *fsocket = fdopen(socket_client, "w+");
        switch (fork()) {
	case -1:
	    perror("fork");
	    return EXIT_FAILURE;
	case 0:
	    /* On peut maintenant dialoguer avec le client */
                
	    fgets_or_exit(buf, BUF_SIZE, fsocket);
	    http_request request;

	    int bad_request = parse_http_request(buf, &request);
	    skip_header(fsocket);
                
	    if (bad_request == 0) {
		send_response(fsocket, 400, "Bad Request", "Bad Request\r\n");
	    }
	    else if (request.method == HTTP_UNSUPPORTED) {
		send_response(fsocket, 405, "Method not allowed", "Method not allowed\r\n");
	    }
	    else if (strcmp(request.url, "/") == 0) {
		send_response(fsocket, 200, "OK", message_bienvenue);
	    }
	    else {
		send_response(fsocket, 404, "Not Found", "Not Found\r\n");
	    }
	    fclose(fsocket);
	    return EXIT_SUCCESS;
	default:
	    fclose(fsocket);
	    close(socket_client);
        }
    }

    return EXIT_SUCCESS;
}
コード例 #5
0
int main(/*int argc, char ** argv*/)
{
/* Arnold Robbins in the LJ of February ’95 , describing RCS */
/*if ( argc > 1 && strcmp (argv [1], " -advice ") == 0){
printf("Don’t Panic !\n");
return 42;
}
printf("Need an advice ?\n");
*/

if(creer_serveur(8080) == -1){

perror("erreur creer_serveur");
}
return 0;
}
コード例 #6
0
ファイル: main.c プロジェクト: dusartc/server
int main(void){
  int socket_client, socket_serveur = creer_serveur(8080);
  initialiser_signaux();
  while(1){
    socket_client = accept(socket_serveur, NULL, NULL);
    FILE *server = fdopen(socket_client, "w+");
    if(server == NULL){
      perror("fdopen");
      return EXIT_FAILURE;
    }
    if(fork()==0){
      if(socket_client == -1){
        perror("socket client");
        exit(EXIT_FAILURE);
      }
      sleep(1);
      FILE *client = fdopen(socket_client,"w+");
      
      char buffer[BUFFER_SIZE];
      char *buf;
      while(1){
        memset(buffer, '\0', BUFFER_SIZE);
        int parse_status, done=0, line_header=0;
        http_request request;

       // int request_value;        
        skip_headers(client);
        while((buf=fgets(buffer, BUFFER_SIZE, server))!=NULL){
          printf("%s", buffer);
          line_header++;
          if(line_header == 1) parse_status = parse(buffer, &request);
          if(strcmp(buffer, "\r\n") == 0) done = 1;
          if(parse_status == 0 && done == 1){
            send_response(server, 400, "Bad Request", "Bad Request\r\n");
          } else if(done == 1){
            if(request.method == HTTP_GET){
              if(strcmp(request.url, "/") == 0){
               send_response(server, 200, "OK", mess);
              } else {
                send_response(server, 404, "Not Found", "Not Found\r\n");
              } 
            } else {
              send_response(server, 400, "Bad Request", "Bad Request\r\n");
            }
            done = 0; line_header = 0; parse_status = 0;
          }
        }

       /* if (request_value){
          send_response ( client, 400, "Bad Request", "Bad request \r\n " );
        }else if ( request.method == HTTP_UNSUPPORTED ){
        send_response ( client, 405, "Method Not Allowed", " Method Not Allowed\r\n " );
        }else if ( strcmp ( request.url, "/" ) == 0){
          send_response ( client, 200, "OK", mess );
        }else
          send_response ( client, 404, " Not Found ",  "Not Found \r\n " );
       */
      exit(EXIT_SUCCESS);
      }
    } else {
      close(socket_client);
    }
  }
  //close(socket_client); //deja fermée
  close(socket_serveur);
  return EXIT_SUCCESS;
}
コード例 #7
0
ファイル: main.c プロジェクト: Kaminuri/RsxN4C
int main(){
	int taille=0;
	int socket_client, pid, erreur = 0;
	
	char str[1024];
	http_request req;
	FILE *f = NULL;
	const char *message_bienvenue = "Bonjour, c'est un grand honneur de vous avoir sur notre serveur. Bienvenue à bord !\n";
	int socket_serveur = creer_serveur(8080);
	message_bienvenue +=0;
	taille+=0;
	
	initialiser_signaux();
	while((socket_client = accept(socket_serveur , NULL , NULL)) != -1){
		
		if((pid = fork()) == -1){
			perror("Erreur fork");
		/* traitement d’erreur */
		}
		if(pid == 0){
			sleep(1);
			f = fdopen(socket_client, "w+");
			/* if(write(socket_client, message_bienvenue, strlen(message_bienvenue)) == -1){
				perror("Erreur write bienvenu");
				traitement d’erreur 
			}*/
			fgets_or_exit(str, sizeof(str), f);
			skip_headers(f);
			erreur=parse_http_request(str,&req);
				
				//erreur = 1;
				/*strcpy(s, str);
				char* token = strtok(s, " ");
				while (token) {
					tokenCounter++;
					if(tokenCounter == 1 && !strcmp(token,"GET") == 0){
						erreur = 0;
					}
					if(tokenCounter ==2 && !strcmp(token, "/") ==0){
						erreur=0;
					}
					if(tokenCounter == 3 && (strncmp(token, "HTTP/1.1",8) != 0 && strncmp(token, "HTTP/1.0",8) !=0)){
						
						erreur = 0;
					}
					if(tokenCounter >=4){
						printf("%s\n", token);
					}			
					token = strtok(NULL, " ");

				}*/
			if(erreur == 404){
				send_response(f,404,"Page not found","Page not found\r\n");
			}else if(erreur == 400){
				send_response(f,400,"Bad Request","Bad Request\r\n");
			}else{
				fprintf(f, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s\r\n", (int)strlen(message_bienvenue)+2, message_bienvenue);
			}

			fflush(f);
			fclose(f);
			
			
			/*while((taille = read(socket_client, buffer, 256)) != 0){
				if(write(socket_client, buffer, taille)== -1){
					perror("Erreur write retour de message");
				}
			}*/
			exit(EXIT_SUCCESS);
		}else{
			close(socket_client);
		}

	}
	return 1;
}
コード例 #8
0
ファイル: main.c プロジェクト: soniahachemi/Lemon
int main (void)
{
  initialiser_signaux();
	struct sockaddr_in clientname;
	int socket_serveur;
	socklen_t size = sizeof (clientname);
	socket_serveur= creer_serveur(8080);
	if(socket_serveur==-1){
		perror("socket_serveur");
		return -1;
	}


	
		const char * message_bienvenue=" Bonjour et bienvenue sur le serveur Lemon ! \n\nCe qui est dramatique\nEn dehors de croire que l’on détient la vérité\nEst de s’accrocher telle une tique\nAfin de l’imposer\n\nAucune amitié ne vaut\nLa paix de l’esprit\nAucuns grands travaux,\nNe vaut, du doute l’autopsie\n\nDu temps où vos solitudes me fascinaient\nJ’ai perdus mes concepts de simplicité\nEt chercher de l’intérieur ce qui chez moi clochait\nAlors que tout était déjà bien rangé\n\nÀ chacun son Dieu, à chacun sa folie\nEt les esprits seront bien gardés\nÉcoute ce que l’instinct te dit\nEt marche sans te retourner\n\n";	


//const char * message_erreur = "HTTP/1.1 400 Bad Request \r\n Connection: close \r\n Content-Length: 17 \r\n 400 Bad request \r\n";


// Creation client
	int socket_client ;
	int f;
	int helper = 1;

	while((socket_client = accept ( socket_serveur , (struct sockaddr *) &clientname, &size))  !=-1 ){
		if((f=fork()) ==-1 ){ perror("Erreur fork");}
		
		if(f==0){
			// processus fils

			FILE * desc;
			char str[60];

			desc = fdopen(socket_client,"w+");


			if(desc==NULL){
				perror("Erreur fopen");
				return -1;
			}
			// Analyse de la requete

				// premiere ligne de requette valide	
					
				while(helper > 0){
					fgets (str, 60*sizeof(char), desc);					
					printf("[%d] : -%s-",helper, str); 
					helper ++;
					if(helper==2 && strncmp(str,"GET / HTTP/1.1",14)!=0 && strncmp(str,"GET / HTTP/1.0",14)!=0 ){
						printf("\t [%d] : echo %s-",helper, str);
					}
					if ( strcmp(str,"\n")==0 || strcmp(str,"\r\n")==0  ) {
						printf("fin");
						helper = -2;
					}

	  		 	}
				printf(" debut reponse");
				// debut de la reponse			
				if(helper!=-1){
					fprintf(desc,"\n ----- \n %s\n","HTTP/1.1 200 OK");
					fprintf(desc,"\n------ \n %s\n",message_bienvenue);
					while( fgets (str, 60, desc)!=NULL){
						printf("%s",str);
		  		 	}
				}

	  		fclose(desc);
		}
		else {
			close(socket_client);
		}
	}
	return 0;
}
コード例 #9
0
ファイル: main.c プロジェクト: KC07/M4101C-Server
int main(void)
{
	int socket_client;
	int socket_serveur = creer_serveur(8080);
	initialiser_signaux();
	
	const char* message_bienvenue = "#############################################################\n#                                                           #\n#                         BONJOUR !                         #\n#             Bienvenue sur le serveur Wichita              #\n#                                                           #\n#                          ------                           #\n#                                                           #\n#      Wichita tient son nom d'une langue amérindienne.     #\n#        Cette langue est en voie de disparition...         #\n#               ... comme beaucoup d'autres.                #\n#                                                           #\n#  Quoi qu'il en soit, amusez-vous bien avec Wichita ! :-)  #\n#                                                           #\n#############################################################\n";
	
	const char *bad_request = "HTTP/1.1 400 Bad Request\nConnection: close\nContent-Length: 17\n\n400 Bad Request\n";
	const char *connected = "HTTP/1.1 200 OK\nConnection: open\nContent-Length: 80\n\n";
	
	while(1)
	{
		socket_client = accept(socket_serveur, NULL ,NULL);
		if (socket_client == -1)
		{
			perror("socket_client accept error");
			continue;
		}
		
		if (fork() == 0)
		{
			char buffer[BUF_SIZE];
			FILE * client_file = fdopen(socket_client, "w+");
			
			if (fgets(buffer, BUF_SIZE, client_file) == NULL)
			{
				perror("fgets en-tete");
				close(socket_client);
				exit(EXIT_FAILURE);
			}
			printf(buffer);
			if (http_get_request(buffer) != 0)
			{
				fprintf(client_file, "%s", bad_request);
				fflush(client_file);
				close(socket_client);
				exit(EXIT_FAILURE);
			}
			else
			{
				fprintf(client_file, "%s", connected);
				fflush(client_file);
			}
			
			skip_until(client_file, "\r\n");
			fprintf(client_file, "%s", message_bienvenue);
			fflush(client_file);
			
			while(strcmp("FIN\n", buffer) != 0)
			{
				memset(buffer, '\0', strlen(buffer));
				
				if (fgets(buffer, BUF_SIZE, client_file) != NULL)
				{
					// writes to the client
					//fprintf(client_file, "<Wichita> %s", buffer);
					
					// writes to the server
					printf("%s", buffer);
				}
			}
			close(socket_client);
			break;
		}
		else
		{
			close(socket_client);
		}
	}
	
	close(socket_serveur);
	return EXIT_SUCCESS;
}
コード例 #10
0
ファイル: main.c プロジェクト: Delbart1/pawnee
int main(/*int argc, char **argv*/void)
{

	printf("Bienvenue sur pawnee\n");
	int socket_client;
	int socket_serveur = creer_serveur(8080);
	FILE* stream;

	while(1)
	{
		
		socket_client = accept(socket_serveur, NULL, NULL);
		stream = fdopen (socket_client ,"w+");
		if(socket_client == -1)
		{
			perror("accept");
			return -1;	
		}

		pid_t pid = fork();

		if(pid == 0)
		{
					
				int taille = 256 * sizeof(char);
				char * buffer = malloc(taille);
				fgets(buffer,taille,stream);
				
				while(strcmp(buffer, "\n") == 0)
				{
				write(socket_client, "Entrez une chaine valide\n", strlen("Entrez une chaine valide\n"));
				fgets(buffer, taille, stream);
				}

				if(message_HTTP(buffer) == -1){
					perror("HTTP/1.1 400 Bad Request\r\nConnection: close\r\nContent-Length: 17\r\n400 Bad request\r\n");
					return -1;
				}
				write(socket_client, "HTTP/1.1 200 OK\r\n", strlen("HTTP/1.1 200 OK\r\n"));

				const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur \n 1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n 10\n";
				sleep(1);
				fprintf(stream,"%s",message_bienvenue);
				
				while(fgets(buffer, taille, stream) != '\0')
				{
			
					printf("%s %s","<Pawnee>",buffer);
				
				}	
				
		}
		else
		{
			if(close(socket_client) ==-1)
			{
				perror("close");
				return -1;
			}			
		}
	}

	if(close(socket_client) ==-1)
	{
		perror("close");
		return -1;
	}
	
	fclose(stream);
	return 0;
}