From 0c09165d57ce2e6ecb2df91e9ec575f9f10fe59e Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 15 Dec 2015 22:18:10 +0100 Subject: [PATCH] =?UTF-8?q?Toutes=20les=20commandes=20FTP=20fonctionnent?= =?UTF-8?q?=20sauf=20un=20pb=20de=20blocage=20niveau=20proxy=20juste=20apr?= =?UTF-8?q?=C3=A8s=20d=C3=A9bug=20de=20"BUS=5FFTP->BUS=5FCLIENT=20.."=20de?= =?UTF-8?q?=20temps=20en=20temps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dep/server.c | 48 +++++++++++++++++++++++++++++------------------- dep/server.h | 2 +- dep/utility.c | 5 ++--- proxy_ftp.c | 4 ++-- test | Bin 18761 -> 18811 bytes 5 files changed, 34 insertions(+), 25 deletions(-) diff --git a/dep/server.c b/dep/server.c index 3119c0c..ed12234 100644 --- a/dep/server.c +++ b/dep/server.c @@ -182,63 +182,68 @@ void MANAGE_REQUEST(char* pRequest, int* DUSER_SOCKET, int* DFTP_SOCKET){ -void MANAGE_RESPONSE(int* USER_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ +void MANAGE_RESPONSE(int* USER_SOCKET, int* FTP_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ if( DEBUGMOD ) printf("====== MANAGE_RESPONSE(%d, %s, %d, %d) ======\n\n", *USER_SOCKET, pAnswer, *DUSER_SOCKET, *DFTP_SOCKET); - char response[maxBuffLen]; // contiendra la réponse - char ftpCode[4]; // contiendra le code FTP (1ère partie) - char ftpText[maxBuffLen]; // contiendra le texte associé à la commande (2ème partie) + char response[maxBuffLen]; // contiendra la réponse + char ftpCodeStr[4]; // contiendra le code FTP (1ère partie) + char ftpText[maxBuffLen]; // contiendra le texte associé à la commande (2ème partie) + int ftpCode; // contiendra le code FTP en numérique // on vide les buffers - memset(&ftpCode, '\0', sizeof(ftpCode)); + memset(&ftpCodeStr, '\0', sizeof(ftpCode)); memset(&ftpText, '\0', sizeof(ftpText)); memset(&response, '\0', sizeof(response)); /* [1] On découpe la requête en 2 parties ================================================*/ - splitFtpResponse(pAnswer, ftpCode, ftpText); + splitFtpResponse(pAnswer, ftpCodeStr, ftpText); + + // on met le code FTP en + ftpCode = atoi( ftpCodeStr ); + /* [2] Selection en fonction de @ftpCode ================================================*/ /* (2) Demande d'username --------------------------------------------*/ - if( strcmp(ftpCode, "220") == 0 ) + if( ftpCode == 220 ) strcpy(response, WLCM_MSG); /* (3) username OK -> demande MDP --------------------------------------------*/ - else if( strcmp(ftpCode, "331") == 0 ) + else if( ftpCode == 331 ) strcpy(response, USER_MSG); /* (4) Bon mdp -> connection --------------------------------------------*/ - else if( strcmp(ftpCode, "230") == 0 ) + else if( ftpCode == 230 ) strcpy(response, PASS_BON_MSG); /* (5) Mauvais mdp -> connection --------------------------------------------*/ - else if( strcmp(ftpCode, "530") == 0 ) + else if( ftpCode == 530 ) strcpy(response, PASS_BAD_MSG); /* (6) Info SYST --------------------------------------------*/ - // else if( strcmp(ftpCode, "215") == 0 ) + // else if( ftpCode == 215 ) // strcpy(response, "bla\n"); /* (7) LOGOUT => EXIT --------------------------------------------*/ - else if( strcmp(ftpCode, "221") == 0 ) + else if( ftpCode == 221 ) strcpy(response, EXIT_MSG); /* (8) Mode passif => On lance les SOCKETS du BUS DE DONNEES --------------------------------------------*/ - else if( strcmp(ftpCode, "227") == 0 ){ // on lance la SOCKET FTP du BUS DE DONNEES + else if( ftpCode == 227 ){ // on lance la SOCKET FTP du BUS DE DONNEES int a1, a2, a3, a4 = 0; int p1, p2 = 0; @@ -261,12 +266,12 @@ void MANAGE_RESPONSE(int* USER_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DF /* (9) On lit la SOCKET FTP du BUS DE DONNEES --------------------------------------------*/ - else if( strcmp(ftpCode, "150") == 0 ){ // on lit la SOCKET FTP du BUS DE DONNEES + else if( ftpCode == 150 ){ // on lit la SOCKET FTP du BUS DE DONNEES char BUFFER[maxBuffLen]; // on lit la SOCKET FTP - int nbRead = sread(DFTP_SOCKET, BUFFER); + int nbRead = WAIT_SOCKET_UPDATE(DFTP_SOCKET, BUFFER); if( DEBUGMOD && nbRead == -1 ) printf("ERROR\n"); else if( DEBUGMOD ) xPrint("[BUS_IN]: %s\n", BUFFER); @@ -285,15 +290,20 @@ void MANAGE_RESPONSE(int* USER_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DF close(*DUSER_SOCKET); if( DEBUGMOD ) printf("BUS_USER fermé\n"); - // strcpy(response, "226 Tout est ok\n"); - swrite(USER_SOCKET, "150 Serveur en attente!\n"); - strcpy(response, "226 Fin de la transaction\n"); + // on vide le SOCKET FTP du BUS DE DONNEES + WAIT_SOCKET_UPDATE(FTP_SOCKET, BUFFER); + WAIT_SOCKET_UPDATE(DFTP_SOCKET, BUFFER); + + swrite(USER_SOCKET, "150 Attente de la réception!\n"); + + + strcpy(response, "226 Données reçues!\n"); } /* (10) Fin de transfert de données --------------------------------------------*/ - else if( strcmp(ftpCode, "226") == 0 ){ // on ferme les SOCKETS du BUS DE DONNEES + else if( ftpCode == 226 ){ // on ferme les SOCKETS du BUS DE DONNEES strcpy(response, "226 Fin de la transaction!\n"); close(*DUSER_SOCKET); close(*DFTP_SOCKET); diff --git a/dep/server.h b/dep/server.h index 0a9a965..e3ee8dd 100644 --- a/dep/server.h +++ b/dep/server.h @@ -43,7 +43,7 @@ void MANAGE_REQUEST(char* pRequest, int* DUSER_SOCKET, int* DFTP_SOCKET); * [4] SI 226, on ferme les SOCKETS du BUS DE DONNEES * */ -void MANAGE_RESPONSE(int* USER_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET); +void MANAGE_RESPONSE(int* USER_SOCKET, int* FTP_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET); diff --git a/dep/utility.c b/dep/utility.c index 9ff6118..951924d 100644 --- a/dep/utility.c +++ b/dep/utility.c @@ -102,10 +102,9 @@ 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; - // on formatte @pBuffer - // formatBuffer(pBuffer); + // if( strlen(pBuffer) == 0 ) return 0; + return write(*pSocket, pBuffer, strlen(pBuffer)); } diff --git a/proxy_ftp.c b/proxy_ftp.c index 2ab9697..e42a183 100644 --- a/proxy_ftp.c +++ b/proxy_ftp.c @@ -80,7 +80,7 @@ static void* testServer(char* localPort){ ============================================================================*/ strcpy(BUFFER, ""); CLIENT_SEND(&FTP_SOCKET, BUFFER, &ftp_response); - MANAGE_RESPONSE(&USER_SOCKET, ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); + MANAGE_RESPONSE(&USER_SOCKET, &FTP_SOCKET, ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); swrite(&USER_SOCKET, ftp_response); xPrint("P->F: %s\n\n", BUFFER); @@ -112,7 +112,7 @@ static void* testServer(char* localPort){ /* [6] Traitement de la réponse (FTP) ============================================================================*/ - MANAGE_RESPONSE(&USER_SOCKET, ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); + MANAGE_RESPONSE(&USER_SOCKET, &FTP_SOCKET, ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); /* [7] Redirection vers le CLIENT diff --git a/test b/test index 7692ba60d73ddc4f0006890ad9e27b46dae88ae9..97383f1007962fc337b34bd2d5e7a115378cff13 100755 GIT binary patch delta 5378 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 delta 5262 zcmai22~<;O7Jh%i76g(Am<2S61qBt7fUGVA1%0$S;?~-Z3utlb>4p{BV{Ho#rkY7( zqqlT)ragm><5E2{R7(f6B504;o>sA^W4wr}qJ--`v?IrE>B|Gw{T z|GoF$-pieh?4ym$Z`79!atYMrUJyz*r0&qXmd1I)Ya70>Yc8r}paVTytM{kM$e$`( z_+c0O(scOQjRz~>o%{_8bDCHD_QHaXGj@q0cU6q6JS~B-(YCi^YBJk zHhdD6XuE|2= z^oA}NVHHGoTUBV_63WE74m3_ zQ?K!m)%KIo?Y+j&MT_XS_p70^|HX+$1h#l?zBqALKn@b4%6BTbQ z)lRS!2|{x?u8X;18Z8g8t~W;XoPR;J;7Bt%n8L`IG3z{v@hXxtuuwacwZlu=`O~UwR^oSg+DYm;PL`cyspuBr^8mM*|I@9B+^X*M z!OPkiuu*5u%||Ca+V_PuZPnqtV3$&eLqk;e;Sip~2z$La{&Zv>_jGWjKnZ-N%VRSj zNz(F-o|~NBDcmLFje;+VtCzLjLc?O5u3~G zuqQSpZNztyFy!9#HmvCrZ6aW2C{@hgpSclAJ z7ocj$W9%(BF(iepfZicCwj9icT-FS;4NkTl+=d6)Zs;^v(!J=z>pqRkzLgFqOuO#} zg>eo!bqA@Js#TXJ9ioFL&8p{%Zw%Fo!5COX?pfkWUZ(sP(@#dPmD(P zJe)UL;_E0*pS$4<4q~J|hw`mpGL^*)m61I8kHcD1YRuUFEFZL*hNZjuv[^?r1Q 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