rejetto forum

Impossible de cacher contenu de dossier public + voir le contenu en étant logué

Rom_1983 · 10 · 14412

0 Members and 1 Guest are viewing this topic.

Offline Rom_1983

  • Occasional poster
  • *
    • Posts: 28
    • View Profile
Bonjour,

Le moins que l'on puisse dire, c'est que HFS met les nerfs à rude épreuve.

Mon serveur est hébergé chez moi. Exemple du dossier qui sera pris en compte ici dans la description du problème :
Code: [Select]
/
  public_host  (dossier reéel)
      forum1
      forum2
      ...

Je voudrais faire les choses suivantes :
- Rendre accessible des fichiers dans n'importe quel sous-dossier de public_host depuis le web, pour notamment héberger des images à utiliser sur des forums.
- Cacher le contenu de public_host (bah oui, pas envie qu'on aille fouiner et faire du rétro-engineering sur mon activité internet, mes images des différents forums, etc).
- Et en même temps en rendre visible le contenu pour tout utilisateur logué (moi surtout) qui aurait les droits, afin d'obtenir facilement les liens vers les fichiers.

Sauf que :
- HFS a trois trucs intéressants pour ça : le flag "Browsable", le flag "Recursively hidden", et l'accès protégé par user/pass.
- J'ai commencé par tester "Recursively hidden" : cool, on voit pas le contenu comme prévu, mais je fais comment pour obtenir les liens des fichiers et pouvoir les copier/coller ?
- Décocher "Browsable" est plus propre (on a un joli message "forbidden"), mais tout aussi inutile pour avoir les liens.
- Activer "Browsable", décocher "Récursively hidden", et activer la protection par user/pass nous fait récupérer la liste des fichiers : mais du coup, les liens vers les ressources ne marchent plus sur les forums et la boîte de login apparaît !!!
- Ne pas activer l'user/pass, mais lui mettre "Ignore limits" et cacher le contenu en décochant "Browsable" et/ou cochant "Récursively hidden" ? Eh bah non, marche pas.

Ca rend fou. :o Il n'y a donc personne chez les devs pour s'être dit "ça serait chouette de pouvoir parcourir son serveur HFS, de faire un clic-droit sur un fichier, et de copier/coller le lien tout en cachant le contenu du dossier aux anonymes ?"

Parce que là du coup, je sèche. Je ne vois pas comment faire pour obtenir le lien d'un fichier que j'aurait ajouté à mon dossier réel, hormis en mémorisant l'URL de mon serveur, en la copiant quelquepart, en tapant à la main le chemin (dossiers/sous-dossiers) vers le fichiers, et en collant le nom et l'extension du fichier. Bref, hyyyyyyyyyyyyyper rébarbatif.

Pourquoi ne pas avoir offert la possibilité de browser les fichiers directement dans la console d'HFS ? Comme ça, on pourrait garder le paramétrage tout en ayant la liste des fichiers et la possibilité de copier leur lien.
Lorsqu'on fait un clic-droit sur un dossier réel, on n'a que "Browse it F9", ou "Open it F8". Pourquoi bon sang ??

Le plus triste dans tout ça c'est que j'étais en train de vouloir héberger deux images à poster sur un autre forum... pour solutionner un problème avec un logiciel, sachant que lui-même était sensé m'aider à en régler un autre !! Et soudain, en voulant parcourir la racine de mon serveur HFS, je me suis aperçu qu'ayant caché son contenu, je n'avais plus accès aux liens ! Donc je me retrouve avec un nouveau problème sous forme de dilemme, j'en ai marre. Personne ne fait d'effort pour être logique... .  :-\
« Last Edit: March 03, 2021, 04:07:48 AM by Rom_1983 »


Offline Mars

  • Moderator
  • Tireless poster
  • *****
    • Posts: 2063
    • View Profile
mais c'est relativement simple comme possibilité, suffisait juste d'y penser à ce qui va suivre  ;D

1) activer menu >> virtual file systeme >> List protected items only for allowed users
 cela permet de masquer à tout utilisateur n'ayant pas uns de droits sur un élément du vfs (access delete upload) au minimum le visuel quand l'utilisateur n'est pas identifié

2) ajoutes  public_host_admin à ton vfs ( sans limitation ) puis dans ses propriétés ajouter seulement ton compte dans (access delete upload) pour être le seul à y avoir access une fois que tu sera identifié

- si public_host_admin est un dossier virtuel, tu peux y ajouter à volonté les dossiers réels que tu voudras gérer en distant

- si public_host_admin est un dossier réel, tu pourras ajouter des éléments dedans (directement sur le disque) ou virtuellement en éléments réels dans le vfs

