Commentaires <SERVER.H>

This commit is contained in:
xdrm-brackets 2015-12-17 00:30:30 +01:00
parent 9e9f09d796
commit 801821f3e4
3 changed files with 51 additions and 44 deletions

View File

@ -249,77 +249,78 @@ void MANAGE_RESPONSE(char* pAnswer, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE
// on met le code FTP en <int>
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 <char*>
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 <char*>
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){
// }
}

View File

@ -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<char**> 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<int*> Pointeur sur la SOCKET en question
* @pBuffer<char*> 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<int> 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);

BIN
test

Binary file not shown.