Archives pour la catégorie ‘ Trucs et astuces’

10 ans pour le blog !

Les années et défilent, et ça y’est le cap fatidique des 10 ans est déjà arrivé pour le blog 🙂

Je profite de l’occasion pour faire une petite rétrospective du travail qui a été fait sur celui-ci lors de la dernière décennie, et pour partager pour ceux que ça intéressent quelques statistiques.

Pour ceux que ça intéresse, vous pouvez également regarder le premier article 🙂 : Bienvenue sur mon blog !

État des lieux

Tout d’abord au niveau de la ligne éditoriale, comme présenté à l’origine les informations publiées sont avant tout techniques et orientées autour des thématique suivantes :

  • Prestashop
  • Magento
  • Mantis Bug tracker
  • Administration système

Je pense avoir une certaine légitimité sur le sujet puisque ça fait presque aussi longtemps que je travaille sur ces plateformes que j’écris des articles.

L’idée d’écrire des articles sur ce sujet est parti il y’a quelques années.
A une époque ou, trouver des documentations techniques sur les solutions open source se résumait à chercher sur google ( j’éxagère à peine ).…

Pas de commentaires

Prestashop : bloquer les mises à jour de modules dans l’administration

Présentation du problème et solution

C’est un comportement bien connu et assez embêtant auquel je m’attaque aujourd’hui.

Qui n’a jamais pesté d’avoir mis à jour un module dans le back office de Prestashop alors qu’on souhaitait uniquement le configurer ..

Par défaut lorsqu’une mise à jour d’un module est disponible, c’est l’action « Upgrade » qui est l’action par défaut.

Un clic trop rapide et on se retrouve avec une version non testée et donc potentiellement des erreurs sur son site.

J’ai donc créé un petit module qui permets de désactiver l’action du bouton de mise à jour et qui affiche un autre message à la place.

Il est possible de configurer le comportement ( normal ou bloqué ) directement depuis la configuration du module.

Fonctionnement technique

Pour gérer cela nous allons créer un module hh_modulesupdater

Ce module va utiliser la possibilité de surcharger les templates symfony du core en reprenant simplement leur chemin dans un module.

Nous allons donc créer un fichier :
modules/hh_modulesupdater/views/PrestaShop/Admin/Module/Includes/action_button.html.twig

Pas de commentaires

Utiliser et configurer un proxy socks en local avec votre serveur dédié

Un petit tutoriel rapide pour faire face à une problématique que j’ai rencontré récemment.

Avec mon fournisseur d’accès à internet je n’ai pas d’adresse ip fixe, c’est gênant pour accéder à certains environnements dont l’accès est soumis à des restrictions d’ips.

Je possède en revanche plusieurs serveurs dédiés sur internet qui eux ont bien des ips fixes.
Vous l’aurez compris l’idée va être de se connecter à travers l’un de ces serveurs pour obtenir une ip fixe également.

La configuration de cette connexion est facile et ne prendra pas plus de 2 minutes 🙂

Les prérequis sont les suivants :

  • Accès ssh à un serveur
  • Système linux ou WSL disponible
  • Extension FoxyProxy

Gestion de la connexion ssh

Pour se simplifier la vie on va configurer ce proxy directement dans le fichier ~/.ssh/config de la même manière que pour n’importe quelle connexion ssh :

Host herve.tunnel
 Hostname myserverNameOrIP
 User ServeurUser
 Port ServerPort
 DynamicForward 8000 #Attention à cette ligne

Remplacez bien évidemment les informations du hostname de l’user et du port par les accès à votre serveur.…

Pas de commentaires

Simplifiez vous la console sous windows avec Terminal

Pour des raisons techniques j’ai récemment du repasser sous windows pour quelques jours récemment.

En étant habitué la console linux c’est un énorme retour en arrière d’utiliser la console standard de windows  ( cmd ) d’autant quelle ne gère pas nativement la connexion ssh

Mon usage de la console est essentiellement basé autour la connexion à des serveurs web, ou des commandes git sous windows j’utilise le sous-sytème wsl pour gérer toutes ces commandes.

J’utilisais déjà pour remédier à ça l’alternative cmder https://cmder.net/

Qui rendait déjà les choses bien plus pratiques avec sa gestion multi-onglets et le chargement de profils.
Mais  j’avais pas mal de problèmes dans la gestion des flèches lors de l’édition des fichiers avec vim qui me faisait souvent perdre du temps