3)  ajoutes  public_host au vfs (en virtuel) dans les mêmes conditions qu'au 2) pour avoir des dossiers similaires, tu auras ainsi deux clones

4) dans les propriétés de public_host tu masques ce que tu veux ( hidden recur) en laissant l'accès ouvert pour tous , tu ajoutes les éléments à partager puis tu joues sur les propriétes pous afficher ou masquer leur contenu, en jouant au besoin dans "file Masks" de chacun pour filtrer la liste apparaissant dans la page web  ( le root du vfs contient les filtre par defaut), sachant que default file mask (index.html;index.htm;default.html;default.htm) correspond à la page web qui doit etre recherché en premier pour l'affichage avant d'utiliser le template

je vois que t'es en pleine construction

un conseil: ne mets pas deux fois les mêmes noms, car tu risque d'avoir des erreurs d'accès avec les accès par l'url

« Last Edit: March 03, 2021, 04:19:17 PM by Mars »


Offline Rom_1983

  • Occasional poster
  • *
    • Posts: 28
    • View Profile
Salut,

Je ne comprends pas : je suis sensé créer un dossier "_public_host_admin" sur mon HDD ? Car si je fais juste "clic-droit -> New empty folder" à la racine "/" de mon serveur, il n'y a pas ensuite l'option pour changer en dossier virtuel ou réel, et dans les propriétés je n'ai pas upload.

Par déduction, j'ai "compris" que vous parliez de créer un dossier sur le HDD. Donc je l'ai fait, et je l'ai ajouté comme dossier virtuel à HFS. J'y ai ensuite ajouté à nouveau mes autres dossiers, en réel. Puis j'ai réservé l'accès à "_private_admin" (je l'ai nommé comme ça plutôt) pour mon utilisateur seulement.

Enfin, j'ai fait un test :
- Me connecter à la racine de mon serveur. Problème : aucun dossier "_private_admin" malgré qu'il n'a aucun flag pour le cacher.
- Je me suis connecté. Il est apparu.
- Je l'ai parcouru pour aller dans un dossier où se trouve une image, et j'en ai copié le lien (sans le DNS vers mon serveur ça donne /_private_admin/_public_host/playnite_forum/my_playnite.jpg).
- J'ai collé le lien dans un onglet pour tester : l'image apparaît bien (mais à ce stade, ce peut être dû au fait que je suis logué).
- Donc pour me déloguer et tester en tant qu'utilisateur anonyme, j'ai effacé mon historique de navigateur.
- J'ai rafraichi l'onglet où se trouvait l'image, et bim : elle ne s'affiche pas et la boîte de connexion s'affiche !

Conclusion : ça ne résout pas le problème.

Quote
un conseil: ne mets pas deux fois les mêmes noms, car tu risque d'avoir des erreurs d'accès avec les accès par l'url
Je n'ai jamais mis deux fois les mêmes noms, si c'était ce que vous pensiez ;) (sinon si c'est juste un conseil dans l'absolu alors ok, oui je comprends)
« Last Edit: March 07, 2021, 03:41:36 PM by Rom_1983 »


Offline Rom_1983

  • Occasional poster
  • *
    • Posts: 28
    • View Profile
J'aoute qu'il y a un truc étrange dans votre explication, qui contredit règle cette règle d'or :

Dès qu'un dossier est verrouillé en amont (accès user restreint), tous les dossiers en aval et toutes les ressources qui s'y trouvent sont inaccessibles publiquement (accéder à l'URL est bloqué par un panneau d'identification).

Donc je vois mal comment avec une technique d'imbrication vous pourriez éviter celà.
Et vous m'avez bien dit :
Quote
2) ajoutes  public_host_admin à ton vfs ( sans limitation ) puis dans ses propriétés ajouter seulement ton compte dans (access delete upload) pour être le seul à y avoir access une fois que tu sera identifié
Donc je n'invente rien.

Du reste, certains de vos passages sont incompréhensibles :
Quote
3)  ajoutes  public_host au vfs (en virtuel) dans les mêmes conditions qu'au 2) pour avoir des dossiers similaires, tu auras ainsi deux clones
En virtuel ? Mais depuis le début j'utilise des dossiers réels moi. Je veux bien en créer des clones et les mettre comme enfant d'un dossier virtuel, mais ça sera tout.

Quote
4) dans les propriétés de public_host tu masques ce que tu veux ( hidden recur) en laissant l'accès ouvert pour tous ,
Mais de toutes manières le dossier parent qui est virtuel et verrouillé empêche qu'on en voit le contenu ! Donc peu importe.

-----------------------------------

Rappel de mon problème (je vais mettre des labels pour que ça soit plus clair) :

(o) Objectif : permettre de poster, sur des forums, des liens publics vers des ressources se trouvant sur mon serveur HFS.

