Mon premier projet en Ruby a ete de coder un Serveur FTP sans utiliser la classe FTP
C'est quoi Ruby?: Ruby est un langage oriente objet, qui permet une gestion des erreurs assez sympathique, qui est portable tout comme JAVA,donc il suffit juste d'installer l'interpréteur Ruby et votre script marchera.
C'est quoi un Serveur FTP: C'est tout simplement un ou plusieurs équipements informatique (physique ou logique), offrant la possibilitee a un ordinateur distant connecte a celui ci, de copier depuis ou vers celui ci un ou plusieurs fichiers en suivant les recommandations du protocole FTP(File Transfert Protocole).
Ne pouvant publier mon code source, je vais me contenter d'évoquer ici les étapes qui pourront vous mener à un Serveur FTP qui réponds aux minimum requis par la RFC 959(Request For Comment, c'est un ensemble de normes qui régissent le protocole FTP).
Comme toujours avant de commencer a coder, il faut définir ce que devra réaliser votre Serveur FTP, ensuite réaliser un découpage fonctionnel.
Ici c'est assez simple pour définir les attentes de notre Serveur FTP, il suffit de lire la RFC 959 qui est en anglais lol.
En Resume, il faut un serveur avec une implémentation des commandes suivantes: USER, PASS, RETR, STOR, PORT, TYPE, MODE, STRU, NOOP, QUIT. Allez un petit bonus juste pour le fun (PASV, SYST, CDUP, PWD, CWD, LIST)
Premier indice bien lire la RFC 959,Les code-retours ont une importance capital
Petite explication sur le fonctionnement du protocole FTP: Le protocole FTP a deux mode de fonctionnement
Le Mode Actif: Dans ce mode c'est le client qui détermine sur quel port de connexion, la communication sera établie pour la transmission de données.Le Serveur devra initie la connexion de son port de donnée vers ce port.Ce mode est moins sécurise pour le client, car on peut sniffer la communication vu qu'elle s'effectue en telnet, et a l'aide d'un calcul assez simple avoir le port ouvert.
Le Mode Passif: Dans ce mode c'est le Serveur FTP qui Détermine sur quel port la communication sera établie pour la transmission des données.Ce mode offre plus de sécurité.
Il faut savoir qu'il y a deux flux distinct, Le flux des commandes et le flux des données
indices pour quelques commandes(une methode(fonction) par commande)
USER: Cette commande consiste a attendre le nom de l'utilisateur et de vérifier s'il est bien un utilisateur qui est autorise a accéder a votre serveur.
PASS: Cette commande consiste a vérifier le mot de passe de l'utilisateur et lui donner accès au serveur.
PORT: Cette Commande Corresponds au passage en mode actif, le paramètre est la spécification du port sur lequel le client veut établir la communication.
NOOP: Cette commande signifie "No Operation", c'est une commande que le client envoie pour rester connecter même s'il n'effectue aucune aucune opération sur le serveur.
ps: Amusez vous car ce projet est plutôt simple, le plus important est surtout de bien suivre les recommandations de la RFC 959(read the RFC 959 is the best way to improve your english).
Aucun commentaire:
Enregistrer un commentaire