Blackotine

Billets comportant le tag magento

22 notes

IP Proxy bug avec l’extension Atos pour Magento

Lors de la construction de la requête l’adresse IP du client est envoyé. Pour les personnes derrière un Proxy l’IP généré via HTTP_X_FORWARDED_FOR est de type “XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX” (IP du client et du Proxy) et non “XXX.XXX.XXX.XXX”. Cela entraîne un plantage du module lors de la redirection (page blanche).

Le patch suivant filtre les IP récupérées par la méthode Mage_Atos_Model_Api_Paramaters::getIpAddress et récupére uniquement la seconde quand une liste est fournie.

proxy.patch.txt

Pour l’utiliser, il faut le copier sur le serveur, le renommer en proxy.patch.
Puis à la racine de magento, exécuter : 
patch -p0 < /cheminverslefichier/proxy.patch
Enfin, ne pas oublier de vider le cache Magento.

Contenu du fichier :

Index: app/code/local/Mage/Atos/Model/Api/Parameters.php

===================================================================

--- app/code/local/Mage/Atos/Model/Api/Parameters.php   (revision 1644)

+++ app/code/local/Mage/Atos/Model/Api/Parameters.php   (working copy)

@@ -138,6 +135,30 @@

             }

         }



+        # Determine originating IP address. REMOTE_ADDR is the standard

+        # but will fail if the user is behind a proxy. HTTP_CLIENT_IP and/or

+        # HTTP_X_FORWARDED_FOR are set by proxies so check for these before

+        # falling back to REMOTE_ADDR. HTTP_X_FORWARDED_FOR may be a comma-

+        # delimited list in the case of multiple chained proxies; the first is

+        # the originating IP.

+        #

+        # Security note: do not use if IP spoofing is a concern for your

+        # application. Since remote_ip checks HTTP headers for addresses forwarded

+        # by proxies, the client may send any IP. remote_addr can't be spoofed but

+        # also doesn't work behind a proxy, since it's always the proxy's IP.

+        # @see http://metautonomo.us/2008/05/30/the-local_request-that-isnt/

+        $reg_priv_network = '/^unknown$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\./i';

+        if ( strpos($ip, ',') !== false ) {

+            $_ips = explode(',', $ip);

+

+            foreach ( $_ips as $_ip ) {

+                $_ip = trim($_ip);

+                if ( !preg_match($reg_priv_network, $_ip, $matches ) ) {

+                    return $_ip;

+                }

+            }

+        }

+

         return $ip;

 }

Classé dans magento atos proxy

1 note

La structure d’un projet Magento

GWS (Global Website Store) est le nom donné par l’éditeur Varien à son système hiérarchique de gestion des données (produits, clients, configurations…) sur différents niveaux.

En résumé :

  • Global : fait référence à l’instance Magento dans sa globalité (une installation Magento).
  • Website : Les Websites (sites web) sont les “parents” des Stores (magasins). Un site web contient un ou plusieurs magasin(s). Les sites web peuvent être paramétrés pour partager les données client, ou ne partager aucune donnée.
  • Store : les stores (magasins) sont les enfants des sites web. Chaque magasin est caractérisé par une catégorie racine, ce qui permet, au sein du même site web, d’avoir plusieurs magasins ayant des structures de catalogues complètement différentes.
  • Store View : un magasin a besoin d’un ou plusieurs store views (vues magasin) afin d’être “navigable” en front office. La structure d’un catalogue, d’une vue d’un magasin à une autre du même magasin, sera toujours la même. Cela permet simplement d’avoir des présentations des données différentes. 90% du temps, les vues magasins sont utilisées pour gérer le passage d’une langue à une autre.

On retrouve GWS dans la gestion de la majeure partie des données des produits, catégories, CMS et configuration. A l’installation d’un projet, toutes les données font référence à une valeur par défaut commune à tous les niveaux hiérarchiques. Mais il est possible de rendre ces valeurs spécifiques à un web site ou store view.

Ainsi il existe 3 portées distinctes :

  • [GLOBAL] signifie que la valeur du champ sera systématiquement commune à tous les sites web, magasins, vues magasin.
  • [WEBSITE] signifie que la valeur d’un champ peut varier d’un site web à l’autre. En revanche il faut bien comprendre que cette portée signifie qu’au sein d’un même site web, tous les magasins ou vues magasin auront une valeur commune: celle définie au niveau du site web parent.
  • [STORE VIEW] signifie que la donnée peut avoir des valeurs différentes d’une vue magasin à l’autre.

Ci-dessous, un tableau récapitulatif donnant un aperçu de la portée de quelques données importantes. Il est loin d’être complet mais pourra s’avérer être une aide non négligeable.

Source : http://www.bysoft.fr/blog/internet/instances-sites-web-magasins-vues-magasin-les-cles-de-la-decision-pour-definir-la-structure-d%E2%80%99un-projet-magento/190

Classé dans magento

0 notes

Mise à jour de Magento via SSH

Une fois que vous avez accédé à votre site via SSH, placez-vous dans le répertoire où est installé Magento. Exécutez les commandes suivantes pour mettre à niveau Magento :

./pear upgrade-all

rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*

Si il y a des erreurs, cela signifie que le registre de PEAR n’a pas été initialisé. Vous devez exécuter les commandes suivantes:

./pear mage-setup .

./pear install magento-core/Mage_All_Latest

rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*

Cela ne sera nécessaire qu’une seule fois. Une fois initialisé vous n’avez pas besoin de le refaire et pouvez utiliser la première commande.

Classé dans magento update ssh