Condition(s) :
(c1) : Les URL des ressources doivent être accessibles à tous (donc y compris aux "anonymes" du point de vue de l'ACL de HFS)
(c2) : N'importe qui essayant d'atteindre des noeuds se trouvant en amont doit être bloqué (forbidden), sauf pour la racine du serveur bien entendu car il faut permettre de s'y loguer.
(c3) : Je veux pouvoir parcourir les dossier de mon serveur pour y trouver les ressources et copier leur lien pour faciliter le partage de ces liens sur les forums. Donc un utilisateur créé dans HFS doit avoir la possibilité d'outrepasser la condition (c2), et donc les FLAGS "Browsable" et "Recursively hidden" ou toute autre technique qui serait utilisée pour cacher le contenu des noeuds en question.

Or, quoi qu'on fasse, une des conditions (c1) (c2) ou (c3) est toujours violée.
« Last Edit: March 07, 2021, 04:22:56 PM by Rom_1983 »


Offline Mars

  • Moderator
  • Tireless poster
  • *****
    • Posts: 2063
    • View Profile
les liens étant créés à partir du compte logué
(sans le DNS vers mon serveur ça donne /_private_admin/_public_host/playnite_forum/my_playnite.jpg).

il faut en supprimer la partie privée pour que l'utilisateur ait accès au contenu

http: //monsite.dns.com/_public_host/playnite_forum/my_playnite.jpg

et là y a bien  my_playnite.jpg qui s'affiche correctement

si tu le souhaites au lieu d'avoir la page d'accueil classique de hfs pour les petits malins qui tenteraient l'aventure d'essayer des connexions pour tester les logins

dans ton template tu dois avoir ca:

[]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">


sur les versions plus récentes  c'est
[]
{.$common-head.}


tu  le modifie en insérant les lignes manquantes de manière à obtenir ce qui suit

Code: [Select]
[]
%login-link%
%loggedin%

[login-link]
ceci est ma nouvelle page d'accueil

[loggedin]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">

il te suffira de personnaliser la section [login-link]  pour qu'elle affiche ce que tu veux sans donner d'accès au login

si toi seul a besoin de te connecter il te suffira à la suite de l'adresse principale ( dns ou locale) d'ajouter /~login  puis d'en faire un raccourci dans ton navigateur. A noter que pour se déconnecter de hfs il est nécessaire de fermer le navigateur qui majoritairement garde la connexion "ouverte" en gardant en mémoire les identifiants.

%login-link% affiche le contenu de [login-link] lorsqu'on est simple visiteur

une fois logué c'est  le contenu de [loggedin]  par %loggedin% qui est affiché

« Last Edit: March 07, 2021, 09:41:27 PM by Mars »


Offline Rom_1983

  • Occasional poster
  • *
    • Posts: 28
    • View Profile
Quote
il faut en supprimer la partie privée pour que l'utilisateur ait accès au contenu
Mais que suis-je bête de ne pas y avoir pensé !
Ok merci pour la technique.  8)

Bon ça ne remplace pas une vraie solution, mais ça permet au moins de faire ce que je souhaitais.

Quote
dans ton template tu dois avoir ca:
Alors j'aurais préféré la méthode exacte pour utiliser le diff-template (via propriétés de "/" à la racine du vfs), mais j'ai testé votre méthode directement dans le template général (accessible via touche F6 pour ceux qui se demanderaient) et elle marche à moitié : en effet la nouvelle page de racine s'affiche bien, mais si j'ajoute "/-login" à l'url, HFS m'affiche "Not found".



Offline Mars

  • Moderator
  • Tireless poster
  • *****
    • Posts: 2063
    • View Profile
Mais que suis-je bête de ne pas y avoir pensé !
 :-\


LOL
ce n'est pas avec le signe '-' (moins) mais le caractère '~' (tilda) qu'il faut utiliser

/~login


Offline Mars

  • Moderator
  • Tireless poster
  • *****
    • Posts: 2063
    • View Profile
@Rom_1983

dans le but de solutionner ton problème pour générer les raccourcis à publier sur le web

dans le template repère ces deux lignes

[+file]
<td>%item-size%B<td>%item-modified%<td>%item-dl-count%


et juste avant ajoutes ceci

[+file]
{.if|{.=|%user%|myident.}|{:<br>
{.replace|%host%|www.mondomaine.com|{.replace|/_private_admin/|/|%item-full-url%.}.}
:}.}


prend soin de remplacer myident par le nom du compte admin sous lequel tu te logues,
ainsi que www.mondomaine.com par ton nom de domaine externe

ceci te mettra le lien à diffuser que t'auras juste à copier