J’ai donc profiter la sortie officielle de la version 1.0 de terminal et j’ai été assez séduit par son fonctionnement et son utilisation :

  • Gestion multi-onglets
  • Types de fenêtres ( cmd / powershell / wsl )

Si vous utilisez souvent la console sous windows je pense que c’est un outil que vous adopterez très vite 🙂

Vous pouvez l’installer depuis le lien suivant :
https://www.microsoft.com/fr-fr/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab

Pas de commentaires

Commandes console git utiles

Dans le développement git est un outil très puissant et très pratique que j’utilise au quotidien.
Majoritairement via son intégration dans PhpStorm ( très intuitive )

Mais dans certains cas il est  nécessaire d’utiliser la ligne de commande
Voici donc une petite liste de commandes git utiles en fonction des situations

Configuration générale

Définir/modifier l’user et l’email du dépôt courant

git config user.name "Your username"
git config user.email "[email protected]"

 

Création d’un projet

Initialisation d’un projet local (dans le dossier courant )

git init .

Initialisation d’un projet distant ( dans le dossier courant )

git clone https://yourrepositoryurl.com/repo.git .

 

Gestion des fichiers

Ajout de modification

git add path

Annuler les modifications sur un fichier ou un dossier

git checkout -- path

 

Suivre l’état de mon dépôt local

Visualisation du statut global du dépôt

git status

Visualisation des fichiers modifiés

git ls-files -m

Visualisation des fichiers supprimés

git ls-files -d

Valider mes modifications

git commit -m "message de commit"

Voir la liste des modifications apportées

git log

Voir la liste des modifications apportées (version simplifiée)

git log --oneline

 

Mettre à jour mon dépôt local

Lister les dépots distants

git remote -v

Associer la branche locale à une branche distante

git branch --set-upstream-to=orignin/branchName

Récupération des informations distantes

git pull origin branchName

Réinitialisation de la branche locale comme la branche distante ( attention efface tout l’historique local )

git reset --hard origin/branchName

 

Gestion des branches

Création d’une branche

git checkout -b branchName

Changement de branche

git checkout branchName

Fusioner une branche dans la branche courante

git merge branchName

Lister les branches du dépot

git branch -a

Supprimer une branche du dépôt local ( si déjà mergée ou poussée )

git branch -d branchName

Supprimer une branche du dépôt local (peu importe son statut )

git branch -D branchName

Supprimer une branche du dépôt distant

git push origin --delete branchName
Pas de commentaires

Publier des releases github via un script

Pour une fois un article qui n’est pas lié directement à une technologie en particulier , mais à la plateforme de sources github.
J’ai plusieurs modules qui sont disponibles sur cette plateforme et pour lequel un clone du dépôt ne permets pas d’obtenir un module fonctionnel.

