Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (35)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

  • Automated installation script of MediaSPIP

    25 avril 2011, par

    To overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
    You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
    The documentation of the use of this installation script is available here.
    The code of this (...)

Sur d’autres sites (4998)

  • Evolution #3899 (Nouveau) : Comportement des inclusions avec le paramètre connect.

    10 février 2017

    Il y a un comportement contre-intuitif dans un cas d’usage des inclusions et du paramètre connect, ce qu’à révélé une petite analyse dans #3823.
    J’en fais un ticket dédié car c’est un problème distinct de ce qui est soulevé là bas.

    Fonctionnement actuel

    Le paramètre d’URL connect

    Le paramètre connect=truc dans une URL d’un site SPIP permet d’indiquer à SPIP qu’il doit utilise le connecteur SQL ’truc’ dans les squelettes et les boucles utilisés,
    et donc utiliser config/truc.php en lieu et place de config/connect.php. À différents endroits du compilateur, ce paramètre est séparé du contexte d’environnement
    du squelette, notamment dans les boucles où il atterrit dans $boucles[$idb]->sql_serveur et sera utilisé pour les requêtes SQL générées.

    Inclusions en indiquant un connect spécifique

    Une autre manière d’indiquer que les squelettes / boucles utilisent un connecteur spécifique est de transmettre l’environnement connect=truc aux inclusions, de la sorte :

    #INCLUREfond=test, connect=truc

    Cette option d’inclusion est prise en compte dans recuperer_fond().

    Inclusion connect=truc et paramètre d’url connect=bidule

    Lorsqu’on a à la fois dans l’URL &connect=bidule, et une inclusion qui indique un connect spécifique tel que #INCLURE{fond=test, connect=truc}
    alors d’inclusion actuellement est chargée avec le paramètre d’URL, c’est à dire en utilisant connect=bidule.
    C’est cela qui est assez contre-intuitif et logiquement non désiré (le connect forcé ici devrait prendre le pas sur celui d’environnement).

    Comment améliorer ?

    Où cela se passe dans le code ?

    Ce qui se passe lorsqu’il y a cette écriture est, comme expliqué, que le connect dans l’URL reste prioritaire sur celui de l’argument transmis à #INCLURE ou <inclure></inclure>.

    Solutions ?

    À ces 2 endroits, il faudrait du coup prendre en compte en priorité le $contexte['connect'] si existant

    • soit dans les 2 appels à la constante CODE_RECUPERER_FOND plutôt que d’écrire directement _request('connect'), mais c’est un peu compliqué car c’est du code compilé
    • soit directement dans recuperer_fond(), plus facile, inverser l’ordre :
          if (isset($contexte[’connect’])) 
              $connect = ($connect ? $connect : $contexte[’connect’]) ;
              unset($contexte[’connect’]) ;
          
      


      deviendrait :

          if (isset($contexte[’connect’])) 
              $connect = $contexte[’connect’] ;
              unset($contexte[’connect’]) ;
          
      

    Cette dernière correction serait la plus simple et la plus facile. Ça permettrait même d’annuler un connect superieur dans une inclusion
    en passant {connect=''}.

    Des avis ?

  • Anomalie #3894 (Nouveau) : Jointures (erronées ?) avec les boucles documents et leurs critères

    26 janvier 2017, par marcimat ☺☮☯♫

    Soit le cas suivant :

    - une document A, attaché à une rubrique R1 et R2
    - <doca></doca> mis dans le texte de R1 (il est donc "vu" dans R1, mais pas dans R2)
    - une boucle documents simplifiée (issue de squelettes-dist/inclure/documents.html) dans le squelette test.html :

    Test

  • #FICHIER
  • Constats

    Paramètre id_rubrique :

    Si on appelle ?page=test&#38;id_rubrique=1 le document A sera retourné, malgré le critère {vu=non}.
    Effectivement la boucle effectue 2 jointures différentes sur spip_documents_liens, une pour lier le champ "vu" et l’autre pour lier objet/id_objet.
    Du coup, la requête SQL trouve effectivement un document A non vu (dans la rubrique 2) et le retourne (vu qu’il est lié aussi à la rubrique 1).

    On obtient la requête suivante :

    SELECT documents.fichier
    FROM spip_documents AS `documents`  
    INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) 
    INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document )
    WHERE (documents.statut = ’publie’)
        AND (documents.mode IN (’image’,’document’))
        AND (documents.taille > 0 OR documents.distant=’oui’)
        AND (L2.id_objet = 1)
        AND (L2.objet = ’rubrique’)
        AND (L1.vu = ’non’)
    GROUP BY documents.id_document
    

    Paramètres objet / id_objet :

    Si on appelle page=test&#38;objet=rubrique&#38;id_objet=1, soit logiquement la même chose, on obtient 3 jointures sur spip_documents_liens.
    Là, les documents retournés ne soient pas forcément ceux de l’objet demandé ! La jointure cherche des documents liés à objet=rubrique, id_objet=1, mais pas forcément dans la même liaison !
    Les documents retournés ici sont parfois un peu farfelus donc là.

    SELECT documents.fichier
    FROM spip_documents AS `documents`  
    INNER JOIN spip_documents_liens AS L4 ON ( L4.id_document = documents.id_document ) 
    INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) 
    INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document )
    WHERE (documents.statut = ’publie’)
        AND (documents.mode IN (’image’,’document’))
        AND (documents.taille > 0 OR documents.distant=’oui’)
        AND (L3.objet = ’rubrique’)
        AND (L4.id_objet = 1)
        AND (L1.vu = ’non’)
    GROUP BY documents.id_document
    

    Paramètre id_article

    Si on appelle page=test&#38;id_article=1, on obtient, ô magie, une seule jointure. La boucle est correcte cette fois-ci donc. Je n’ai pas encore cherché pourquoi ça marche avec id_article, et pas id_rubrique…

    SELECT documents.fichier
    FROM spip_documents AS `documents`  
    INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document )
    WHERE (documents.statut = ’publie’)
        AND (documents.mode IN (’image’,’document’))
        AND (documents.taille > 0 OR documents.distant=’oui’)
        AND (L1.id_objet = 1)
        AND (L1.objet = ’article’)
        AND (L1.vu = ’non’)
    GROUP BY documents.id_document
    
  • Anomalie #4129 (En cours) : Echec de la première connexion des utilisateurs LDAP et non création d...

    11 avril 2018, par Franck R

    version de SPIP : 3.2.1 [23954]
    version de PHP : 5.6.33
    version de MySQL : 14.14

    Jusqu’à il n’y a pas si longtemps (désolé pour l’imprécision, on ajoute pas des utilisateurs si fréquemment), les utilisateurs LDAP pouvaient s’authentifier sur SPIP et l’utilisateur SPIP était créé dans la base de donnée. J’ai remarqué récemment que les nouveaux arrivants ne pouvaient plus s’authentifier, et donc créer leur compte, de cette manière.

    Problème

    Ce problème a été remarqué sur le site en production mis à jour en 3.2.1, ainsi que sur une installation de test 3.2.1 propre (attention au bug de config LDAP ).

    1. Le site SPIP est configuré pour utiliser l’authentification LDAP ;
    2. Un nouvel utilisateur est créé dans le LDAP ;
    3. Il se connecte au site SPIP avec ses identifiants LDAP ;
    4. La connexion échoue systématiquement.

    La demande #3824 offre une solution avec _AUTORISER_AUTH_FAIBLE mais elle ne me semble pas satisfaisante sachant que LDAP est configurable à l’installation de SPIP, le mode par défaut devrait assurer que l’on puisse se connecter.

    Workaround

    Il y a au moins deux solutions qui fonctionnent :

    1. La création de l’utilisateur à la main dans la base de donnée permet à l’utilisateur de se connecter (insert into spip_auteurs ...)
    2. Mettre define ('_AUTORISER_AUTH_FAIBLE', true);

    Analyse

    Lors de la toute première authentification d’un utilisateur inconnu de SPIP, le mot de passe est envoyé sécurisé par défaut (hachage réalisé par le javascript avec les aleas actuel/futur). Seulement l’authentification LDAP requiert le mot de passe en clair. Lorsque l’utilisateur existe déjà et que la source est ldap, alors la sécurisation du mot de passe est désactivée (login.js, login-sha-min.js, le cadenas à côté du champ mot de passe disparait), d’où le fonctionnement du workaround 1. Si on désactive la sécurisation du mot de passe, workaround 2, alors cela fonctionne lors de la première authentification, et l’utilisateur est bien créé dans SPIP.

    Remarque

    L’envoi en clair n’est pas un gros problème dans notre cas, le site est forcé en HTTPS.