diff --git a/backup/client.c b/backup/client.c deleted file mode 100644 index efd0a9f..0000000 --- a/backup/client.c +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include -#include -#include -#include -#include -#define MAXHOSTLEN 64 -#define MAXPORTLEN 6 -#define MAXBUFFERLEN 1024 -int main(int argc, char* argv[]){ - int descSock; // Descripteur de la socket - int ecode; // Retour des fonctions - struct addrinfo *res; // Résultat de la focntion getaddrinfo - struct addrinfo hints = { // Cette structure permet de contrôler l'exécution de la fonction getaddrinfo - 0, - AF_INET, //seule les adresses IPv4 seront présentées par la fonctiongetaddrinfo - SOCK_STREAM, - 0, - 0, - NULL, - NULL, - NULL - }; - char serverName[MAXHOSTLEN]; // Nom de la machine serveur - char serverPort[MAXPORTLEN]; // Numéro de port - char buffer[MAXBUFFERLEN]; // buffer stockant les messages échangés entre le client et le serveur - //On teste les valeurs rentrées par l'utilisateur - if (argc != 3){ perror("Mauvaise utilisation de la commande: \n"); exit(1);} - if (strlen(argv[1]) >= MAXHOSTLEN){ perror("Le nom de la machine serveur est trop long\n"); exit(2);} - if (strlen(argv[2]) >= MAXPORTLEN){ perror("Le numero de port du serveur est trop long\n"); exit(2);} - strncpy(serverName, argv[1], MAXHOSTLEN); - serverName[MAXHOSTLEN-1] = '\0'; - strncpy(serverPort, argv[2], MAXPORTLEN); - serverPort[MAXPORTLEN-1] = '\0'; - //Création de la socket IPv4/TCP - descSock = socket(AF_INET, SOCK_STREAM, 0); - if (descSock == -1) { - perror("Erreur creation socket"); - exit(4); - } - //Récupération des informations sur le serveur - ecode = getaddrinfo(serverName,serverPort,&hints,&res); - if (ecode){ - fprintf(stderr,"getaddrinfo: %s\n", gai_strerror(ecode)); - exit(3); - } - //Connexion au serveur - ecode = connect(descSock, res->ai_addr, res->ai_addrlen); - if (ecode == -1) { - close(descSock); - freeaddrinfo(res); - perror("Erreur connect"); - exit(5); - } - freeaddrinfo(res); - //Echange de donneés avec le serveur - ecode = read(descSock, buffer, MAXBUFFERLEN); - if (ecode == -1) {perror("Problème de lecture\n"); exit(6);} - buffer[ecode] = '\0'; - printf("MESSAGE RECU DU SERVEUR: \"%s\".\n",buffer); - //Fermeture de la socket - close(descSock); -} - diff --git a/backup/proxy_aure.c b/backup/proxy_aure.c deleted file mode 100644 index 999e131..0000000 --- a/backup/proxy_aure.c +++ /dev/null @@ -1,336 +0,0 @@ -// Bibliothéques -// ============================================== - -#include -#include -#include -#include -#include - - -// Constantes -// ============================================== - -#define SERVADDR "127.0.0.1" // Définition de l'adresse IP d'écoute -#define SERVPORT "4444" // Définition du port d'écoute, si 0 port choisi dynamiquement -#define LISTENLEN 2 // Taille du tampon de demandes de connexions, MAX 2 -#define MAXBUFFERLEN 1024 -#define MAXHOSTLEN 64 -#define MAXPORTLEN 6 - - -// PROCEDURES -// ============================================== - -void decoupeLogin( char *entreeUtilisateur, char *login, char *server ); -void waitingForUser(int *socket,char *buffer,int *n); -void waitingForServer(int *socket,char *buffer,int *n); - - -// MAIN -// ============================================== - -int main( int argc, char *argv[] ) { - - // Variables [ SERVEUR ] >> [ PROXY ] - [ PROXY ] >> [ SERVEUR ] - // ============================================== - - int sockServeur; // Descripteur pour le socket - int fncRet; // Stock le retour des fonctions - struct addrinfo *resBIS; // Résultat de la focntion getaddrinfo - struct addrinfo hintsBIS = {0, AF_INET, SOCK_STREAM, 0, 0, NULL, NULL, NULL}; // Filtra pour le getaddrinfo - char bufferFTP[MAXBUFFERLEN]; - - // Variables [ CLIENT ] >> [ PROXY ] - [ PROXY ] >> [ CLIENT ] - // ============================================== - - char serverAddr[MAXHOSTLEN]; // Adresse du serveur - char serverPort[MAXPORTLEN]; // Port du server - char buffer[MAXBUFFERLEN]; // Tampon pour écrire sur le socket - char bufferRcv[MAXBUFFERLEN]; // Tampon pour écrire sur le socket - int descSockRDV; // Descripteur de socket de rendez-vous - int ecode; // Code retour des fonctions - int descSockCOM; // Descripteur de socket de communication - int n = 0; - int lenRCV = 0; - - - struct addrinfo hints; // Filtre pour la fonction get_addr_info - struct addrinfo *res; // Resultat get_addr_info - struct sockaddr_storage myinfo; // Informations sur la connexion de RDV - struct sockaddr_storage from; // Informations sur le client connecté - - - char entreeUtilisateur[40]; // login@server - char login[20]; // Isoler le login - char serveur[20]; // Isoler le serveur - - - socklen_t len = sizeof( struct sockaddr_storage ); // Variable utilisée pour stocker les longueurs des structures de socket - - pid_t pid; - - // Initialisation de la socket de RDV IPv4/TCP - - descSockRDV = socket( AF_INET, SOCK_STREAM, 0 ); - - // Mise à zéro de la variable hints,entreeUtilisateur,loggin.. - - memset( &hints, 0, sizeof( hints ) ); - memset( entreeUtilisateur, 0, sizeof( entreeUtilisateur ) ); - memset( login, 0, sizeof( login ) ); - memset( serveur, 0, sizeof( serveur ) ); - memset( buffer, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferRcv, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferFTP, 0, sizeof( MAXBUFFERLEN ) ); - - // Initailisation de la variable hints - - hints.ai_flags = AI_PASSIVE; // mode serveur, nous allons utiliser la fonction bind - hints.ai_socktype = SOCK_STREAM; // TCP - hints.ai_family = AF_INET; // IPv4 - - // Récupération des informations du serveur > Machine locale - - ecode = getaddrinfo( SERVADDR, SERVPORT, &hints, &res ); - - // Publication de la socket - - ecode = bind( descSockRDV, res->ai_addr, res->ai_addrlen ); - - ecode = listen( descSockRDV, LISTENLEN ); - - // Attente connexion du client - // Lorsque demande de connexion, creation d'un processus fils et d'un socket de communication avec le client, MAX 2 attentes - - while( 1 == 1 ) { - - descSockCOM = accept( descSockRDV, ( struct sockaddr * ) &from, &len ); - - if( ( pid= fork() ) == 0) { - - close( descSockRDV ); // On ferme le socketRDV on s'occupe seulement de gérer le socket actuel - - strcpy( buffer, "220 Bienvenue sur le proxyFTP de aurehacks\r\n" ); // Echange de données avec le client connecté - - send( descSockCOM, buffer, strlen( buffer ), 0 ); // Ecriture sur le socket - - while(1 == 1) { // Gestion des commandes - - waitingForUser(&descSockCOM,bufferRcv,&n); - - // Gestion de l'authentification - // ============================================== - - if( strstr( bufferRcv,"USER") ) { - - memset( buffer, 0, sizeof( MAXBUFFERLEN ) ); - - decoupeLogin(bufferRcv,login,serveur); // On isole le loggin ainsi que l'IP/URL du serveur - - strcat(buffer,login); // On formate le login - - sockServeur = socket(AF_INET, SOCK_STREAM, 0); - - getaddrinfo(serveur,"21",&hints,&res); - - connect(sockServeur, res->ai_addr, res->ai_addrlen); - - - - // [1] Message de Bienvenue - // ============================================== - - waitingForServer(&sockServeur,bufferFTP,&n); - - // ============================================== - - - - // [2] Envoi de "USER login" - // ============================================== - - send( sockServeur, buffer, strlen( buffer ), 0 ); - send( sockServeur, "\r\n", 2, 0 ); - - waitingForServer(&sockServeur,bufferFTP,&n); - - // ============================================== - - - // [3] Réception du "331 password required" et transmission au client - // ============================================== - - strcpy( bufferFTP, "331 required password\r\n" ); // Cas special SINON ON EN DIRECT send( descSockCOM, strcat(bufferFTP,"\r\n"), strlen( bufferFTP ), 0 ); - - send( descSockCOM, bufferFTP, strlen( bufferFTP ), 0 ); - - waitingForUser(&descSockCOM,bufferRcv,&n); - - // ============================================== - - - - // [4] Réception du "PASS mdp" (mot de passe du client) et transmission au serveur - // ============================================== - - send( sockServeur, bufferRcv, strlen( bufferRcv ), 0 ); - send( sockServeur, "\r\n", 2, 0 ); - - waitingForServer(&sockServeur,bufferFTP,&n); - - // ============================================== - - - - - // [5] Réception du "220 logged in" et transmission au client - // ============================================== - - strcpy( bufferFTP, "220 Logged IN !\r\n" ); // Cas special SINON ON EN DIRECT send( descSockCOM, strcat(bufferFTP,"\r\n"), strlen( bufferFTP ), 0 ); - - send( descSockCOM, bufferFTP, strlen( bufferFTP ), 0 ); - - waitingForUser(&descSockCOM,bufferRcv,&n); - - // ============================================== - - - // On clean les buffers - - memset( buffer, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferRcv, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferFTP, 0, sizeof( MAXBUFFERLEN ) ); - - - } - - - // Gestion du mode actif - // ============================================== - - if( strncmp( bufferRcv,"PORT", 4 ) ) { - - n = 0; - - // On clean les buffers - - memset( buffer, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferRcv, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferFTP, 0, sizeof( MAXBUFFERLEN ) ); - - - } - - // Gestion du mode passif - // ============================================== - - if( strncmp( bufferRcv,"PASSV", 5 ) ) { - - n = 0; - - // On clean les buffers - - memset( buffer, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferRcv, 0, sizeof( MAXBUFFERLEN ) ); - memset( bufferFTP, 0, sizeof( MAXBUFFERLEN ) ); - - - } - - // Gestion de la fermeture de session - // ============================================== - - - if( strncmp( bufferRcv,"QUIT", 4 ) ) { - - break; // On quitte la boucle lorsque que l'on reçoit la commande "QUIT" - } - - } - - freeaddrinfo(res); - - close( descSockCOM ); - close( sockServeur ); - - // Fin du fils - - exit(0); - } - } - - close( descSockRDV ); - - return 0; -} - -// decoupeLogin -// ============================================== - -void decoupeLogin( char *entreeUtilisateur, char *login, char *server ) { - - int i,j = 0; - - for( i=0; i -#include -#include -#include -#include -#define SERVADDR "127.0.0.1" // Définition de l'adresse IP d'écoute -#define SERVPORT "0" // Définition du port d'écoute, si 0 port choisi dynamiquement -#define LISTENLEN 1 // Taille du tampon de demande de connexion -#define MAXBUFFERLEN 1024 -#define MAXHOSTLEN 64 -#define MAXPORTLEN 6 - - -int main(){ - int ecode; // Code retour des fonctions - char serverAddr[MAXHOSTLEN]; // Adresse du serveur - char serverPort[MAXPORTLEN]; // Port du server - int descSockRDV; // Descripteur de socket de rendez-vous - int descSockCOM; // Descripteur de socket de communication - struct addrinfo hints; // Contrôle la fonction getaddrinfo - struct addrinfo *res; // Contient le résultat de la fonction getaddrinfo - struct sockaddr_storage myinfo; // Informations sur la connexion de RDV - struct sockaddr_storage from; // Informations sur le client connecté - socklen_t len; // Variable utilisée pour stocker les - // longueurs des structures de socket - char buffer[MAXBUFFERLEN]; // Tampon de communication entre le client et le serveur - // Initialisation de la socket de RDV IPv4/TCP - descSockRDV = socket(AF_INET, SOCK_STREAM, 0); - if (descSockRDV == -1) { - perror("Erreur création socket RDV\n"); - exit(2); - } - // Publication de la socket au niveau du système - // Assignation d'une adresse IP et un numéro de port - // Mise à zéro de hints - memset(&hints, 0, sizeof(hints)); - // Initailisation de hints - hints.ai_flags = AI_PASSIVE; // mode serveur, nous allons utiliser la fonction bind - hints.ai_socktype = SOCK_STREAM; // TCP - hints.ai_family = AF_INET; // seules les adresses IPv4 seront présentées par - // la fonction getaddrinfo - - // Récupération des informations du serveur - ecode = getaddrinfo(SERVADDR, SERVPORT, &hints, &res); - if (ecode) { - fprintf(stderr,"getaddrinfo: %s\n", gai_strerror(ecode)); - exit(1); - } - // Publication de la socket - ecode = bind(descSockRDV, res->ai_addr, res->ai_addrlen); - if (ecode == -1) { - perror("Erreur liaison de la socket de RDV"); - exit(3); - } - // Nous n'avons plus besoin de cette liste chainée addrinfo - freeaddrinfo(res); - // Récuppération du nom de la machine et du numéro de port pour affichage à l'écran - - - - - - - - - - len=sizeof(struct sockaddr_storage); - ecode=getsockname(descSockRDV, (struct sockaddr *) &myinfo, &len); - if (ecode == -1) - { - perror("SERVEUR: getsockname"); - exit(4); - } - ecode = getnameinfo((struct sockaddr*)&myinfo, sizeof(myinfo), serverAddr,MAXHOSTLEN, - serverPort, MAXPORTLEN, NI_NUMERICHOST | NI_NUMERICSERV); - if (ecode != 0) { - fprintf(stderr, "error in getnameinfo: %s\n", gai_strerror(ecode)); - exit(4); - } - printf("L'adresse d'ecoute est: %s\n", serverAddr); - printf("Le port d'ecoute est: %s\n", serverPort); - - - - - - // Definition de la taille du tampon contenant les demandes de connexion - ecode = listen(descSockRDV, LISTENLEN); - if (ecode == -1) { - perror("Erreur initialisation buffer d'écoute"); - exit(5); - } - while( 1 ){ - - - - len = sizeof(struct sockaddr_storage); - // Attente connexion du client - // Lorsque demande de connexion, creation d'une socket de communication avec le client - descSockCOM = accept(descSockRDV, (struct sockaddr *) &from, &len); - if (descSockCOM == -1){ - perror("Erreur accept\n"); - exit(6); - } - // Echange de données avec le client connecté - strcpy(buffer, "BLABLABLA\n"); - - write(descSockCOM, buffer, strlen(buffer)); - //Fermeture de la connexion - close(descSockCOM); - - } - close(descSockRDV); -} - - - diff --git a/test b/test index 1cf2743..f5cb986 100755 Binary files a/test and b/test differ diff --git a/thread/main.c b/thread/main.c deleted file mode 100644 index 989d7b7..0000000 --- a/thread/main.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include - -static void* action1(); -static void* action2(); - - -pthread_t thread1, thread2; -static int bool1 = 1; -static int bool2 = 1; - - - -int main(int argc, char* argv []){ - - pthread_create(&thread1, NULL, &action1, (void*) NULL); - pthread_create(&thread2, NULL, &action2, (void*) NULL); - - printf("THREADS CREATED\n===============\n"); - - sleep(3); - bool1 = 0; - sleep(3); - bool2 = 0; - - - - - return EXIT_SUCCESS; -} - - - - - - -static void* action1(){ - while( bool1 ){ - printf("[THREAD] 1\n"); - sleep(1); - } - - pthread_exit((void*) thread1); -} - -static void* action2(){ - while( bool2 ){ - printf("[THREAD] 2\n"); - sleep(1); - } - - pthread_exit((void*) thread2); -} \ No newline at end of file diff --git a/thread/test b/thread/test deleted file mode 100755 index c7942b7..0000000 Binary files a/thread/test and /dev/null differ