From 801821f3e4f15891b4c29b58c4b9d6623e06d359 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 17 Dec 2015 00:30:30 +0100 Subject: [PATCH] Commentaires --- dep/server.c | 60 +++++++++++++++++++++++---------------------------- dep/server.h | 35 ++++++++++++++++++++---------- test | Bin 23034 -> 23034 bytes 3 files changed, 51 insertions(+), 44 deletions(-) diff --git a/dep/server.c b/dep/server.c index 7ccc6eb..bc2669f 100644 --- a/dep/server.c +++ b/dep/server.c @@ -249,77 +249,78 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE // on met le code FTP en ftpCode = atoi( ftpCodeStr ); + // mise à disposition de variables temporaires + int tmp[6] = {0}; + char serverHost[maxHostLen]; + char serverPort[maxPortLen]; + char BUFFER[maxBuffLen] = {0}; /* [2] Selection en fonction de @ftpCode ================================================*/ switch(ftpCode){ /* (1) Demande d'username --------------------------------------------*/ - if( ftpCode == 220 ) + case 220: strcpy(response, WLCM_MSG); - + break; /* (2) username OK -> demande MDP --------------------------------------------*/ case 331: strcpy(response, USER_MSG); - break; + break; /* (3) Bon mdp -> connection --------------------------------------------*/ case 230: strcpy(response, PASS_BON_MSG); - break; + break; /* (4) Mauvais mdp -> message erreur --------------------------------------------*/ case 530: strcpy(response, PASS_BAD_MSG); - break; + break; /* (5) Info SYST --------------------------------------------*/ // case 215: // strcpy(response, "bla\n"); - // break; + // break; /* (6) LOGOUT => EXIT --------------------------------------------*/ case 221: strcpy(response, EXIT_MSG); - break; + break; /* (7) Mode passif => On lance les SOCKETS du BUS DE DONNEES --------------------------------------------*/ case 227: // on lance la SOCKET FTP du BUS DE DONNEES - 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); + /* 1. On récupère l'ip et le port de la réponse */ + sscanf(pAnswer, "227 Entering Passive Mode (%d,%d,%d,%d,%d,%d)", &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5]); // on récupère l'adresse en - sprintf(serverHost, "%d.%d.%d.%d", a1, a2, a3, a4); + sprintf(serverHost, "%d.%d.%d.%d", tmp[0], tmp[1], tmp[2], tmp[3]); // on récupère le port en - sprintf(serverPort, "%d", p1*256+p2); + sprintf(serverPort, "%d", tmp[4]*256+tmp[5]); - // on se connecte au serveur FTP + /* 2. Connexion au serveur FTP */ if( DEBUGMOD&SCK ) printf("CONNECTING TO FTP %s:%s\n", serverHost, serverPort); CONNECT_CLIENT(serverHost, serverPort, DFTP_SOCKET); if( DEBUGMOD&SCK ) printf("CONNECTED TO FTP %s:%s\n", serverHost, serverPort); + /* 3. Envoi du message de code 200 */ strcpy(response, LIST_DAT_MSG); - break; + break; /* (8) On lit la SOCKET FTP du BUS DE DONNEES --------------------------------------------*/ case 150: - char BUFFER[maxBuffLen] = {0}; - /* 1. Envoi au client de l'écoute de la réponse (associée) du BUS DE DONNEES */ // sread(FTP_SOCKET, BUFFER); // if( DEBUGMOD&CMD ) xPrint("F->P: %s\n", BUFFER); @@ -327,7 +328,7 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE if( DEBUGMOD&CMD ) xPrint("P->C: %s\n", READ_CON_MSG); - /* 2. On lit la SOCKET FTP (BUS DE DONNEES)*/ + /* 2. On lit la SOCKET FTP (BUS DE DONNEES) */ int nbRead = WAIT_SOCKET_UPDATE(DFTP_SOCKET, BUFFER); if( DEBUGMOD&DAT && nbRead == -1 ) printf("ERROR\n"); @@ -355,22 +356,22 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE // WAIT_SOCKET_UPDATE(DFTP_SOCKET, BUFFER); // données // printf("") + /* 5. On vide le BUS DE COMMANDE du serveur FTP */ sread(FTP_SOCKET, BUFFER); - // fin de la transaction + /* 6. On transmet le message de fin de la transaction (226) */ strcpy(response, STOP_DAT_MSG); - break; + break; /* (9) Fin de transfert de données (fermeture SOCKETS du BUS DE DONNEES) --------------------------------------------*/ case 226: - // strcpy(response, "226 Fin de la transaction!\r\n"); - strcpy(response, "\r\n"); + strcpy(response, "226 Fin de la transaction!\r\n"); close(*DUSER_SOCKET); close(*DFTP_SOCKET); - break; + break; /* (n) Commande inconnue --------------------------------------------*/ @@ -396,7 +397,7 @@ int WAIT_SOCKET_UPDATE(int* pSocket, char* pBuffer){ do{ nbRead = sread(pSocket, pBuffer); - // si on est déconnecté, on ferme la SOCKET + // si on est déconnecté, on renvoie une erreur if( nbRead == -1 ){ printf("Client déconnecté!\n"); return -1; @@ -407,11 +408,4 @@ int WAIT_SOCKET_UPDATE(int* pSocket, char* pBuffer){ // on retourne -1 si erreur, SINON 0 return nbRead; -} - - - - -// void prefixFtpResponse(char* pBuffer, char* ftpCode){ - -// } \ No newline at end of file +} \ No newline at end of file diff --git a/dep/server.h b/dep/server.h index 8050bda..aea8467 100644 --- a/dep/server.h +++ b/dep/server.h @@ -38,15 +38,14 @@ void DROP_SERVER(const char* serverHost, char** givenPort, int* listenSocket); * @history * [1] On découpe la requête en 2 parties (rCommand, rContent) * [2] Selection en fonction de @rCommand -* * (1) USER username@serveur => connection FTP (commande) * 1. On extrait @username et @hostname * 2. On se connecte au serveur FTP (commandes) * 3. On envoie la séquence d'initialisation * 4. On envoie la requête USER au serveur FTP auquel on vient de se connecter -* +* * (2) PORT a1,a2,a3,a4,p1,p2 => utilisateur (actif) -* 1. On récupère l'ip et le port de la réponse +* 1. On récupère l'ip et le port de la requête * 2. On se connecte au client * 3. Envoi de "PASV" car on veut être en mode passif entre le proxy et le serveur FTP * (n) Si aucun traitement on recopie la requête telquel @@ -58,6 +57,8 @@ void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE + + /* Gestion de la réponse du serveur FTP et modification de la réponse * * @pAnswer Pointeur sur le buffer de réponse du serveur FTP @@ -71,7 +72,6 @@ void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE * @history * [1] On découpe la requête en 2 parties (ftpCode, ftpText) * [2] Selection en fonction de @ftpCode -* * (1) 220- Demande d'username * (2) 331- username OK -> demande MDP * (3) 230- Bon mdp -> connection @@ -79,7 +79,18 @@ void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE * (5) 215- Info SYST [COMMENTÉ] * (6) 221- LOGOUT => EXIT (commande QUIT) * (7) 227- Mode passif => On lance les SOCKETS du BUS DE DONNEES +* 1. On récupère l'ip et le port de la réponse +* 2. Connexion au serveur FTP +* 3. Envoi du message de code 200 +* * (8) 150- On lit la SOCKET FTP du BUS DE DONNEES +* 1. Envoi au client de l'écoute de la réponse (associée) du BUS DE DONNEES +* 2. On lit la SOCKET FTP (BUS DE DONNEES) +* 3. On redirige sur la SOCKET utilisateur (BUS DE DONNEES) +* 4. On ferme les SOCKETS du BUS DE DONNEES +* 5. On vide le BUS DE COMMANDE du serveur FTP +* 6. On transmet le message de fin de la transaction (226) +* * (9) 226- Fin de transfert de données (fermeture SOCKETS du BUS DE DONNEES) * (n) xxx- Commande inconnue * @@ -89,19 +100,21 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE + + /* Attends une réponse du client * * @pSocket Pointeur sur la SOCKET en question * @pBuffer Buffer qui contiendra la réponse * -* @history -* [1] On read() tant qu'on a pas les symboles de fin (\r\n) -* [2] On écrit sur le buffer -* -* [3] Si une erreur occure, on retourne -1 -* -* * @return nbRead On retourne le nombre de char lus, sinon -1 si erreur +* +* +* +* @history +* [1] On read() tant qu'on a pas les symboles de fin "\r\n" +* [2] On écrit sur le BUFFER +* [3] Si une erreur se produit, on retourne -1 * */ int WAIT_CLIENT(int* pSocket, char* pBuffer); \ No newline at end of file diff --git a/test b/test index 1a8eec9040d40477b929574a3d9c32619b349747..8032c1e48811722a57b16ae30261ce0024b8dc7d 100755 GIT binary patch delta 2387 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 SLK*I%!Yv3LaqElD1^)-H12;JU