proxy FTP (simple) en C [C/Reseau] - C - Programmation
Marsh Posté le 03-12-2012 à 01:04:58
Bonjour,
Je comprends mal le problème, tu dis que tu as le port et l'adresse du client et que tu as aussi les données. Ton proxy se retrouve donc "à la place" du serveur FTP et doit ouvrir une connexion vers le client et envoyer les infos à l'identique soit:
1. Ouverture de la connexion (comme tu l'as déjà fait pour te connecter au serveur avec socket + connect)
2. Envoi des données (avec un code à priori analogue à ce que tu as déjà dans tes fonctions sendToServer/sendToClient)
Est-ce que cela répond au moins un peu à tes question ou bien il y a quelque chose que je ne saisis pas?
Bon courage!
Marsh Posté le 05-12-2012 à 20:14:20
Bonjour _werz, excuse-moi pour la réponse tardive.
J'ai finalement réussi.
Mon explication était correcte et j'avais bien saisis le "truc". Toutefois, j'avais mal analysé le jeu de retour et d'envoi des commandes FTP.
Client ==== PORT 127,0,0,1,254,123 ====> Proxy ==== PORT 127,0,0,1,254,123 ====> Serveur
Client <=== 200 PORT successful ===== Proxy <=== 200 PORT successful ===== Serveur
Client =========== LIST ============> Proxy ==== LIST ================> Serveur
J'avais oublié le message PORT command successful. Après tout s'est déroulé correctement, j'ai envoyé au client la réponse du serveur "150 opening ascii" puis j'ai envoyé la liste des fichiers via la socket des données.
Finalement, j'ai envoyé au au client la réponse du server "226 transfert complete" puis fermer les socket de données.
Marsh Posté le 02-12-2012 à 01:51:31
Salut à tous
j'aimerais réaliser un proxy FTP actif / passif en C.
Je n'ai rencontré aucun problème sur les connexions de contrôle pour relayer les commandes et le réponses FTP mais bloque sur les connexions de données......
Pour l'instant, je souhaite seulement récupérer le résultat de la commande ls de la façon suivante :
Ma démarche pour la commande ls
Le proxy détecte ls (et donc PORT ....) puis :
Maintenant que j'ai le retour de ls dans buffer, il faut que je l'envoie au client en mode actif et je coince....
C'est le proxy qui doit mettre en oeuvre la connexion de transfert de données, j'ai l'adresse IP du client et le port à utiliser pour le transfert des données mais je n'ai pas d'idée de comment le faire. J'ai essayé plusieurs "trucs" en vain.
Voici la partie de mon code "intéressante" :
proxy.c
Message édité par champidead le 02-12-2012 à 01:56:36