From 6aee485ea0f0b318d765b3d61e5a5c50ea54c033 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 18 Dec 2015 09:26:33 +0100 Subject: [PATCH] =?UTF-8?q?Correction,=20mauvais=20serveur=20FTP=20g=C3=A9?= =?UTF-8?q?r=C3=A9=20+=20plus=20d'erreur=20500=20au=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dep/client.c | 6 +++++- dep/server.c | 20 ++++++++++++++++---- dep/server.h | 2 +- proxy_ftp.c | 6 ++++-- proxy_ftp.h | 2 +- test | Bin 22930 -> 22983 bytes 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/dep/client.c b/dep/client.c index 09ceb6b..14bf8d0 100644 --- a/dep/client.c +++ b/dep/client.c @@ -7,6 +7,7 @@ int CONNECT_CLIENT(char* serverHost, char* serverPort, int* pSocket){ struct addrinfo hints; // contiendra le filtre/format struct addrinfo* addrinfo; // contiendra les infos int CONNECT; // file_desc(s) + int GETADDRINFO; // contiendra l'erreur ou pas de getaddrinfo() char BUFFER[maxBuffLen]; // BUFFER de communication /* [1] On définit le filtre/format @@ -28,7 +29,10 @@ int CONNECT_CLIENT(char* serverHost, char* serverPort, int* pSocket){ /* [2] On récupère les infos =======================================================*/ - getaddrinfo(serverHost, serverPort, &hints, &addrinfo); + GETADDRINFO = getaddrinfo(serverHost, serverPort, &hints, &addrinfo); + + // si erreur + if( GETADDRINFO < 0 ) return -1; if( DEBUGMOD&SCK ) printf("=============RES============\n"); if( DEBUGMOD&SCK ) printf( "AI_FLAGS = %d\n", addrinfo->ai_flags ); // int diff --git a/dep/server.c b/dep/server.c index 93bb19b..137e99c 100644 --- a/dep/server.c +++ b/dep/server.c @@ -128,7 +128,7 @@ void DROP_SERVER(const char* serverHost, char** givenPort, int* listenSocket){ -void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSER_SOCKET, int* DFTP_SOCKET){ +int MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSER_SOCKET, int* DFTP_SOCKET){ if( DEBUGMOD&HDR ) printf("====== MANAGE_REQUEST(%s, %d, %d, %d, %d) ======\n\n", pRequest, *USER_SOCKET, *FTP_SOCKET, *DUSER_SOCKET, *DFTP_SOCKET); @@ -168,14 +168,19 @@ void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE /* 2. On se connecte au serveur FTP (commandes) */ - CONNECT_CLIENT(hostName, FTP_PORT, FTP_SOCKET); - if( *FTP_SOCKET == -1 ) printf("CAN'T CONNECT TO GIVEN SERVER!!\n"); + int error = CONNECT_CLIENT(hostName, FTP_PORT, FTP_SOCKET); + + if( error == -1 || *FTP_SOCKET == -1 ){ // si erreur + printf("Impossible de se connecter au serveur (%s:%s)\n", hostName, FTP_PORT); + strcpy(pRequest, "421 ERREUR: impossible de se connecter au serveur!!\r\n"); + return -1; + } if( DEBUGMOD&SCK ) printf("FTP SOCKET CONNECTED AT %s:%s\n", hostName, FTP_PORT); /* 3. On envoie la séquence d'initialisation */ - CLIENT_SEND(FTP_SOCKET, "\r\n", &ftp_response); + CLIENT_SEND(FTP_SOCKET, "", &ftp_response); if( DEBUGMOD&CMD ) xPrint("P->F: %s\n\n", "\r\n"); if( DEBUGMOD&CMD ) xPrint("F->P: %s\n", ftp_response); @@ -189,6 +194,9 @@ void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE strcpy(response, "USER xdrm\r\n"); } + else if( strcmp(rCommand, "USER") == 0 ) // si oubli serveur + strcpy(response, "421 'username@FTPserver' attendu\n"); + /* (2) PORT a1,a2,a3,a4,p1,p2 => utilisateur (actif) --------------------------------------------*/ else if( strcmp(rCommand, "PORT") == 0 ){ @@ -224,6 +232,10 @@ void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSE /* [3] Retour de la réponse ================================================*/ strcpy(pRequest, response); + printf("RESP: %s\n", pRequest); + + + return 0; } diff --git a/dep/server.h b/dep/server.h index 434d260..58d7184 100644 --- a/dep/server.h +++ b/dep/server.h @@ -53,7 +53,7 @@ void DROP_SERVER(const char* serverHost, char** givenPort, int* listenSocket); * [3] Retour de la réponse * */ -void MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSER_SOCKET, int* DFTP_SOCKET); +int MANAGE_REQUEST(char* pRequest, int* USER_SOCKET, int* FTP_SOCKET, int* DUSER_SOCKET, int* DFTP_SOCKET); diff --git a/proxy_ftp.c b/proxy_ftp.c index bee0801..84b8b6c 100644 --- a/proxy_ftp.c +++ b/proxy_ftp.c @@ -126,6 +126,8 @@ void* manageConnection(void* THREADABLE_SOCKET){ 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 ); + int error; + /* [2] Envoi de la séquence de bienvenue ============================================================================*/ swrite(&USER_SOCKET, WLCM_MSG); @@ -141,10 +143,10 @@ void* manageConnection(void* THREADABLE_SOCKET){ /* [4] Traitement de la requête ============================================================================*/ - MANAGE_REQUEST(BUFFER, &USER_SOCKET, &FTP_SOCKET, &DUSER_SOCKET, &DFTP_SOCKET); + error = MANAGE_REQUEST(BUFFER, &USER_SOCKET, &FTP_SOCKET, &DUSER_SOCKET, &DFTP_SOCKET); // si on a pas la connection FTP (commande) initialisée, on quitte - // if( FTP_SOCKET == -1 ) break; + if( error == -1 ) break; /* [5] Redirection vers le serveur FTP diff --git a/proxy_ftp.h b/proxy_ftp.h index 1847708..9744060 100644 --- a/proxy_ftp.h +++ b/proxy_ftp.h @@ -33,7 +33,7 @@ #define THR 0x40 // FILTRE pour THREADS // possibilité de cumuler les DEBUGMODES -#define DEBUGMOD THREADS // REVEALS + HEADER + THREADS +#define DEBUGMOD SOCKETS + THREADS // REVEALS + HEADER + THREADS /* vars */ diff --git a/test b/test index 4c9d26dc9246b3b55eea7bb2bec1f4e74b1dac37..2997a01b4ea72621c176cfdf484f351aec5c62ef 100755 GIT binary patch delta 7486 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