Correction, mauvais serveur FTP géré + plus d'erreur 500 au login
This commit is contained in:
parent
4f02237afb
commit
6aee485ea0
|
@ -7,6 +7,7 @@ int CONNECT_CLIENT(char* serverHost, char* serverPort, int* pSocket){
|
||||||
struct addrinfo hints; // contiendra le filtre/format
|
struct addrinfo hints; // contiendra le filtre/format
|
||||||
struct addrinfo* addrinfo; // contiendra les infos
|
struct addrinfo* addrinfo; // contiendra les infos
|
||||||
int CONNECT; // file_desc(s)
|
int CONNECT; // file_desc(s)
|
||||||
|
int GETADDRINFO; // contiendra l'erreur ou pas de getaddrinfo()
|
||||||
char BUFFER[maxBuffLen]; // BUFFER de communication
|
char BUFFER[maxBuffLen]; // BUFFER de communication
|
||||||
|
|
||||||
/* [1] On définit le filtre/format
|
/* [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
|
/* [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("=============RES============\n");
|
||||||
if( DEBUGMOD&SCK ) printf( "AI_FLAGS = %d\n", addrinfo->ai_flags ); // int
|
if( DEBUGMOD&SCK ) printf( "AI_FLAGS = %d\n", addrinfo->ai_flags ); // int
|
||||||
|
|
20
dep/server.c
20
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);
|
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) */
|
/* 2. On se connecte au serveur FTP (commandes) */
|
||||||
CONNECT_CLIENT(hostName, FTP_PORT, FTP_SOCKET);
|
int error = CONNECT_CLIENT(hostName, FTP_PORT, FTP_SOCKET);
|
||||||
if( *FTP_SOCKET == -1 ) printf("CAN'T CONNECT TO GIVEN SERVER!!\n");
|
|
||||||
|
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);
|
if( DEBUGMOD&SCK ) printf("FTP SOCKET CONNECTED AT %s:%s\n", hostName, FTP_PORT);
|
||||||
|
|
||||||
|
|
||||||
/* 3. On envoie la séquence d'initialisation */
|
/* 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("P->F: %s\n\n", "\r\n");
|
||||||
if( DEBUGMOD&CMD ) xPrint("F->P: %s\n", ftp_response);
|
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");
|
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)
|
/* (2) PORT a1,a2,a3,a4,p1,p2 => utilisateur (actif)
|
||||||
--------------------------------------------*/
|
--------------------------------------------*/
|
||||||
else if( strcmp(rCommand, "PORT") == 0 ){
|
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
|
/* [3] Retour de la réponse
|
||||||
================================================*/
|
================================================*/
|
||||||
strcpy(pRequest, response);
|
strcpy(pRequest, response);
|
||||||
|
printf("RESP: %s\n", pRequest);
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ void DROP_SERVER(const char* serverHost, char** givenPort, int* listenSocket);
|
||||||
* [3] Retour de la réponse
|
* [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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,8 @@ void* manageConnection(void* THREADABLE_SOCKET){
|
||||||
char* ftp_response; // contiendra le BUFFER de réponse du serveur FTP (commandes)
|
char* ftp_response; // contiendra le BUFFER de réponse du serveur FTP (commandes)
|
||||||
int nbReceived, nbSend; // contiendra les nb reçu && envoyé
|
int nbReceived, nbSend; // contiendra les nb reçu && envoyé
|
||||||
BUFFER = malloc( maxBuffLen );
|
BUFFER = malloc( maxBuffLen );
|
||||||
|
int error;
|
||||||
|
|
||||||
/* [2] Envoi de la séquence de bienvenue
|
/* [2] Envoi de la séquence de bienvenue
|
||||||
============================================================================*/
|
============================================================================*/
|
||||||
swrite(&USER_SOCKET, WLCM_MSG);
|
swrite(&USER_SOCKET, WLCM_MSG);
|
||||||
|
@ -141,10 +143,10 @@ void* manageConnection(void* THREADABLE_SOCKET){
|
||||||
|
|
||||||
/* [4] Traitement de la requête
|
/* [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
|
// 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
|
/* [5] Redirection vers le serveur FTP
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#define THR 0x40 // FILTRE pour THREADS
|
#define THR 0x40 // FILTRE pour THREADS
|
||||||
|
|
||||||
// possibilité de cumuler les DEBUGMODES
|
// possibilité de cumuler les DEBUGMODES
|
||||||
#define DEBUGMOD THREADS // REVEALS + HEADER + THREADS
|
#define DEBUGMOD SOCKETS + THREADS // REVEALS + HEADER + THREADS
|
||||||
|
|
||||||
|
|
||||||
/* vars */
|
/* vars */
|
||||||
|
|
Loading…
Reference in New Issue