Pour  cette raison il est nécessaire de créer des « releases » qui sont disponibles sur une page spécifique du dépot ( ex:  https://github.com/nenes25/eicaptcha/releases ) et sur lequel on peut mettre à disposition une archive ( ou tout autre fichier ) associé à la release à télécharger :

Ei captcha releases

Il est possible de faire cela manuellement directement depuis l’interface github, mais par principe manuellement c’est plus lent et plus souvent source d’erreurs qu’un script automatique.
Nous allons donc voir comment scripter tout ça en utilisant l’api v3 de github et curl.

Sachant que dans mon cas j’ai les prérequis suivants :

Je pense qu’il est possible de faire l’ensemble de la procédure ci-dessous via un script bash, mais pour moi c’était plus facile de le faire en php.…

Pas de commentaires

Prestashop : Récupérer une configuration directement depuis un template

J’ai récemment rencontré la problématique de devoir utiliser des variables de configuration dans plusieurs templates non liés d’un site prestashop.
Plutôt que de surcharger l’ensemble des controllers impacté , je suis passé par la solution d’ajouter une nouvelle fonctionnalité directement dans Smarty.
Tout ça sans surcharge et via un module qui fonctionne sur PS 1.6 et 1.7

Le code est relativement simple :

class HhConfigTemplate extends Module
{
    public function __construct()
    {
        $this->author    = 'hhennes';
        $this->name      = 'hhconfigtemplate';
        $this->tab       = 'front_office_features';
        $this->version   = '0.1.0';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('HH Config Template');
        $this->description = $this->l('HH Config Template');
    }
 
    public function install()
    {
        if (!parent::install()
            || ! $this->registerHook('displayHeader')
           ) {
            return false;
        }
 
        return true;
    }
 
    public function uninstall()
    {
        return parent::uninstall();
    }
 
    /**
     * Hook Header Ajout d'une fonction dans smarty
     * @param $params
     */
    public function hookDisplayHeader($params)
    {
        //Enregistrement de la fonction "Configuration" dans Smarty qui appelle la fonction "getConfiguration" de cette classe
        smartyRegisterFunction($this->context->smarty, 'function', 'Configuration', array($this, 'getConfiguration'));
    }
 
    /**
     * Récupération d'une configuration
     * @param array $params
     * @return string
     */
    public static function getConfiguration($params)
    {
        if ( isset($params['key'])) {
            return Configuration::get($params['key'],
                isset($params['id_lang']) ?
5 commentaires

Magento : Configurer plusieurs boutiques sur une seule instance

Nativement la plateforme Magento permets de créer plusieurs sites webs totalement différents tout en utilisant le même code et le même dossier sur votre serveur et cela avec des urls différentes !

Il est cependant ensuite nécessaire de réaliser un mapping pour que Magento trouve quelle boutique charger avec quelle url

En partant des pré-requis suivants :

  • votre configuration apache ou nginx est déjà en place et que l’ensemble des noms de domaines pointent bien vers le même dossier
  • Nous allons tester 3 sites
    • www.shop.fr ( Site FR / Code du magasin magento : fr )
    • www.shop.de ( Site DE / Code du magasin magento : de )
    • www.shop.com ( Site EN / Code du magasin magento : en )
  • Les configurations des magasins sont en place dans magento

Nous allons voir ensemble les différentes possibilités qui existent pour réaliser cela.

Serveur Apache : fichier .htacess
Editer le fichier .htacess situé à la racine de magento et rajouter les lignes suivantes

SetEnv MAGE_RUN_TYPE store
SetEnvIf Host www\.shop\.fr
Pas de commentaires

Détecter vos contenus mixtes avec les CSP

Je continue ma série d’articles sur le https avec une problématique assez chronophage qui est la détection des contenus mixtes sur une page https.
Avec les nouvelles sécurité des navigateurs si une image , une feuille de style ou un fichier javascript n’est pas appellé en https il ne sera pas interprété.

Et donc votre site ne sera pas affiché correctement.
La tâche d’identification de ces contenus est relativement longue et implique de passer sur toutes les pages de votre site si vous souhaitez le faire manuellement.
La bonne nouvelle est que ce n’est pas nécessaire 🙂

Avec les headers Content Security Policy ( CSP ) il est possible de détecter automatiquement les éléments bloquants.
Mon exemple est relativement basique, pour des informations complètes sur les CSP vous pouvez consulter le site suivant : https://content-security-policy.com/

Comme le nom ( header ) le défini, nous allons ajouter l’entête spécifique à notre document.

Content-Security-Policy-Report-Only "default-src https://your-site.com https: 'unsafe-inline';report-uri https://your-site.com/csp-https-report.php"
2 commentaires

Passage du blog en https

Après tous les articles récents publiés sur le https, il était temps de mettre la recommandation du passage en full https sur ce blog en application.
Pour le coup c’est plutôt facile à faire avec wordpress, et c’était en place en moins de 30 minutes 🙂

Voici les différentes étapes effectuées pour passer wordpress en https.

A savoir que le https est déjà géré et disponible sans configuration via les dns cloudflare que j’utilise ( c’est pareil pour tous les hébergements mutualisés via les dns ovh également )

Configuration de wordpress

Pour commencer , il suffit de changer les urls du site dans la configuration de wordpress en allant dans « Réglages / Généraux »

Correction du contenu mixte

Le site est à présent disponible en https, cependant si vous avez des images vous allez rapidement constater des avertissements de contenus mixtes.
C’est à dire que votre navigateur vous alerte que votre page charge des éléments non sécurisés ( protocole http ), sur une page sécurisée ( https )

Pour corriger cela il va être nécessaire de mettre à jour votre base de données pour remplacer les urls http par du https
(Attention à bien sauvegarder votre base avant )

Dans mon cas cela est passé par l’éxécution de la requête suivante

UPDATE wp_posts SET `post_content` = REPLACE (`post_content`, 'http://www.h-hennes.fr'
1 commentaire


Archives

Compte Github