Laissez-moi vous présenter "Explorer". Ce script sert tout simplement à lister vos répertoires et permet d'y rechercher ou de partager du contenu. J'ai longtemps cherché un script du genre qui reste léger (20 Mb pour Explorer), qui s'installe facilement (nodejs est sa seule dépendance) et qui soit simple d'utilisation. N'ayant pas trouvé (à part l'usine à gaz qu'est Pydio), j'ai décider d'en développer un.

Quelques images valent mieux qu'un long discours :



Sur l'explorer vous pouvez faire des recherches sur vos dossiers et trier par date de modification. J'envisage d'ajouter un flux rss qui pourrait être utilisé par pas mal d'autres scripts pour télécharger les ajouts récents (des intéressés ?). Tous les liens sont partageables avec un simple "clic droit => copier le lien". Il est aussi possible d'archiver à la volée, par contre vous ne pourrez pas partager cette archive.

Le script est disponible sous licence MIT sur github : https://github.com/soyuka/explorer ou sur lab.wareziens.net : http://lab.wareziens.net/soyuka/explorer/tree/master

Pour la partie technique, c'est on ne peut plus simple à installer :

  1. Installer nodejs avec nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
nvm install 4 #nvm ls-remote to see available versions
nvm alias default 4
nvm use default
  1. Installer explorer en tant que module pm2
npm i pm2 -g
pm2 install xplorer
  1. Pour mettre à jour :
pm2 install xplorer

Pour information, pm2 est un process manager qui daemonize l'application. Il est possible de suivre une installation manuelle en suivant les indications sur github.

Et voilà, naviguez sur "IP:4859" avec les indentifiants "admin:admin". N'oubliez pas de changer le password 🙂.

Si vous avez des suggestions ou des retours je suis toujours preneur !

Enjoy.

Suivre les mises à jour : https://mondedie.fr/d/6874/1

Merci pour le script.
Petit retour après quelque minutes d'utilisation :
- Le répertoire ou pointe l'utilisateur admin par défaut est l'endroit de l'install du script un peu déroutant
- Je n'arrive à faire pointer le répertoire racine de l'admin ou d'un autre utilisateur sur la racine du serveur (peut être voulu)
- Pour moi le plus serait la possibilité de supprimer les fichiers.
- Un petit bouton home serait bienvenu
- Pour moi le tri par date ne fonctionne pas ça actualise et renvoi au répertoire racine et ne tri rien
- le top serait de pouvoir naviguer à partir de la barre d'adresse pour pouvoir remonté en cliquant.
Sinon c'est ultra fluide et rapide
N'ayant pas trouvé (à part l'usine à gaz qu'est Pydio),
Bonjour;

Merci, certes ton application est plus light, plus fluide... et peu correspondre à certaines demandes; mais néanmoins, pydio reste un produit abouti et suivi .... :

-Présentation
-Partages (création de liens sécurisés par MDP, dates de début partage...etc..)
-Gestion des dépôts et droits d'accès faciles à gérer
-...

Ce que je trouve dommage qu'il faille trainer dans la boue un produit pour mettre le sien en avant...même si celui ci à certes sa place.

Pourquoi ne pas se contenter de citer uniquement ses caractéristiques, ses avantages...? ; ça ne doit pas suffire sans doute !!!
jean-luc wrote:
N'ayant pas trouvé (à part l'usine à gaz qu'est Pydio),
Bonjour;

Merci, certes ton application est plus light, plus fluide... et peu correspondre à certaines demandes; mais néanmoins, pydio reste un produit abouti et suivi .... :

-Présentation
-Partages (création de liens sécurisés par MDP, dates de début partage...etc..)
-Gestion des dépôts et droits d'accès faciles à gérer
-...

Ce que je trouve dommage qu'il faille trainer dans la boue un produit pour mettre le sien en avant...même si celui ci à certes sa place.

Pourquoi ne pas se contenter de citer uniquement ses caractéristiques, ses avantages...? ; ça ne doit pas suffire sans doute !!!
Faut pas se chauffer dès le lundi comme ça.

Je ne pense pas que c'était du dénigrement mais plutôt un constat. 😛