dans cette configuration , ce sont toutes les dossiers  qui sont impactés,  mais si tu souhaites que ce ne soit valable que pour certaines pages, il faut utiliser  la propriété "diff template" du dossier _private_admin dans le vfs

on conserve le même principe que précédemment mais en changeant le nom de la section utilisée, par exemple

[link_private_public]
{.if|{.=|%user%|myident.}|{:<br>
{.replace|%host%|www.mondomaine.com|{.replace|/_private_admin/|/|%item-full-url%.}.}
:}.}


et dans le template principal il faudra mettre en conservant cet ordre


[+file]
{.$link_private_public.}

[+file]
<td>%item-size%B<td>%item-modified%<td>%item-dl-count%


il faut garder à l'esprit que l'ajout de sections dans des diff tpl est soumis à une règle de parent-enfant et que l'utilisation de
[+file] dans le tpl aurait placé le résultat au mauvais endroit sur l'affichage web


dans la mesure ou cette approche permet seulement de créer le texte nécessaire qui peut prendre de la place à l'écran, il est tout à fait possible de le remplacer par un bouton qui générera le lien dans le presse-papier avec un message de validation au besoin
https://www.30secondsofcode.org/blog/s/copy-text-to-clipboard-with-javascript/
mais cette démarche dépasse mes possibilités et te laisse le soin d'évoluer ou non dans cette perspective.
« Last Edit: March 08, 2021, 01:13:12 PM by Mars »


Offline Rom_1983

  • Occasional poster
  • *
    • Posts: 28
    • View Profile
Quote
ce n'est pas avec le signe '-' (moins) mais le caractère '~' (tilda) qu'il faut utiliser
Ah oui effectivement, mon écran étant petit, et à cause du mouvement oculaire en lisant rapidement, j'ai pris ça pour un tiret.
Ca marche désormais avec le tilde.  ;)

Pour l'édition du template, je me suis amusé, car j'étais insatisfait de l'affichage du lien juste en dessous du nom cliquable (celà épaissit le tableau).

Voici ce que j'ai plutôt réalisé ligné 85 :
Code: [Select]
            <th style="text-align: left">{.^sortlink|d|Lien vers la version publique.}
Puis ligne 294 :
Code: [Select]
[+file]
<td>%item-size%B<td>%item-modified%<td>%item-dl-count%<td style="text-align: left !important;">{.if|{.=|%user%|Romain.}|{:
{.replace|%host%|www.mondomaine:port|{.replace|_admin/||<a href="%item-full-url%">%item-full-url%</a>.}.}
:}.}

Et juste après, ligne 299 du coup :
Code: [Select]
[+folder]
<td class='nosize'>folder<td>%item-modified%<td>%item-dl-count%<td style="text-align: left !important;">{.if|{.=|%user%|Romain.}|{:
{.replace|%host%|www.mondomaine:port|{.replace|_admin/||<a href="%item-full-url%">%item-full-url%</a>.}.}
:}.}

Ce qui donne une colonne de plus dans le tableau d'affichage de la liste de dossiers ou fichiers, avec comme entête "Lien vers la version publique" et comme contenu un joli lien explicite et surtout sur lequel on peut faire un clic-droit pour copier sa valeur sans avoir à triple-cliquer !

Au pire, en cas d'arborescence profonde et donc le lien public s'allongeant et prenant trop de place, remplacer <a href="%item-full-url%">%item-full-url%</a> par <a href="%item-full-url%">Lien</a>.

---------------------

Nota bene

Quote
et juste avant ajoutes ceci

[+file]
{.if|{.=|%user%|myident.}|{:<br>
{.replace|%host%|www.mondomaine.com|{.replace|/_private_admin/|/|%item-full-url%.}.}
:}.}
Il y avait une erreur : /_private_admin/|/|%item-full-url% donne un double slash en plein milieu de l'URL, il faut donc mettre /_private_admin/||%item-full-url% (on doit garder les deux "|" consécutif sinon un message d'erreur s'affiche). J'ai essayé /_private_admin|/|%item-full-url% mais celà ne marche pas (comme on ne prend pas le "/" juste après "_private_admin", la RegEx le garde et le réécrit dans le résultat final, et donc là aussi il s'ajoute à "|/|").

Par contre un slash en trop apparaît sur toutes les URL des dossiers de base n'étant pas dans /_private_admin. Pour le solutionner il faut encore retravailler la RegEx pour obtenir _private_admin/||%item-full-url% (sans le slash avant "_private_admin").

Je précise que j'ai renommé _private_admin en _admin sur mon disque, et donc adapté mes exemples plus haut.

Merci pour les coups de main, et votre patience @Mars  ;)
« Last Edit: March 08, 2021, 07:29:06 PM by Rom_1983 »