Moteur de serveur ftp objet et fonctionnel teste sous filezilla

Soyez le premier à donner votre avis sur cette source.

Vue 12 222 fois - Téléchargée 1 212 fois

Description

Préambule
------------------------------------------
Bonjour à tous,
cela faisait longtemps que je n'avais pas ajouté de code sur le site, alors j'ai cherché parmi mes récents développements ce qui pouvait vraiment servir, et j'ai conclu qu'en posant ce serveur FTP, cela ravirait certains, que ce soit en terme de fonctionnalité ou en terme d'apprentissage winsock (pour parfaire les connaissances acquises via le tutorial).

Le SERVEUR FTP
------------------------------------------
Ainsi, cette source est un serveur FTP, il est selon mes rares tests pleinement fonctionnel, il autorise toutes les opérations courantes (sur les dossiers, fichiers, le download, l'upload, le mode passif et le mode actif). Il gère également les utilisateurs, avec bien entendu pseudo, mot de passe propre à chacun, mais aussi le dossier racine paramétrable pour chacun.
Sachez toutefois que vous ne trouverez dans cette source que le strict nécessaire d'un serveur FTP, considérons donc cela comme un MOTEUR de SERVEUR FTP.
A titre d'exemple pour illustrer cette qualification, les utilisateurs sont définis dans un fichier externe, qui possède sa propre structure, à éditer par exemple via notepad, mais il n'y a pas l'interface pour les saisir les modifier etc... Comprenez par là que ce n'est pas le but de cette source de proposer un SERVEUR FTP complet "ready to sell" : c'est le moteur, autour duquel vous pouvez (devez / devrez) construire VOTRE application, quelle qu'elle soit.

Fonctionnement
------------------------------------------
L'archive fournie avec cette source comprend un exemple d'utilisation du moteur minimaliste "ready to run". Téléchargez, exécutez, puis ouvrez votre client FTP favori : vous pourrez ainsi via l'adresse localhost, le pseudo "pseudo" et le mot de passe "password" explorer votre C:\ via FTP.
Voici les données utilisateur par défaut, actuellement présentent dans le fichier de config "default.txt" :
(login ; password ; dossier racine)
pseudo; password; c:\
utilisateur1; pass1; c:\Documents and Settings\
utilisateur2; pass2; c:\windows\

La structure
------------------------------------------
Le moteur est objet, me semble propre et "fully optimized", bien que créé je l'avoue rapidement, en une nuit et quelques heures de peaufinage, FROM SCRATCH.
Voici sa structure :

>> une Form FTPserver : elle est le noyau du moteur, et héberge les contrôles Winsock. J'ai préféré utiliser les contrôles Winsock, et donc je me suis contraint d'utiliser cette Form, simplement parcequ'ils demeurent à ma connaissance les plus stables face aux solutions "Winsock-less" basées sur les API. La Form peut tout à fait rester invisible, tout comme contenir une interface, cela n'a pas d'importance : elle ne fait qu'héberger.
Elle a 3 procédures majeures :
- LoadParameters(Optional FromFile As String = ""), qui charge les utilisateurs depuis un fichier fourni, sinon depuis un fichier nommé "default.txt"
- StartServer(Optional ByVal Port As Long = 21), dont la fonction est évidente
- CloseServer(), qui se passe aussi de commentaire

>> une Class ClassUser, qui n'a pour seule fonction que d'être un objet contenant un utilisateur chargé dans le moteur. Le noyau possède une collection de cette Class.

>> une Class ClassClient, qui représente un client actuellement connecté au serveur FTP. Le noyau possède une collection de cette Class. Nota : c'est la ClassClient qui s'autogère. Le développement est donc bien POO puisque chaque client se gère seul, et non pas le noyau qui va patronner tout l'ensemble. La gestion du code s'en trouve simplifiée, clarifiée, et le tout est stable (pas de bouchons dans les traitements de plusieurs acteurs par une même procédure "master", chaque individu se gère)

Les fichiers des utilisateurs
------------------------------------------
Le moteur doit se voir renseigner les utilisateurs qu'il peut accepter, ainsi que le dossier racine du partage FTP de chacun d'entre eux.
Pour se faire, vous devez appeler la procédure évoquée plus haut, LoadParameters, en lui indiquant en paramètre le fichier à charger. La structure de ce fichier est :

pseudo; password; chemin_racine_absolu\
pseudo; password; chemin_racine_absolu\
pseudo; password; chemin_racine_absolu\
etc... autant que nécessaire par utilisateur.
Un utilisateur donné ne peut figurer qu'une seule fois.

Vous pouvez regarder le fichier default.txt fourni dans l'archive. Sachez également que la procédure appelée SANS argument cherchera à charger le fichier nommé "default.txt".

Source / Exemple :


'VOICI LA LISTE DES COMMANDES FTP IMPLEMENTEES

"USER"
"PASS"
"PWD"
"PORT"
"PASV"
"TYPE"
"LIST"
"CWD"
"CDUP"
"NOOP"
"RETR"
"STOR"
"MKD"
"RMD"
"DELE"
"RNFR"
"RNTO"

Conclusion :


Ceci constitue mon premier serveur FTP, réalisé à l'aide des connaissances acquises PENDANT son élaboration.

Je ne garantie donc pas du tout sa stabilité, bien qu'aucun problème ne soit survenu pendant mes tests sous FileZilla.

Aussi, il ne gère qu'une seule racine par utilisateur, mais elle peut être différente pour chacun.

Je ne l'ai pas testé contre les failles de sécurité (overflow etc). Le moteur est fourni tel quel, sans aucune garantie, comme tout les sources codes du présent site ;)
Il est en revanche assez aisé de modifier les parties qui vous sembleront sensibles, s'il y'en a.

IL N'EST PAS COMMENTE, MAIS SA STRUCTURE EST EPUREE. (ceux qui me connaissent savaient déjà de toute façon, qu'il ne serait pas commenté dès le début de leur lecture ;p).

Faites moi part de vos tests, ainsi que des problèmes que vous rencontrez. Inscrivez le log de votre client FTP là où ça coince, si ça coince...

Voilà, Merci d'avoir lu jusqu'ici,

@+
Celiphane

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
373
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013

Salut à tous,

Je vais essayer ce serveur FTP puique tous ceux qui l'on fait avant moi en disent du bien, dommage que la dernière question soit resté sans réponse...

@+ JLN
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

J'ai une question: est-il possible de mettre un login/mdp donnant accès à tous les lecteurs du PC? Donc en fait accès au poste de travail

Merci d'avance pour ta réponse
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Super source qui fonctionne à merveille. C'est exactement ce que je cherchais; merci à toi
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

Tu ne m'as pas embêté, tu as souligné une faille importante.
Sans toi, elle n'aurait surement jamais été décelée.

Merci
@+
Celiphane
Messages postés
149
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2008

oki lool
bon je ne connaissais pas cette substilité
il faut reconnaitre que ce client se fait un peu vieux....
sinon j'ai plus a rajouter....et par conséquent j'arrete de t'embeter ;)
bonne prog
@+FearBlue
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.