Bonjour,
Je souhaite mettre en ligne une "bibliothèque de fichiers semi-publique". Oula, très web 2.0 comme appelation.
En gros, je souhaite mettre en ligne des fichiers, classés suivant des catégories.
La particularité est que je souhaite que certains fichiers ne soient disponibles que pour des personnes possédant un login/mot de passe.
En gros, un visiteur anonyme arrive sur la page, il voit une liste de fichier classés par catégorie et peut les télécharger sans restriction.
Par contre, un visiteur connecté (en introduisant son mot de passe) verra une liste plus importante et aura accès à des fichiers supplémentaires.
Vous voyez un peu le topo ?
Alors, dans un mon idéal, j'ai imaginé la chose comme cela :
- Chaque fichier dispose d'une petite description (et une URL ?) et peut appartenir à plusieurs catégories.
- Idéalement, un fichier peut exister en différente versions (par exemple un mp3 et un ogg pour une musique).
- Les personnes loguées ne voient pas toutes les mêmes fichiers. (c'est-à-dire que si Alice appartient au groupe musique, ce qui est décidé par l'admin, elle ne voit que les musiques. Par contre Bob, du groupe "global", peut lui voir tous les fichiers.)
Bon, pour ça, je rêve un peu, mais c'est pour vous montrer le topo.
Ce qui est par contre indispensable à mes yeux est une certaines sécurité : on ne peut pas télécharger un fichier non-public si on a pas de mot de passe, même si on a l'URL absolue du machin ! Je n'ai aucune idée de comment la chose est possible.
Bref, voilà, j'ai eu cette idée mais je n'ai pas la moindre piste de qqch existant qui puisse remplir ces conditions ou qui serait même un point de départ que je pourrais modifier pour mes besoins.
Je profite donc de la sagacité des lecteurs de DLFP pour proposer une petite séance de tempête dans le cerveau.
L'usage que je souhaite en faire est relativement simple : mettre à disposition certains fichiers pour ma famille et mes amis, mais pour certains fichiers, ils sont à caractère privé et je ne souhaite pas les voir sur le net à portée de tout le monde.
Certains fichiers seraient destinés uniquement à des amis très très proches, d'où la vague idée d'un second groupe (mais pas indispensable).
Enfin, pas mal de fichiers ne sont pas spécialement privés et autant les mettre à disposition.
voilà pour l'idée...
(PS : je me dis que je ne dois pas être le premier ni le seul interessé à mettre en place ce genre de chose, non ?)
# Fichiers non accessibles
Posté par Twidi (site web personnel) . Évalué à 5.
Ceux-ci doivent être stockés dans un répertoire non accessible par le web
Par exemple si ton site est dans /var/www/monsite, il te faut par exemple un /var/www/monsite/www pour le site web et /var/www/monsite/fichiers pour les fichiers.
Mais tu vas me dire comment fait-on alors pour transférer les fichiers ?
Et bien tu fais un script (dans la partie web), par exemple download.pl (bon allez, .php pour les amoureux des éléphants, moi je préfère les dromadaires)
Ce script prend comme paramètre un code quelconque identifiant le fichier voulu et se charge de vérifier l'accès. Si l'accès est refusé, tu affiches un message, et s'il est autorisé, tu fais non pas un redirect vers le fichier, car ce n'est pas possible, mais simplement un dump du fichier en question (en gros tu le lis et le print en même temps).
Attention au headers, types mimes, etc, etc
C'est loin d'être complet mais c'est un début de piste
[^] # Re: Fichiers non accessibles
Posté par Uld (site web personnel) . Évalué à 3.
Tu donnes pas le mot de passe -> 401
Tu le donnes -> OK
[^] # Re: Fichiers non accessibles
Posté par Twidi (site web personnel) . Évalué à 3.
Ceci dit ca implique soit de passer toute l'authentification via .htaccess / htpassw, soit de l'avoir en doublon (pour l'affichage des fichiers)
Moi je préviligierai ma solution juste pour que tout soit géré de la même façon, sans recours au htaccess. Et ce serait aussi plus indépendant du serveur web.
# pour les photos : phpwebgallery
Posté par Cyber Kobold (site web personnel) . Évalué à 2.
Fait exactement ce que tu veux.
Il ne resterai plus qu'à généraliser à n'importe quel fichier.
http://www.phpwebgallery.net/fre/index.html
[^] # Re: pour les photos : phpwebgallery
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
(Juste qu'il va falloir adapter car effectivement, ici il ne s'agira pas d'images)
Mes livres CC By-SA : https://ploum.net/livres.html
# proposition
Posté par passant·e . Évalué à 2.
De plus, cette gestion est beaucoup plus robuste qu'un script .pl .php.
l'idée est que tu as un fichier .htaccess par dossier que tu crées et pour un dossier donné tu peux définir la liste des utilisteurs qui pourront y accéder.
site\ (accès complet)
site\dossier_1 (accès complet)
site\dossier_2\dossier_1_1 (user_1, user_2, user_4)
site\dossier_2\dossier_1_2 (user_3)
site\dossier_2\dossier_1_3 (user_3, user_2)
Problème : avec htaccess et le directory listing activé, les utilisateurs peuvent voir des dossiers auquels ils n'ont pas accès mais lorsqu'ils cliquent dessus apache leur demande une identification. Pour éviter ce problème je te conseil ceci :
Solutions : Tu ajoutes la directive "DirectoryIndex /scripts/index.php"
Elle indique a apache qu'il doit charger ce fichier avant de tenter - si le fichier n'existe pas - de faire un Directory Listing.
Dans le fichier index.php tu feras un scripts qui
- récupère le repertoire courant (\site\)
- parcour chaque dossier et pour chaque dossier lit le fichier htaccess. Si l'utilisateur figure dans le htaccess le dossier sera affiché.
- parcour la liste des fichiers du dossier courant et les affiche.
Cela paraît compliqué mais il n'est est rien. Il faut juste un script qui te permet de gérer les permissions et un autre qui affiche les repertoires. En plus, tu t'évites la douloureuse gestion des accès qu'un pirate plus ou moins motivé cassera un jour ou l'autre.
Bonne journée.
Je trolle dès quand ça parle business, sécurité et sciences sociales
[^] # Re: proposition
Posté par Yth (Mastodon) . Évalué à 2.
Yth.
[^] # Re: proposition
Posté par passant·e . Évalué à 1.
non, La directive DirectoryIndex spécifie un autre mode de fonctionnement que celui par défaut. Donc, si t'as un fichier index.html il sera affiché comme un autre fichier.
Je trolle dès quand ça parle business, sécurité et sciences sociales
[^] # Re: proposition
Posté par inico (site web personnel) . Évalué à 2.
Suffit de se balader sur kitetoa pour voir des sites ayant un index.html affichier un Index of / ...
[^] # Re: proposition
Posté par Yth (Mastodon) . Évalué à 2.
Et il y a quoi comme solution pour empécher ça ?
Dans le .htaccess on peut empécher tout listage ?
Mettre à jour son apache ?
Yth.
[^] # Re: proposition
Posté par z a . Évalué à 2.
voir http://httpd.apache.org/docs/1.3/mod/core.html#options
[^] # Re: proposition
Posté par inico (site web personnel) . Évalué à 2.
Et aussi consulter sa boite emails pour savoir si par hasard un internaute n'aurait pas trouver une faille sur le site ...
(Toute ressemblance avec le serveur glossa.fltr.ucl.ac.be est bien entendu une coencidence ...)
[^] # Re: proposition
Posté par fabien . Évalué à 4.
ha bon ? tu peux developper un peu ?
l'exemple cité en premier (1er post) me semble tres bon, et je ne vois pas en quoi il n'est pas fiable, puisque deja les fichiers ne sont pas dans un dossier web... c'est pas plus con, au lieu de tout rendre accessible et ensuite trouver des astuces pour rendre indisponible. certains fichier a certaines personnes.
et le .htaccess : bonjour la gestion non centralisé (donc lourde)
[^] # Re: proposition
Posté par passant·e . Évalué à 1.
je n'ai pas dit le contraire
et je ne vois pas en quoi il n'est pas fiable
je n'ai pas dit ça
c'est pas plus con, au lieu de tout rendre accessible et ensuite trouver des astuces pour rendre indisponible. certains fichier a certaines personnes.
Pas taper, Je ne faisais que proposer une idée... TMTOWTDI
Mon exemple ne fait que mettre des permissions sur un repertoire que tu as crée via .htaccess.
Cette solution me semble avantageuse dans le fait qu'elle évite d'avoir à développer une gestion de la sécurité ou il y aura forcément des bugs.
J'aime bien me baser sur l'existant.
et le .htaccess : bonjour la gestion non centralisé (donc lourde)
C'est vrai c'est pas centralisé, mais tu peux par exemple déplacer un repertoire via ftp sans que cela te perdre les permissions. Dans l'autre cas, tu dois impérativement utiliser l'interface de gestion.
Amicalement
Je trolle dès quand ça parle business, sécurité et sciences sociales
[^] # Re: proposition
Posté par Twidi (site web personnel) . Évalué à 1.
[^] # Re: proposition
Posté par Yth (Mastodon) . Évalué à 1.
Aucune gestion à faire ensuite, tu classes tes fichiers dans les répertoires, c'est suffisamment clair pour fonctionner je pense !
Le listing ne dépend de rien, tu a ou n'a pas accès aux répertoires et zou.
Et pour le répertoire dans lequel se trouvent les repertoires, tu essaies de t'arranger pour qu'il soit impossible de chopper le listing, ou tu fais un truc particulier uniquement pour lui : selon les droits tu affiches tout ou partie.
Yth.
# re
Posté par serge_kara . Évalué à 3.
En gros, l'idee c'est d'avoir un espace https pour stocker des fichiers, et pouvoir y inviter qui on veut.
Ton histoire de alice qui voit pas tout alors que bob voit tout est simplissime a gerer (bon, ok, pas simplissime, mais ca casse pas trois pattes a un connard, un simple filtre a appliquer lors du listage du repertoire et on n'en parle plus).
En gros, t'as une action cocoon qui s'occupe de verifier les droits, tout ce genre de choses, le code metier comme on dit dans l'milieu, qui te remplit un javabean, qui est est transmit a la suite du pipeline cocoon, et au final, en fonction du contenu du bean, tu serialise un fichier ou une page html indiquant que le bonhomme peut aller suxer des caribous morts vu qu'il a pas les droits.
Cocoon te permet de gerer la multipublication : tu peux avoir une version html pour quand t'es loin de ton pc perso, ou installer un client "lourd" qui te permet d'avoir des features ihm plus avancees (telecharger un dossier complet d'un coup, dnd ce genre de choses quoi).
Ca se fait a coups de feuilles de styles xslt, ca fait un peu mal au cul et ca pique les yeux au debut, tu te dis que ca va jamais rentrer et en fait t'y met tout. Mais une fois que t'y a prit gout, tu peux plus t'en passer. Un peu comme la sodomie, en fait.
Nan, blagues a part, xslt c'est un peu douloureux au debut, mais on en fait des choses admirables.
Bon, apres, on est pas oblige d'utiliser cocoon, c'est juste que ca me parait etre un outil adapte pour ce genre d'applications.
Ca marche bien, c'est pas specialement dur a coder (la gestion des verrous et des transactions est un peu plus complexe, mais ca se fait bien si on y reflechit un petit peu).
Apres, ca depend sur quoi tu veux l'heberger, un tomcat c'est pas tres courant sur un heberge grand public.
Bref, si ca t'interesse, hesite pas a me contacter par mp, histoire qu'on en discute.
[^] # Re: re
Posté par ploum (site web personnel, Mastodon) . Évalué à 4.
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: re
Posté par serge_kara . Évalué à 2.
Effectivement, tomcat tout ca, c'est un peu l'artillerie lourde.
Mais ca permet de traiter le probleme avec tout le confort d'un langage compile, et de profiter d'eclipse en tant qu'ide (debuger sa servlet directement depuis son IDE, c'est quand meme achement pratique, et v'la le temps que ca fait gagner).
[^] # Re: re
Posté par Larry Cow . Évalué à 3.
[^] # Re: re
Posté par serge_kara . Évalué à 2.
Confort dans le sens ou la compilation me permet justement de detecter pas mal d'erreurs syntaxique/fautes de frappes etc. dans mon code.
Je bosse plus ou moins sur un projet php, et je passe mon temps a pester contre la non compilation de mon code.
C'est aussi, mais pas seulement, une question d'habitude aussi je pense.
Pis avec eclipse, la compilation n'est plus une phase a part entiere.
C'est sur que si on bosse sans compilation a la volee, c'est un peu plus lourd, mais je prefere tout de meme ca a un langage interprete.
[^] # Re: re
Posté par Yth (Mastodon) . Évalué à 1.
Ou alors parce que tu n'as jamais eu l'occasion de coder en python !
Le python est, grâce à sa console en grande partie, le langage, tout types confondus, pour lequel le débuggage et les tests sont, à mon goût, le plus simple et le plus agréable.
En fait, depuis que j'ai découvert le Python, j'ai remplacé perl, php et java par lui.
Mais bon, question de goûts je présume...
Encore que, remplacer trois langages par un seul à ses avantages !
Yth, python powered.
[^] # Re: re
Posté par serge_kara . Évalué à 3.
Le cote indentation tres stricte m'a un peu effraye, mais bon, faut voiri.
faudrait que j'essaie un jour quoi.
# zope (+ éventuellement plone)
Posté par Bayet Thierry . Évalué à 4.
Comme tout cms, il faut un peut d'étude pour le faire fonctionner, mais plone est assez intuitif.
De plus, tu as possibilité de créer des droits d'utilisation comme sur tout système Unix, c'est à dire, droits en lecture, écriture, execution pour le propriétaire, le groupe et les autres.
Que demander de plus.
C'est vraiment très complet, et je trouve vraiment domage qu'il n'existe pas plus de vendeur d'espace web qui propose cela, et que ceux qui restent, le font à des prix relativement cher (par rapport à php+mysql).
Par contre, pour une utilisation en intranet, c'est vraiment le pied (mais peut-être un peu de parti-pris ...)
Ce que l'on peut trouver sur plone? Wiki, shop, possibilité de déposer des articles dans tous les formats possible et imaginables (zope n'est jamais qu'un serveur d'applications), calendrier, ... trop de fonctions pour tout dire ici. (On peut quelques fois dire que c'est une usine à gaz aussi ...)
;)
# Des DRMs?
Posté par Vador Dark (site web personnel) . Évalué à 10.
Comme ça, tout le monde peut télécharger, mais tout le monde ne peut pas les lire.
Et en plus, tu peux même retirer l'accès quand tu veux, gèrer les droits, être certains qu'ils ne le diffuseront pas sur le web, être certains qu'ils ne le lieront pas sur un client/une plateforme non autorisé(e), savoir quand/où/avec quoi ils l'ouvrent, les faires payer si tu le désire parce que tu aura pris soin de bien cacher la petite etoile dans le contrat de licence utilisateur final dans la section monstrueuse des droits que tu te réserve que "tu te réserves le droit de faire payer l'affichage quand tu le désires, sans préavis, et que l'utilisateur doit de lui même venir relire régulièrement le présent contrat pour s'informer des nouvelles mesures", ...
Bon, aller -->[].
Sinon, dsl, pas de solution. Mais en PHP, avec une base de donnée, la gestion des droits ne serait pas non plus très complexe. Tout dépend aussi qui serai l'hébergeur(ta propre machine?).
# dmanager :
Posté par ploum (site web personnel, Mastodon) . Évalué à 3.
http://www.dmanager.org/
c'est pas trop mal, il y'a juste encore quelques défauts à mes yeux, par ordre d'importance :
- On gère les droits par répertoires entiers et pas par fichiers.
- On voit les répertoires auxquels on n'a pas accès.
- On doit gérer les utilisateurs individuellement et pas "par groupe".
- Le fait d'ajouter des commentaires sur un fichier est très limité. (comme pour moi il y aura peu de fichiers, j'aimerais pouvoir mettre des explications, une url, à la limite une image)
- un fichier ne peut pas appartenir à plusieurs "répertoires".
- Une seule version par fichier.
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: dmanager :
Posté par ploum (site web personnel, Mastodon) . Évalué à 4.
Oki, un problème de moins, je viens de patcher le bazar et ça fonctionne visiblement très bien :-)
Mes livres CC By-SA : https://ploum.net/livres.html
# et en utilisant qu'une bdd objet ?
Posté par briaeros007 . Évalué à 1.
une bd objet qui contiens tous les objets.
chaque identifiant a acces ou pas a ces fichiers (ca se fait au niveau de la bd)
Et le script php est on ne peut plus simple.
Il affiche un select nom dans les vues dont on a l'autorisations
et l'envoi c'est juste un select file redirigé vers le flux réseau.
/me qui étude les bd en cours :-D
[^] # Re: et en utilisant qu'une bdd objet ?
Posté par Yth (Mastodon) . Évalué à 2.
En fait le problème n'est pas tant d'avoir une interface propre, où quand tu lui demandes de ne t'afficher que les "photos" (par exemple), elle le fait.
C'est aussi, et surtout, que si il n'a pas envie que tu voies les fichiers "moi_nu_sous_la_douche", tu ne puisses pas les voir, donc il y a des questions de sécurité, d'accès restreints, etc...
Le problème étant que les fichiers doivent pouvoir être téléchargés, mais qu'il soit possible d'empécher ce téléchargement, et que selon des critères fixes et fiables ce choix puisse être fait.
Une base de donnée peut servir à la gestion des droits et l'organisation des fichiers, mais elle se place plus du côté interface que du côté système et sécurité.
Yth.
# hum ... et un CMS ?
Posté par Monsieur Flynn . Évalué à 2.
Tu as tout ce que tu demandes dans ton journal, plus la possibilité de rajouter des features et tu fais tout ça en aller .. 2h :).
# xattr+mod_autoindex+mod_auth_* ?
Posté par Krunch (site web personnel) . Évalué à 2.
Pour que mod_autoindex n'affiche pas les fichiers aux personnes qui n'ont pas le droit de les télécharger il risque de falloir patcher un peu mais ça doit pas être trop compliqué. Pareil pour la description pour chaque fichier si tu veux qu'elle soit aussi dans les attributs étendus plutôt que dans un .htaccess.
Par contre ça ne permet pas d'avoir plusieurs versions d'un même fichier et c'est sans doute pas fort portable en dehors de Linux.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: xattr+mod_autoindex+mod_auth_* ?
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: xattr+mod_autoindex+mod_auth_* ?
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
Je vais voir ça !
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: xattr+mod_autoindex+mod_auth_* ?
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: xattr+mod_autoindex+mod_auth_* ?
Posté par Krunch (site web personnel) . Évalué à 3.
et celui là j'ai pu le tester et il a l'air de fonctionner.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
# finalement...
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
http://www.dotclear.net/forum/viewtopic.php?pid=67869
Mes livres CC By-SA : https://ploum.net/livres.html
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.