BoZoN 1.6.1 - tout nouveau

Rhaaaa, lala ! Je néglige carrément mon public en ce moment (public au singulier )

Ne m'en veuillez pas trop, mais j'ai du mal à sortir la tête de l'eau entre les projets perso, les projets pour la rentrée prochaine, les projets à finaliser, les idées de projets dans lesquels j'ai hâte de me lancer... du coup, je poste (beaucoup) moins ... voire plus...

 

Mais rassurez-vous, si tant est que l'un d'entre vous ait ressenti un quelconque sentiment d'inquiétude , le blog n'est pas totalement décédé, la preuve: dans la catégorie des mises à jours urgentes depuis des mois, j'ai repris en bloc BoZoN, mon appli minimaliste de partage de fichiers... (dont voici le précédent article)

 

Allez, en piste, c'est parti !

 


Au menu de ce dépoussiérage:

  • Ajout de la gestion de l'internationalisation,
  • Ajout d'une fonction de recherche/filtrage de la liste
  • Changement de la lib de drag & drop pour adopter auto_dropzone dans sa dernière version
  • Mise à jour d'auto_restrict dans sa dernière version (sécurité améliorée)
  • Mise à jour de la fonction de thumbnail
  • Changement de logo et de design

[Edit] 

16 juillet: J'ai commit une version 1.3 apportant :

  • le renommage de fichiers
  • un fallback au drag & drop utilisant la sélection traditionnelle de fichiers
  • le téléchargement d'un fichier distant (par son URL) vers le serveur local 

20 juillet: la 1.4 (beta)

  • ajout des sous-dossiers:
    • création
    • suppression
    • renommage
    • partage
  • la page index.php (publique) permet de lister le contenu d'un dossier partagé, de naviger dans ses sous-dossiers et d'accéder aux fichiers qu'il contient.
  • Le nombre de sous-items contenus dans un dossier apparaît sur celui-ci
  • Un bouton de partage a fait son apparition: il permet de copier plus facilement le lien du fichier
  • Ajout d'un fallback à glob pour les versions de php <5.2
  • Les icônes des items ont été replacées et l'ensemble est plus "propre", surtout sur Firefox
  • j'ai ajouté également un fichier texte pour faciliter le fork (à perfectionner)

28 juillet: la 1.4.1 (beta toujours)

  • l'arrivée d'un mode déplacement de fichiers et dossiers
  • menu latéral regroupant les options et déchargeant la page
  • un lien vers le dépôt github en plus du lien vers ce site (private joke avec Cyrille qui comprendra )
  • correction d'un bug lors du download de gros fichiers
  • amélioration de la gestion d'erreurs pour le fallback d&d
  • ajout d'une icône visualiser et changement de l'action du lien du fichier (click -> télécharger)
  • ajout d'un état actif sur le lien de langue
  • la dropzone est désormais désactivée pendant l'upload

 

1er Août: la 1.5 (en test)

  • l'arrivée d'un mode de gestion des liens de partage
  • mode burn after access qui détruit le lien de partage après l'accès au fichier/dossier
  • mode verrouillé qui colle un mot de passe sur un fichier/dossier partagé
  • ajout d'un bouton permettant de régénérer le lien de partage (en cas de fuite d'un lien)
  • un flux rss pour les dossiers
  • un retour json du contenu d'un dossier (dans l'idée d'un future interopérabilité avec d'autres applis qui auraient besoin de lister le contenu d'un dossier partagé)
  • un fichier de config basique
  • cette version est désormais utilisable sur les espaces perso de free \o/
  • correction (?!) d'un bug très exotique qui nous a valu de belles sessions de débug tardifs avec Cyrille (merci au passage ;-)
  • Bozon est désormais utilisable via un smartphone (maquette revue en ce sens) Pour rigoler, j'ai uploadé une photo que j'ai prise pour l'occase: clic sur la dropzone, sélection de l'appareil photo, prise de vue... et voilà. \o/

 

