Serveur FTP Intégré

MyDMAM embarque un serveur FTP sans dépendances externes au projet.

Techniquement, c’est le serveur FTP Java de chez Apache.

Par rapport à une approche classique, ce serveur FTP propose des fonctionnalités supplémentaires et n’a pas certaines possibilités de l’on retrouve parfois sur un serveur traditionnel.

Il permet notamment:

  • D’avoir un suivi des activités pour chaque compte, ce qui est téléchargé, envoyé, renommé… Fichier par fichier. La vue peut être en temps réel, compte par compte, et entièrement téléchargée en CSV. Il est donc facile de savoir si un fichier vient d’arriver, si il est récupéré, quand l’utilisateur s’est connecté et faire des statistiques de mouvement de fichiers.
  • D’avoir différents comptes avec le même nom: en utilisant le principe du virtualhost, une tête FTP est configurée sur un domaine (un groupe administratif d’utilisateurs), et n’autorisera que les comptes de ce domaine. Il ne peut y avoir qu’un Virtualhost par adresse IP ; c’est le protocole qui le limite.
  • D’avoir plusieurs serveurs FTP pointant sur le même stockage : les comptes sont stockés dans la base Cassandra. À partir du moment où leurs configurations sont équivalentes, deux instances de serveur FTP pourront se seconder sur le même stockage. On peut imaginer comme cela un système de haute disponibilité des serveurs FTP.
  • Des groupes de configuration : un compte est lié à un groupe qui va défini des options de configuration. Indépendamment de son domaine.
  • Limiter ou non la quantité d’historique de l’activité du compte à conserver en base. Voir n’avoir aucun historique pour les comptes très actifs.

Ce qui est possible en terme de configuration :

  • L’expiration du compte (sa désactivation) après la dernière connexion d’un client ou après un certain temps après la création du compte, quelque soit son activité.
  • L’expiration met les données du compte dans une corbeille (un dossier Trash dans le stockage du group) puis les supprimes. Les délais sont réglables par groupe.
  • On peut indexer automatiquement les données d’un compte dans un Storage du nom que l’on veut. Toutes les actions sur les Storages, comme l’analyse de métadonnées ou la recherche sont possibles à partir de là.
  • Un dispositif d’alerte et de protection d’espace libre sur le stockage du groupe existe, permettant de prévenir, et si besoin, de couper le serveur si il n’y a plus beaucoup d’espace libre. Les seuils sont réglables par groupe.

Les comptes utilisateur sont stockées dans Cassandra et sont spécifiques au serveur FTP. Ce ne ne sont pas des utilisateurs de MyDMAM, ni des comptes AD. Ils sont gérés via l’interface web.

Ce qu’il n’est pas possible, du moins pour le moment :

  • D’assigner des chemins spécifiques pour chaque compte (car MyDMAM le gère lui même). Un compte est stocké dans un sous dossier du groupe. Par contre, chaque groupe à son stockage qui lui est propre. Un stockage est forcément local ou distant et monté en local.
  • De mettre des restrictions en lecture seule pour un compte.
  • De définir des droits precis pour chaque compte (chmod/chown).
  • D’avoir une arborescence de dossiers virtuels dans un compte. Ce n’est pas un VFS.

L’approche est donc simple au final : un compte = un login + un domaine + un groupe, et son dossier.

Pour activer le serveur FTP, il faut le configurer avec le fichier conf/app.d/ftpserver.yml.