Clairement les produit ne sont pas les même et je pense que pour une utilisation light ça solution est pas mal et rapide à mettre en place.
Tout d'abord merci pour tes retours !
kolgate wrote:- Je n'arrive à faire pointer le répertoire racine de l'admin ou d'un autre utilisateur sur la racine du serveur (peut être voulu)
Alors si ton script tourne en tant qu'un user c'est normal, effectivement si tu regarde les logs (pm2 logs) tu verra probablement un EACCESS. Le script n'a donc pas d'accès et plante, je trouve cette limitation correcte en matière de sécurité, peut-être devrais-je avertir l'utilisateur avec une erreur plus compréhensible ? Si tu fait fonctionner le script en root tu aura un accès à la racine mais je ne le conseilles pas 🙂.
kolgate wrote:- Pour moi le plus serait la possibilité de supprimer les fichiers.
Je peux ajouter ca rapidement, là encore la sécurité entre en jeu pour les utilisateurs non avertis.
kolgate wrote:- Un petit bouton home serait bienvenu
En cliquant sur "Explorer" tu devrais arriver sur le home.
kolgate wrote:- Pour moi le tri par date ne fonctionne pas ça actualise et renvoi au répertoire racine et ne tri rien
Effectivement, je corrige ca ce soir, le formulaire ne pointe pas vers l'url actuelle -_-.
kolgate wrote:- le top serait de pouvoir naviguer à partir de la barre d'adresse pour pouvoir remonté en cliquant.
Comment ca ? Moi je fait des précédents/suivants et ca fonctionne. Normalement tout passe par des GET, ca devrait être possible. Normalement le "breadcrumb" suit ton chemin et tu peux retourner à l'endroit que tu veux.

Un truc sympa sur la recherche que j'ai oublié de mentionner est l'accès au répertoire contenant le fichier 🙂.
kolgate wrote: Je ne pense pas que c'était du dénigrement mais plutôt un constat. 😛
Merci @kolgate ^^.
@jean-luc: Effectivement mon but n'était pas du tout de faire passer pydio pour de la merde. C'est effectivement une très bonne application, mais elle reste lourde à installer si tout ce que tu veux c'est lister des fichiers. Je n'ai pas la prétention d'avoir mis en place une application qui lui ressemble où qui l'égale, comme l'a si bien dit kolgate c'est un constat.
De plus, pydio possède sa propre licence. C'est moins pratique si on veut le bidouiller (entendre fork).
soyuka wrote:

Alors si ton script tourne en tant qu'un user c'est normal, effectivement si tu regarde les logs (pm2 logs) tu verra probablement un EACCESS. Le script n'a donc pas d'accès et plante, je trouve cette limitation correcte en matière de sécurité, peut-être devrais-je avertir l'utilisateur avec une erreur plus compréhensible ? Si tu fait fonctionner le script en root tu aura un accès à la racine mais je ne le conseilles pas smile.

Alors chez moi même lancer en root ça ne passe pas.

soyuka wrote:

En cliquant sur "Explorer" tu devrais arriver sur le home.

Effictivement....

soyuka wrote:

Comment ca ? Moi je fait des précédents/suivants et ca fonctionne. Normalement tout passe par des GET, ca devrait être possible. Normalement le "breadcrumb" suit ton chemin et tu peux retourner à l'endroit que tu veux.


Genre de pouvoir cliquer sur home pour y aller ou tout autre répertoire, bon la y a pas beaucoup d'arborescence mais dans certain je trouve ça fort utile.

soyuka wrote:

Un truc sympa sur la recherche que j'ai oublié de mentionner est l'accès au répertoire contenant le fichier smile.

Effectivement et ça, ça marche très bien :p

Omg you're right le breadcrumb est totalement buggé ^^". Je rajoute ca a ma todolist.
Alors chez moi même lancer en root ça ne passe pas.
Comment lances-tu le script en root ? As-tu de l'experience avec nodejs ?
Bonjour,

Je tiens avant tout à préciser que je ne veux pas soulever de polémiques assassines ni quoi que ce soit
Pourriez-vous m'expliquer rapidement la / les différence(s) avec h5ai ?
A première vue, c'est kif-kif ^^

Si je me trompe, milles excuses!!!
Merci
Très sympa ton explorateur de fichier, c'est joli, sobre et simple, bien joué ! Faudrait le rendre publique sur NPM. C'est bien aussi d'avoir pensé à bcrypt au niveau du stockage des mots de passe. Sinon je vois aussi que tu utilises Foundation pour le front-end, perso je n'ai jamais utilisé ce framework, il a quoi comme avantage par rapport à Bootstrap ?
J'envisage d'ajouter un flux rss qui pourrait être utilisé par pas mal d'autres scripts pour télécharger les ajouts récents (des intéressés ?)
Oui moi o/

Je jeterai un coup d'oeil plus en détail un peu plus tard sur ton code, peut-être que ferai quelques PR à l'avenir.
lokiii wrote:Bonjour,

