Un cadre expérimental du serveur FTP. En fournissant une classe de pilote simple qui répond à une poignée de méthodes, vous pouvez avoir un serveur FTP complet.
Certains échantillons de cas d'utilisation incluent des données persistantes pour:
Il y a un échantillon de pilote en mémoire disponible - voir les instructions d'utilisation ci-dessous pour les étapes pour l'utiliser.
La documentation complète du package est disponible sur Godoc
go get github.com/yob/graval
Pour démarrer un serveur FTP, vous devrez fournir un pilote qui parle à votre couche de persistance - le contrat de pilote requis est répertorié ci-dessous.
Il y a un échantillon de pilote en mémoire disponible en démo. Vous pouvez le construire avec cette commande:
go install github.com/yob/graval/graval-mem
Puis exécutez-le:
./bin/graval-mem
Et enfin, connectez-vous au serveur avec n'importe quel client FTP et les détails suivants:
host: 127.0.0.1
username: test
password: 1234
Votre pilote doit implémenter un certain nombre de méthodes simples. Vous pouvez voir le contrat requis dans les documents de package sur Godoc
FTP est un protocole incroyablement précaire. Faites attention à forcer les utilisateurs à s'authentifier avec un nom d'utilisateur ou un mot de passe qui sont importants.
Cette bibliothèque est distribuée selon les termes de la licence du MIT. Voir le fichier inclus pour plus de détails.
Toutes les suggestions et les correctifs sont les bienvenus, de préférence via un référentiel Git que je peux tirer. Si cette bibliothèque vous révèle utile, veuillez me le faire savoir.
Il existe une gamme de RFC qui spécifient le protocole FTP. Dans l'ordre chronologique, les plus utiles sont:
Pour un résumé anglais un peu plus lisible que les RFC, et fournit des commentaires sur les fonctionnalités qui sont réellement utiles ou pertinentes 24 ans après la publication du RFC959: les fonctionnalités:
Pour une leçon d'historique, consultez l'annexe III de RCF959. Il répertorie les documents RFC précédents (obsolètes) liés aux transferts de fichiers, y compris l'ancien RFC114 à partir de 1971, "un protocole de transfert de fichiers"
Cette bibliothèque est fortement basée sur EM-FTPD, un cadre FTPD avec des objectifs de conception similaires dans les écosystèmes Ruby et EventMachine. Cela a fonctionné assez bien, mais vous savez, les rappels et les boucles d'événements font de moi quelque chose.