29 Août: la 1.6

  • Ajout d'un système de thèmes pour refaire le design plus simplement
  • Ajout d'un thème elementaryOS, plus classe
  • Ajout de tooltips
  • Usage du langage du navigateur comme langue par défaut
  • Ajout de la possibilité de changer un zip uploadé en dossier distant (dézippe sur le serveur, pour éviter de se taper la création d'une arboresence à la main)

 

Une capture d'écran valant mieux qu'un long texte verbeux et inutile, pan !

 

Il s'agit de la capture de la page admin.php sur laquelle vous devez vous connecter pour pouvoir uploader. (l'adresse sera donc www.monsite.com/bozon/admin.php )

Lors de la première connexion, l'admin crée son login/passe d'accès et tous les dossiers sont créés automatiquement.

 

Si on veut configurer le nom du dossier d'upload ou celui du fichier d'ID, on peut le faire dans le core.php, qui contient les deux constantes en question (à changer AVANT d'accèder pour la première fois à la page d'admin)

Donc à gauche, la zone de drag & drop, à droite la liste des fichiers déjà uploadés (mise à jour via ajax).

On peut déposer plusieurs fichiers à la fois, ils seront envoyés tranquilou un par un à leur rythme...

 

 


 

Quand on veut partager un fichier ou un dossier qu'on vient d'envoyer, on copie son lien dans la page admin (via le bouton lien qui apparaît en hover). 

Il s'agit d'un lien anonymisé dans le sens où il contient seulement l'ID du fichier et pas le chemin sur le serveur.

A noter que BoZoN réagira différemment en fonction du fichier: un fichier php sera affiché en echo alors qu'un fichier image sera simplement envoyé (on peut d'ailleurs utiliser l'url de partage dans une balise IMG par ex) et qu'un fichier zip sera téléchargé...

Quand au partage d'un dossier, c'est l'arborescence du dossier et de son contenu qui apparaîtra: les liens vers les sous-dossiers et les fichiers sont eux aussi anonymisés. L'utilisateur ne peut remonter vers le dossier parent du dossier dont il a le lien de partage.

 

Voilà pour le résumé de cette mise à jour qui s'imposait... 

Plus que 325 658 trucs à faire.

 

Le dépôt github: https://github.com/broncowdd/BoZoN

Le Zip : https://github.com/broncowdd/BoZoN/archive/master.zip

auto_restrict 3.3 : toujours plus loin, toujours plus haut

Et allllleeeeez... encore une mise à jour pour ce script de sécurisation d'accès à une page php...   *bigfacepalm* 

Ben c'est pas ma faute !   

Comme je l'utilise tout le temps, je le confronte à de nouvelles situations qui me donnent des idées... pis voilà (on n'est jamais à l'abri d'avoir une idée, comme ça, subrepticement  )

 

Enfin, bref, pour les ceusses qui veulent plus se fracturer les rouleaux avec la sécurisation à chaque fois qu'ils veulent se faire un petit espace admin ou une page de config, je pose le bouzin ici

 


[épisodes précédents : , et ]

Quoi de neuf, cette fois ?!

  • ajout de la possibilité de préciser le root, ce qui permet à auto_restrict de toujours placer et chercher ses fichiers correctement quel que soit le script qui l'appelle et sa position dans l'arborescence
  • meilleure sécurisation du cookie: désormais, tout cookie correspond à un fichier token local, sinon, dehors...
  • les fichiers ne traînent plus un peu partout: le script crée son propre dossier de travail et y stocke les fichiers de passe, de salt, de bannissement, de token etc
  • ajout de la possibilité de filtrer automatiquement toute donnée $_POST ou $_GET via un strip_tags (deux variables booléennes de config font leur apparition: $auto_restrict['GET_striptags']$auto_restrict['POST_striptags']

 

Désormais, auto_restrict peut être configuré quel que soit le contexte d'appel: des fichiers php peuvent l'inclure de n'importe où dans l'appli et on peut même sécuriser des scripts appelés via ajax, donc dépourvus du contexte d'appel global.

 

J'ai eu besoin de ce genre de modifications dans une aplli d'évaluation en ligne pour les élèves (dont j'ai fait mention à plusieurs reprises) et que je suis en train d'améliorer pour y intégrer les versions en ligne des cours, des fiches de révision et de travail, les résultats en temps réel etc... 

Tous les scripts sensibles de la partie admin, du menu au moindre fichier appelé via ajax (basculer le trimestre, sauver temporairement le travail etc) en passant par toutes les pages destinées à créer du contenu sont sécurisés par des appels à auto_restrict... et ça fonctionne  


 

Comme à chaque fois, je vous renvoie vers le gihub pour vous faire une idée.

 


'tain, si ça continue, y'aura plus de versions de ta merde que d'épisodes de Grey's anatomy... pfff.

Vu la qualité de l'ensemble et la pertinence des modifications, j'aurais plutôt choisi Heroes pour la comparaison....

 

Dis-donc, c'est plus un come back les gars, c'est une véritable résurrection façon La nuit des morts vivants: vous poussez le soucis scrupuleux du détail jusqu'à l'imitation olfactive... quel professionnalisme !

 


Un tic-tac ?!

 

 

Repositorix: un gestionnaire de dépôt pour spxplugindownloader

Ce weekend, alors que je corrigeais des bugs signalés par des âmes charitables via le forum de pluxml, une intervention de JerryWham m'a fait remarquer l'existence d'un plugin permettant l'installation d'autres plugins par le biais d'une sorte de market regroupant les dépôts de divers codeurs.

 

J'ai trouvé l'idée très intéressante et je me suis penché dessus pour ajouter mon propre dépôt à la liste, selon la page de doc du plugin.

 

Cependant, comme tout codeur qui se respecte, les tâches répétitives produisent sur moi une rapide genèse excessive de gaz exédentaire et superfétatiore; en un mot, ça me gonfle.

Créer un fichier xml d'infos pour chaque plugin que j'ai à mettre en ligne... ouf !

J'ai donc pris un moment pour coder une petite appli qui se chargera toute seule du sale boulot...

 


 

L'appli est essentiellement une page admin.php sur laquelle on glisse et dépose le ou les fichiers zip des plugins que l'on souhaite partager.

 

Lorsqu'on uploade un fichier zip, repositorix le place dans le dépôt, le dézippe, extrait les infos du plugin et son icône puis génère le fichier repository.xml compatible avec le plugin de je-evrard.

Dans la foulée, il incrémente le fichier repository.version et il crée une page index.html regroupant tous les plugins du dépôt sur une page, avec leurs infos et le lien de téléchargement.

 

Vous pouvez voir un exemple de cette page sur mon propre dépôt: http://repo.warriordudimanche.net/


 

Repositorix peut être configuré via le fichier config.php du dossier INCLUDES/ (même si peu de choses sont réellement configurables pour le moment)

 

La sécurisation de la page admin se fait grâce à auto_restrict et la gestion de l'upload par le script auto_dropzone.

J'avais en tête d'ajouter un flux rss permettant le suivi des nouveautés, mais je ne l'ai pas encore fait: spxplugindownloader se chargeant de fournir une liste à jour, il ne m'a pas semblé urgent de le faire... (le script array2feed est malgré tout inclus dans le projet, pour plus tard)

 


 

Le code et le zip sont disponibles sur le github de WDD https://github.com/broncowdd/repositorix, sentez-vous libres de le commenter, l'adapter, le repomper tout-ça tout-ça... c'est cadeau.

 

A+ les copains !

Quickpost - poster plus vite que son ombre... [edit 13-03]

Je me suis rendu compte que je n'avais jamais posté ce petit plugin pourtant [éventuellement] utile: Et si on ajoutait un bookmarklet qui donne la possibilité de poster un billet rapidement, un peu à la Shaarli ?!

Vous cassez pas, j'ai eu à le faire dans le cadre du projet pour mes potes du boulot... seulement, comme je prévoyais de l'améliorer un peu pour arrondir un peu son aspect brut de décoffrage, il est passé aux oubliettes directement sans passer par la case WDD.

 

Bref, je vous le livre directement...


Une fois le plugin activé, il ajoute  un lien-bookmarklet dans la page profil de pluXML.

 

 

Comme tous les bookmarklets, il suffit de le glisser déposer dans la barre de favoris pour pouvoir l'utiliser.

 

Imaginons maintenant que vous vouliez poster un billet rapide, un peu à la façon de shaarli: il suffit de cliquer sur le bookmarklet pour obtenir une page de post simplifié:

 

 

Comme sous shaarli, le bookmarklet récupère le titre et l'url de la page où vous vous trouviez au moment du clic.

Si vous n'êtes pas loggué au moment du clic, le bookmarklet ajoute une case mot de passe.

 


 

Du point de vue technique, Quickpost hooke l'IndexBegin pour générer éventuellement le bookmarklet et gérer les données envoyées par ce biais.

Il hooke également certaines parties admin (ajout du lien dans le profil, gestion des données post pour l'ajout de l'article etc) : le code est assez clair et commenté, je pense.

 

Beaucoup d'améliorations peuvent être apportées (css, editeur de texte enrichi, auto complétion de tags par exemple) mais j'ai la flemme (j'ai pourtant commencé un système pour ajouter simplement les tags.)

[EDIT du 13-03] Après de judicieuses remarques d'usagers sur le forum  j'ai modifié le bookmarklet pour qu'il permette de préciser la ou les catégories. Merci à eux. ;-)

Pour récupérer le zip: c'est par là...

Stay_connected: ajouter une case "rester connecté"

Un jour, promis, j'arrêterai de vous fourguer des plugins pour pluXML, mais pas tout de suite parce que j'ai encore plein d'idées (pour les plus pressés, je rappelle qu'il y a mon snippetvamp, dans lequel je mets les bouts de code à moi ou trouvés sur le net...)

 

Aujourd'hui, je comble une autre lacune de pluXML:  une case à cocher sur la page de login pour rester connecté.


 

 

Dans le cadre d'un autre projet auquel je commence à réfléchir sérieusement en mode tainchépasijvayarriver, je trouvais dommage de ne pas pouvoir utiliser auto_restrict dans pluXML (histoire d'avoir un espace sécurisé dans lequel je puisse ajouter d'autres applis)...

 

Finalement, après réflexion, je me suis dit que ce serait sans doute plus simple d'adapter pluXML pour ajouter cette fonction.

 

Donc, je m'y suis collé et voilà.

 

Stay_connected ajoute donc une case "rester connecté" (!)

Si on coche cette case, le plugin crée un cookie et il n'est plus nécessaire de passer par la page de login.

 

En cas de clic sur le lien de déconnexion, le cookie est supprimé.

 


 

Pour ce qui est de la sécurité, le cookie correspond à un fichier-token unique créé dans le sous-dossier cookie_files (le token est généré avec un salt créé lors de l'activation du plugin).

Lors de l'accès à une zone admin, le hook intercepte la procédure habituelle de login et injecte la gestion du cookie (vérification/création/suppression).

Si le cookie ne correspond pas à son fichier token local, pouf c'est tout ! (il faut donc un cookie valable ET son fichier correspondant)

 

 

Encore une fois, si ça se trouve, JerryWham va me dire qu'un plugin comme ça ça existe déjà... mais bon...

Tant pis  

Tchuss !


 

Téléchargement !

Fil RSS des articles de cette catégorie