Je tiens avant tout à préciser que je ne veux pas soulever de polémiques assassines ni quoi que ce soit
Pourriez-vous m'expliquer rapidement la / les différence(s) avec h5ai ?
A première vue, c'est kif-kif ^^

Si je me trompe, milles excuses!!!
Merci 🙂
Bah oui c'est quasi pareil sauf que c'est pas pareil 😛 on aime la polémique ici
lokiii wrote:Bonjour,
Pourriez-vous m'expliquer rapidement la / les différence(s) avec h5ai ?
On va se tutoyer si ca ne te dérange pas 🙂. J'ai effectivement oublié de mentionner h5ai. Je l'ai testé et le principal défaut que je lui ai trouvé est d'avoir tout mis en javascript. Sur mon script il n'y a qu'un fichier css de 90kb.
De plus, il n'a pas de gestion d'utilisateurs intégrés et la sécurité sur du partage de fichiers peut en pâtir. J'ajouterais aussi que je ne le trouve pas épuré (mais ne discutons ni de goûts ni de couleurs...).

Un avantage sur mon script c'est que tu peux paramétrer la recherche afin d'utiliser des commandes systèmes. Je ne sais pas si vous connaissez les outils du genre ack ou pt (platinum searcher) qui sont très efficaces pour ce qui est de parser du texte. En tout cas ceux-ci sont paramétrables sur Explorer pour des utilisations plus poussées (Voir documentation).
Hardware wrote:Très sympa ton explorateur de fichier, c'est joli, sobre et simple, bien joué ! Faudrait le rendre publique sur NPM. C'est bien aussi d'avoir pensé à bcrypt au niveau du stockage des mots de passe. Sinon je vois aussi que tu utilises Foundation pour le front-end, perso je n'ai jamais utilisé ce framework, il a quoi comme avantage par rapport à Bootstrap ?
J'envisage d'ajouter un flux rss qui pourrait être utilisé par pas mal d'autres scripts pour télécharger les ajouts récents (des intéressés ?)
Oui moi o/

