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* 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
|
||||
|
|
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);
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue