From 0c822226fc93b6d2ff63110aaca37f141b9bf8b0 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 17 Dec 2015 00:55:33 +0100 Subject: [PATCH] =?UTF-8?q?Reste=20=C3=A0=20faire:=20[1-=20Gestion=20du=20?= =?UTF-8?q?roulement=20de=20BUFFER],=20[2-=20Gestion=20de=20l'erreur=20de?= =?UTF-8?q?=20connexion=20=C3=A0=20un=20serveur=20FTP=20incorrect],=20[3-?= =?UTF-8?q?=20Gestion=20du=20timeout=20pour=20ne=20pas=20bloquer=20le=20BU?= =?UTF-8?q?S=20de=20commandes=20=C3=A0=20cause=20du=20BUS=20de=20donn?= =?UTF-8?q?=C3=A9es],=20[4-=20Gestion=20propre=20des=20THREADS=20(lequel?= =?UTF-8?q?=20est=20actif,=20etc)]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dep/server.c | 13 +++++++------ dep/utility.c | 14 -------------- dep/utility.h | 3 --- proxy_ftp.c | 38 ++++++++------------------------------ proxy_ftp.h | 1 - test | Bin 23034 -> 22870 bytes 6 files changed, 15 insertions(+), 54 deletions(-) diff --git a/dep/server.c b/dep/server.c index bc2669f..3ae9979 100644 --- a/dep/server.c +++ b/dep/server.c @@ -329,16 +329,16 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE /* 2. On lit la SOCKET FTP (BUS DE DONNEES) */ - int nbRead = WAIT_SOCKET_UPDATE(DFTP_SOCKET, BUFFER); + tmp[0] = WAIT_SOCKET_UPDATE(DFTP_SOCKET, BUFFER); - if( DEBUGMOD&DAT && nbRead == -1 ) printf("ERROR\n"); + if( DEBUGMOD&DAT && tmp[0] == -1 ) printf("ERROR\n"); else if( DEBUGMOD&DAT ) xPrint("[BUS_IN]: %s\n", BUFFER); /* 3. On redirige sur la SOCKET utilisateur (BUS DE DONNEES) */ - int nbSend = swrite(DUSER_SOCKET, BUFFER); + tmp[1] = swrite(DUSER_SOCKET, BUFFER); - if( DEBUGMOD&DAT && nbSend == -1 ) printf("ERROR\n"); + if( DEBUGMOD&DAT && tmp[1] == -1 ) printf("ERROR\n"); else if( DEBUGMOD&DAT ) xPrint("[BUS_OUT]: %s\n", BUFFER); if( DEBUGMOD&DAT ) xPrint("BUS_FTP->BUS_CLIENT: %s\n", BUFFER); @@ -357,8 +357,9 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE // printf("") /* 5. On vide le BUS DE COMMANDE du serveur FTP */ - sread(FTP_SOCKET, BUFFER); - + printf("XX: [%d]\n", tmp[2]); + tmp[2] = sread(FTP_SOCKET, BUFFER); + printf("YY: [%d]\n", tmp[2]); /* 6. On transmet le message de fin de la transaction (226) */ strcpy(response, STOP_DAT_MSG); diff --git a/dep/utility.c b/dep/utility.c index 9e8ddfe..dbbea23 100644 --- a/dep/utility.c +++ b/dep/utility.c @@ -92,20 +92,6 @@ void formatBuffer(char* pBuffer){ } - -void read_stdin(char* pBuffer, unsigned long pLength){ - fgets(pBuffer, pLength, stdin); // on lit l'entrée standard - - // on supprimes les retours à la ligne de la fin - int i = strlen(pBuffer); - - while( pBuffer[strlen(pBuffer)-1] == '\r' || pBuffer[strlen(pBuffer)-1] == '\n' ) - pBuffer[strlen(pBuffer)-1] = '\0'; - - strcat(pBuffer, "\r\n\0"); -} - - int swrite(int* pSocket, char* pBuffer){ if( *pSocket == -1 ) return -1; // si SOCKET fermée, on retourne une erreur if( strlen(pBuffer) == 0 ) return 0; // si on a rien à écrire, on n'écrit rien :p diff --git a/dep/utility.h b/dep/utility.h index f6962b5..bae3723 100644 --- a/dep/utility.h +++ b/dep/utility.h @@ -41,9 +41,6 @@ int indexOf(char* haystack, char needle); void formatBuffer(char *pBuffer); -void read_stdin(char* pBuffer, unsigned long pLength); - - /* read/write socket */ int swrite(int* pSocket, char* pBuffer); diff --git a/proxy_ftp.c b/proxy_ftp.c index 196147f..66be055 100644 --- a/proxy_ftp.c +++ b/proxy_ftp.c @@ -2,28 +2,6 @@ -/*****************/ -/* CORPS DU PROG */ -/*****************/ -int main(int argc, char* argv[]){ - if( argc > 1 ) - testServer(argv[1]); - else - testServer(""); - - return EXIT_SUCCESS; -} - - - - - - - - - - - /* * @@ -121,10 +99,10 @@ void* manageConnection(void* THREADABLE_SOCKET){ int DUSER_SOCKET = -1; // contiendra le BUS DE DONNES utilisateur int DFTP_SOCKET = -1; // contiendra le BUS DE DONNEES FTP - char BUFFER[maxBuffLen]; // contiendra le BUFFER + char* BUFFER; // contiendra le BUFFER char* ftp_response; // contiendra le BUFFER de réponse du serveur FTP (commandes) int nbReceived, nbSend; // contiendra les nb reçu && envoyé - + BUFFER = malloc( maxBuffLen ); /* [2] Envoi de la séquence de bienvenue ============================================================================*/ swrite(&USER_SOCKET, WLCM_MSG); @@ -149,25 +127,25 @@ void* manageConnection(void* THREADABLE_SOCKET){ /* [5] Redirection vers le serveur FTP ============================================================================*/ if( DEBUGMOD&CMD ) xPrint("P->F: %s\n\n", BUFFER); - CLIENT_SEND(&FTP_SOCKET, BUFFER, &ftp_response); - if( DEBUGMOD&CMD ) xPrint("F->P: %s\n", ftp_response); + CLIENT_SEND(&FTP_SOCKET, BUFFER, &BUFFER); + if( DEBUGMOD&CMD ) xPrint("F->P: %s\n", BUFFER); /* [6] Traitement de la réponse (FTP) ============================================================================*/ - MANAGE_RESPONSE(ftp_response, &USER_SOCKET, &FTP_SOCKET, &DUSER_SOCKET, &DFTP_SOCKET); + MANAGE_RESPONSE(BUFFER, &USER_SOCKET, &FTP_SOCKET, &DUSER_SOCKET, &DFTP_SOCKET); /* [7] Redirection vers le CLIENT ============================================================================*/ - if( swrite(&USER_SOCKET, ftp_response) == -1 ) break; - if( DEBUGMOD&CMD ) xPrint("P->C: %s\n", ftp_response); + if( swrite(&USER_SOCKET, BUFFER) == -1 ) break; + if( DEBUGMOD&CMD ) xPrint("P->C: %s\n", BUFFER); /* [8] On vide les buffers ============================================================================*/ memset(BUFFER, '\0', maxBuffLen); // on vide le buffer - memset(ftp_response, '\0', maxBuffLen); + memset(BUFFER, '\0', maxBuffLen); } /* [9] Fermeture des connections (SOCKETS) diff --git a/proxy_ftp.h b/proxy_ftp.h index 0bef8f9..6366e4b 100644 --- a/proxy_ftp.h +++ b/proxy_ftp.h @@ -108,7 +108,6 @@ /* headers */ -void testServer(); void* manageConnection(void* THREADABLE_SOCKET); // VARIABLES diff --git a/test b/test index 8032c1e48811722a57b16ae30261ce0024b8dc7d..1cf2743e79c04fde083a1d9eb77c9da669504b6a 100755 GIT binary patch delta 5801 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