Je jeterai un coup d'oeil plus en détail un peu plus tard sur ton code, peut-être que ferai quelques PR à l'avenir.
Premièrement merci, j'ai fait ca en 2-3 jours il se peut qu'il reste pas mal de choses à améliorer 🙂. J'ai publié sur npm, malheuresement "explorer" est un nom déjà pris. Je peux faire une requête sur npm pour me l'approprier mais il faudrait réussir à justifier que mon script à sa place sur le nom (https://www.npmjs.com/package/explorer en plus dernière publication il y a deux ans....)...
Bref, sur npm c'est https://www.npmjs.com/package/directory-listings.

Pour foundation c'est compliqué de ne pas en faire l'apologie, car finalement ça reste une question de goûts. Tu peux trouver un bon comparatif sur le blog de scotch.io. Moi je préfère la manière dont sont gérés les grid, la syntaxe (.columns.large-10 vs .col-lg-10), le fait que ce soit développé sous SASS*, et la mentalité de zurb (déjà PR chez eux).

Pour le rss je me suis ouvert un ticket sur le github 🙂.

@kolgate j'ai eu le temps de màj entre midi et deux pour les bugs cités au dessus. J'ai un autre petit bug en attente qui est la création d'un admin.

Merci à tous pour vos réactions !

* oui bootstrap propose aussi une version SASS à la place de LESS mais c'est venu bien plus tard.
soyuka wrote:@kolgate j'ai eu le temps de màj entre midi et deux pour les bugs cités au dessus. J'ai un autre petit bug en attente qui est la création d'un admin.
- Navigation nickel ça marche
- Le tri par date fonctionne par contre le plus serait que cela soit pris par défaut genre je tri par date j'entre dans un répertoire il faut re-trier par date.
- Et le bouton supprimer 😛 il est où
Après ce n'est qu'un avis personnel mais il faudrait souligner le fait que Explorer sert de bouton home.

Ps : c’était pas toi ezseed ?
kolgate wrote: - Le tri par date fonctionne par contre le plus serait que cela soit pris par défaut genre je tri par date j'entre dans un répertoire il faut re-trier par date.
- Et le bouton supprimer 😛 il est où
Après ce n'est qu'un avis personnel mais il faudrait souligner le fait que Explorer sert de bouton home.

Ps : c’était pas toi ezseed ?
Màj (en cours de déploiement).
Je te fait l'update de suppression ce soir 🙂.

Je t'ai rajouté un icône de maison rien que pour toi https://github.com/soyuka/explorer/commit/7048c4b4cbb4eb14ddc41fa22a295b57961fbaeb

Ps: Si ca l'est toujours 😉. A discuter dans un autre thread peut-être.
Petite question:
Lors de l'install de nvm, j'obtiens le message suivant :
=> Appending source string to /root/.bashrc
=> You currently have modules installed globally with `npm`. These will no
=> longer be linked to the active version of Node when you install a new node
=> with `nvm`; and they may (depending on how you construct your `$PATH`)
=> override the binaries of modules installed with `nvm`:

/usr/lib 
├── bower@1.4.1  

=> If you wish to uninstall them at a later point (or re-install them under your 
=> `nvm` Nodes), you can remove them from the system Node as follows: 

     $ nvm use system
     $ npm uninstall -g a_module
Je fais quoi ???

Merci !!
Ah t'avais déjà installé nodejs apparement, et lors d'une màj de nodejs (par nvm) il te dis que tes paquets installés "globalement" ne seront plus accessibles.
Pour y remédier suffit de les réinstallers. Ici tu n'as que "bower" si tu le veux à nouveau avec nvm :
#désinstallation propre
nvm use system
npm uninstall -g bower
#utilisation de node 0.12 
nvm use 0.12
#réinstallation
npm i bower -g
soyuka wrote:Ah t'avais déjà installé nodejs apparement, et lors d'une màj de nodejs (par nvm) il te dis que tes paquets installés "globalement" ne seront plus accessibles.
Pour y remédier suffit de les réinstallers. Ici tu n'as que "bower" si tu le veux à nouveau avec nvm :
Ca c'est du service après-vente ! Merci !!
J'ai encore une titite question:

Est-il possible de le config pour un sous-domaine ?
J'ai essayé ma config de base pour les sous-domaines, j'ai bien le login qui pop, mais j'ai une erreur ensuite...
server {                                                                                                                                                              
        listen 80;                                                                                                                                                    
        server_name explorer.lol.fr;                                                                                                                                   
        return 301 https://$host$request_uri;                                                                                                                         
}                                                                                                                                                                     
                                                                                                                                                                      
server {                                                                                                                                                              
        listen 443 ssl;                                                                                                                                               
        server_name explorer.lol.fr;                                                                                                                                   
                                                                                                                                                                      
        ssl on;                                                                                                                                                       
        ssl_certificate /etc/nginx/keys/explorer.lol.fr.crt-unified;                                                                                                   
        ssl_certificate_key /etc/nginx/keys/explorer.lol.fr.key;                                                                                                       
                                                                                                                                                                      
 location / {                                                                                                                                                         
        proxy_set_header Origin https://$host;                                                                                                                        
        proxy_pass https://localhost:4859;                                                                                                                            
        proxy_redirect off;                                                                                                                                           
        proxy_set_header Host $host;                                                                                                                                  
        proxy_set_header X-Real-IP $remote_addr;                                                                                                                      
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                                                                                                  
        proxy_http_version 1.1;                                                                                                                                       
    }                                                                                                                                                                 
}                                                                                                                                                                     
Merci ! =)
Oh my bad, vivi ça fonctionne bien en http, pas de soucis (j'avais mal rediriger mon $HOST)

Bah écoute, je test ton appli depuis 10min, vraiment sympa!
En comparaison rapide avec h5ai que j'utilise depuis un mois à peu près: et bah je pense que tu m'as convaincu!
Plus réactif et plus "propre" au niveau UI (avis perso bien sûr ^^)

Si jamais tu pouvais effectivement prendre en charge le https et éventuellement peut être une option pour enregistrer un type d'affichage par défaut ?

Perso, je suis un grand adepte de l'affichage unix : ls -l --group-directories-first
C'est possible de faire un truc comme ça ? En alphabétique avec tous les répertoires en 1er ?

Merci en tout cas !
lokiii wrote:Si jamais tu pouvais effectivement prendre en charge le https et éventuellement peut être une option pour enregistrer un type d'affichage par défaut ?
Je plusois l'affichage par defaut
soyuka wrote:Màj (en cours de déploiement).
Je te fait l'update de suppression ce soir smile.
Je t'ai rajouté un icône de maison rien que pour toi https://github.com/soyuka/explorer/comm … 57961fbaeb
La classe justepour moi ça fait plaisir juste ce qui faut l'icone merci

Sinon tu pourrait rajouté un exemple de vhost dans ton OP genre :
server {
    listen 80;
    server_name explorer.mon.ndd;
    location / {
        proxy_pass http://127.0.0.1:4859;
    }
}
Pour les gros flemmard comme moi 😛

Edit :
Pour l'affichage par défaut il y est a peu près, càd que si je mets classement Time et je parcoure ça reste par contre si je clique dans la "barre d'explorateur" il revient par défaut sur Name.