From e25c64e7853c885f2159688f93cab50eb3df3fd4 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 15 Dec 2015 19:44:19 +0100 Subject: [PATCH] =?UTF-8?q?Correction=20LIST=20ok,=20mais=20tjs=20un=20d?= =?UTF-8?q?=C3=A9calage=20de=20BUFFER?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dep/server.c | 33 +++++++++++++++++---------------- dep/server.h | 2 +- dep/utility.c | 26 ++++++++++---------------- proxy_ftp.c | 4 ++-- test | Bin 18761 -> 18761 bytes 5 files changed, 30 insertions(+), 35 deletions(-) diff --git a/dep/server.c b/dep/server.c index 15214bf..3119c0c 100644 --- a/dep/server.c +++ b/dep/server.c @@ -182,8 +182,8 @@ void MANAGE_REQUEST(char* pRequest, int* DUSER_SOCKET, int* DFTP_SOCKET){ -void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ - if( DEBUGMOD ) printf("====== MANAGE_RESPONSE(%s, %d, %d) ======\n\n", *pAnswer, *DUSER_SOCKET, *DFTP_SOCKET); +void MANAGE_RESPONSE(int* USER_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) @@ -197,7 +197,7 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ /* [1] On découpe la requête en 2 parties ================================================*/ - splitFtpResponse(*pAnswer, ftpCode, ftpText); + splitFtpResponse(pAnswer, ftpCode, ftpText); /* [2] Selection en fonction de @ftpCode ================================================*/ @@ -213,39 +213,38 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ else if( strcmp(ftpCode, "331") == 0 ) strcpy(response, USER_MSG); - /* (3) Bon mdp -> connection + /* (4) Bon mdp -> connection --------------------------------------------*/ else if( strcmp(ftpCode, "230") == 0 ) strcpy(response, PASS_BON_MSG); - /* (4) Mauvais mdp -> connection + /* (5) Mauvais mdp -> connection --------------------------------------------*/ else if( strcmp(ftpCode, "530") == 0 ) strcpy(response, PASS_BAD_MSG); - /* (5) Info SYST + /* (6) Info SYST --------------------------------------------*/ // else if( strcmp(ftpCode, "215") == 0 ) // strcpy(response, "bla\n"); - /* (6) LOGOUT => EXIT + /* (7) LOGOUT => EXIT --------------------------------------------*/ else if( strcmp(ftpCode, "221") == 0 ) strcpy(response, EXIT_MSG); - /* (7) Mode passif => On lance les SOCKETS du BUS DE DONNEES + /* (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 - strcpy(response, "200 Connection établie.\n"); int a1, a2, a3, a4 = 0; int p1, p2 = 0; char serverHost[maxHostLen]; char serverPort[maxPortLen]; - sscanf(*pAnswer, "227 Entering Passive Mode (%d,%d,%d,%d,%d,%d)", &a1, &a2, &a3, &a4, &p1, &p2); + sscanf(pAnswer, "227 Entering Passive Mode (%d,%d,%d,%d,%d,%d)", &a1, &a2, &a3, &a4, &p1, &p2); // on récupère l'adresse en sprintf(serverHost, "%d.%d.%d.%d", a1, a2, a3, a4); // on récupère le port en @@ -255,10 +254,12 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ printf("CONNECTING TO FTP %s:%s\n", serverHost, serverPort); CONNECT_CLIENT(serverHost, serverPort, DFTP_SOCKET); printf("CONNECTED TO FTP %s:%s\n", serverHost, serverPort); + + strcpy(response, "200 PORT command successful\n"); } - /* (8) On lit la SOCKET FTP du BUS DE DONNEES + /* (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 @@ -285,12 +286,12 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ if( DEBUGMOD ) printf("BUS_USER fermé\n"); // strcpy(response, "226 Tout est ok\n"); - strcpy(response, "150 Serveur en attente!\n"); - + swrite(USER_SOCKET, "150 Serveur en attente!\n"); + strcpy(response, "226 Fin de la transaction\n"); } - /* (9) Fin de transfert de données + /* (10) Fin de transfert de données --------------------------------------------*/ else if( strcmp(ftpCode, "226") == 0 ){ // on ferme les SOCKETS du BUS DE DONNEES strcpy(response, "226 Fin de la transaction!\n"); @@ -301,12 +302,12 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){ /* (n) Commande inconnue --------------------------------------------*/ else - strcpy(response, *pAnswer); + strcpy(response, pAnswer); /* [3] Retour de la réponse ================================================*/ - strcpy(*pAnswer, response); + strcpy(pAnswer, response); } diff --git a/dep/server.h b/dep/server.h index b729c1f..0a9a965 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(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET); +void MANAGE_RESPONSE(int* USER_SOCKET, char* pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET); diff --git a/dep/utility.c b/dep/utility.c index 62b9819..9ff6118 100644 --- a/dep/utility.c +++ b/dep/utility.c @@ -76,15 +76,6 @@ void formatBuffer(char* pBuffer){ while( pBuffer[strlen(pBuffer)-1] == '\r' || pBuffer[strlen(pBuffer)-1] == '\n' ) pBuffer[strlen(pBuffer)-1] = '\0'; - // for( i = strlen(pBuffer)-1 ; i >= 0 || pBuffer[i] != '\0' ; i-- ) - // if( pBuffer[i] == '\n' || pBuffer[i] == '\r' ) // si c'est un retour chariot - // pBuffer[i] = '\0'; // on efface - // else - // break; - - // on ferme ensuite la chaîne - // pBuffer[i] = '\0'; - /* [2] On ajoute "\r\n" à la fin ============================================================*/ strcpy(pBuffer, strcat(pBuffer, "\r\n")); @@ -97,13 +88,11 @@ void formatBuffer(char* pBuffer){ void read_stdin(char* pBuffer, unsigned long pLength){ fgets(pBuffer, pLength, stdin); // on lit l'entrée standard - int i; // on supprimes les retours à la ligne de la fin - for( i = strlen(pBuffer)-1 ; i >= 0 || pBuffer[i] != '\0' ; i-- ) - if( pBuffer[i] == '\n' || pBuffer[i] == '\r' ) // si c'est un retour chariot - pBuffer[i] = '\0'; // on efface - else - break; + int i = strlen(pBuffer); + + while( pBuffer[strlen(pBuffer)-1] == '\r' || pBuffer[strlen(pBuffer)-1] == '\n' ) + pBuffer[strlen(pBuffer)-1] = '\0'; strcpy(pBuffer, strcat(pBuffer, "\r\n")); } @@ -112,6 +101,11 @@ void read_stdin(char* pBuffer, unsigned long pLength){ 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); + return write(*pSocket, pBuffer, strlen(pBuffer)); } @@ -150,5 +144,5 @@ void xPrint(char* pPattern, char* pBuffer){ else break; - printf(pPattern, tmpBuffer); + printf(pPattern, pBuffer); } \ No newline at end of file diff --git a/proxy_ftp.c b/proxy_ftp.c index 046a1b0..2ab9697 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(&ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); + MANAGE_RESPONSE(&USER_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(&ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); + MANAGE_RESPONSE(&USER_SOCKET, ftp_response, &DUSER_SOCKET, &DFTP_SOCKET); /* [7] Redirection vers le CLIENT diff --git a/test b/test index c4adc8744851418791327fb0e24810081d41c49a..7692ba60d73ddc4f0006890ad9e27b46dae88ae9 100755 GIT binary patch delta 3175 zcmai0dr(x@8NYXT6hvIM6H2y8mh$t(%n zl-tc3!tma)o`FM;U7~w- zVw_+2?@9^nM#{wtw3fHpFU9fXv~Vm2H0 zM4B^G?n{!J9ud7XWM3C*MBzL!ddPJtoR6$vHSk^J6YO=^5|zk)0F6-=%;YywCS5Js zJ#4WCK8e~FJ%tq%1s`P;CTKKXUl%;1%ZQi?V;E7mgSt^h!!W+Nui$lEs_yQW|IHN( zf6-O3(~uhd4ErX$9BpRX;B0gvdl24_F2g>OWzsc_;sq+$9C8uJx zop%d9{7tIhMs~Mw19u||EGlZ|sl^nvAS3oWiYVML%+eK>m(U?gkyh4Ck8THh`$Bz8TN+9%R9N)bx>+d3;*77 zl?M(Q6S6GJRkhS(Uk{QY=Q$$8@zD)X4A&i;1iQ`JknvPBA^CzkBC%KKg7NqSC3X@f;}gS=$u{!TybJ1thi30H*p!gqS}}WLcSzs+CXkJk5Iat0?-~-x zEXQY2LAxM#&NIyWU>|1bOLMf+M}@9)iUUQP~YcWtZO&Wl)bZeR0(1GPKrt$ILv9dDEg`O(cI!UPMyT_>;8peKcyfKw}i?gV2dL zN)!fZ&;huc>=1V0w9nlm_(h5@CauIj6W=Lv7iBItK04$gjNGP5!my+~BP;t+ITDAa z2!*Ep)!PAUU<8CE(>c*r$L`{8`pElHcmDXoTO#Q+S_8 zcA;*R0@vll?GzXveYQ8LF3M_;YgCcO2C^yoGWG>%c2(0vpfW)|6ELQ<)by10CJuy z0Ruc(Yjh3bAC8-585pO9TSP-z5YXJFnyt$;H&8?UcCWgyn!|UJ-9CIxhzq zH~Fy#O1|?>i0}P@bL*Z}>2nKmxGG2M^A2Y#=V;<;+uI#Y?T$nUOWW;YW0hqWkvtl| z+@vIhU~?uuk)#{Azx1gj<=}quACgp!^4gRnb)a020iH&A3*{A*XR$~=l%dmTkI%Vw zlxCEBe3%HzVw~~@ln%Vw-6(frH%_BG_PJCjUBMrx@oM={-of_}4gMLt@C`af`BRj3 zl<%QzLCJh8N&P5WAU-`qac>f~q-Wtv%?s(NtN_Px?SQMeZh|jxJp#rIQ@IXf#`iuf zT)5^H#fCLOim}zfAq*3Tss;QGBVMxt-?fOxVNUZ?a3~{z-3V`Fm{>Io;d%u=!u3O# z$MqB#A2qQPQ1YlLZ4l>iBYE)%xZ*pN%Az1jM?4Uh>oCjf@Dkcs;W)0@Fou@faqg2z ze#e$w!q8w+jlj z8vj<4Otp*)atpIVm)@%P7Z!!u(=8OV51c7 zS+;^rhU1T=VlY=9JEdTfp>=%?R_4#^_3YO$v;MUhl~$&n^_v?o{s<-twtF_2lz7<{!bVVcr0(Rc{Ogk8ct5v)zy01*=uh_P{RdbL=>bS)17$$SvO!S{!4c U=de%ZJ44Gf@~&oJzT6)4AIs!z761SM delta 3254 zcmZ`*4Nz3q6@G64T?ju5?835w`E6PH&Y?)~ZX=hSX+X_z2o$L9WQesjzF zzg%a^IB@59(h2)y&ER3#-{kVS6a&M%N4p1q{J@6btvw#rYFeBrv6&Y69h1DxKN=3OAi`@SonVM6fii_AO^?8Hyw&Y_?ORdg ztsmob!N%~m$5A<9b$>*Nd+Okj;$e0hOem7rHkegBrP#lK-gaT`Itg-n-i0mEF9g{g zbKr`OQ2>ey-6t2AIGXOvo18^+xmkqC3j9dWn+O%Od4QJAD`+#Y~tRaVT+Fov-T zv#4`13S6Mox8T>Rbk*IP_hV(km#SL!HWbD^%f1T-c8nfiTjRohGD*(TyRvN8o^3%?j|2TC3_O71)KhzQ82% zRBT7Ie*hQN+an{SnbZ&+P??YsnX*##CUhsP&B+l46%3}ozpBO3K%FH1Xf_!IQPmbE*GBX75l z5QTMuP#?f0MFgT5{((fz^D7J!MmjeWWa|0xM{RIdlds}Ja6Np^o71G)ABFNYFX;~j zFIy^nmf>p@#<&8e8ZNKNQx&gpenl_Am?0~%yvw=MtP3m1&kf_PJU3?0Gv0}yW#D~2 z--WLTaFpOC+vDRnv|&SDb{G!4Rn0rIxpH&+ZnFhps^_X}Opjw+HSer6)tI;%Qw7@U_@OG31cSEijc!9z7~`G6 zW~Iy8g_|Jwid6ZE+{rE%>D-W;%WZCLL3(n2*u2Bi+}gsO&m1 z7`Jd7caQY2TR7=^!k5L@4OMn(=Iv*Xkv+EC-~L2|_mVGlsA}c){_kvCv8_`EHOA5seFluAFZX$r^1bGD|cN?A< z64}38rAiXAtQ;mvU%NT;3UawxbNh?ZPIR_&<`%A=?u5%?F}GN-k9q4J#h5|Ocz-7K zDP zB#Xb{f~hZY@N2%lOnjy#+Uas3yjMezd8FMlbDxj2_!62&@{w^4SZY{Z<$P(~pAKcM^!r3Yp5zc3z8H9JZ@ z$~_+BhH?wGaudo|@s;gG*@jDe45jnhLkNHmqjLy=Qu&Q2D)8t(iZU1FZ%|gFoJZM) zQvDxMJdCmzOqp3S^)$3+=CDO@G&7w&0pmCxgBv)uKtfhJ`ym*!wDlX2^ElSR7$X%w zm2Hk#B|9I!TFx+us9MDT6|`3c*ejOoiC9w%*7`z#y>ZE2g7&R2nx$p+Fpc9hu1O5%Lx;lMMD{zYcxb>p+oXkj7X1V=Zfv)f^O<2$ms6lgEq#ya8C(s=d?cuQZ`+)_xXW_;mltSg3z zM7D$dn;O}K3o6N8iF)$egzFN+L@@gy+8CeUF9t6e^!KFCIt4~!JYFiFG45o?Vbs{l f>L9P|d!ZQ`1NEzgH_Dz4E%oKD8vM4bdewgc9zTj8