Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
doc:galette [07/11/2009 19:25] – xavier | doc:galette [20/11/2014 14:02] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Mini-audit de Galette ====== | ||
+ | ===== Généralités ===== | ||
+ | |||
+ | * Galette : Gestionnaire d' | ||
+ | * Site officiel : [[http:// | ||
+ | * Version testée : 0.63.2 (06/ | ||
+ | ===== C'est parti ===== | ||
+ | ==== Téléchargement et décompression de l' | ||
+ | |||
+ | Commençons par nous procurer le code de la version 0.63.2 : | ||
+ | |||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar xzf galette-0.63.2.tgz | ||
+ | mv galette-0.63.2 galette | ||
+ | cd galette | ||
+ | </ | ||
+ | |||
+ | Observons les permissions des fichiers fournis : | ||
+ | <code bash> | ||
+ | find . -type f -perm /111 -print0 | xargs -0 /bin/ls -ald | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier 10728 nov. 12 2006 ./ | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier 10145 juin 13 2008 ./ | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier 10692 oct. 6 20:56 ./ | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | -rwxr-x--- 1 xavier xavier | ||
+ | </ | ||
+ | |||
+ | Ces fichiers ont-ils vraiment besoin d'un flag exécutable ? Cela peut se comprendre pour les scripts utilitaires (*.py) mais beaucoup moins pour : | ||
+ | * les templates ('' | ||
+ | * les scripts PHP ('' | ||
+ | * la documentation ('' | ||
+ | |||
+ | Détail : | ||
+ | < | ||
+ | -rw-r----- | ||
+ | </ | ||
+ | Fallait-il vraiment laisser cela dans le paquet final ? | ||
+ | ==== Installation ==== | ||
+ | <code bash> | ||
+ | vim docs/ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Requis : - Serveur web supportant PHP : | ||
+ | Apache est une bonne option | ||
+ | Galette a été testé sur Apache 1.3.22 et 1.3.26 | ||
+ | - PHP (Au moins la version 4.1) | ||
+ | Galette a été testé avec PHP 4.1.2 et 4.3.3 | ||
+ | - Base de données (MySQL ou PostgreSQL) | ||
+ | Galette a été testé sur MySQL 3.23.49 et PostgresSQL | ||
+ | 7.0.2 et 7.2.1 (version récente recommandée) | ||
+ | </ | ||
+ | |||
+ | Sans vouloir remettre en cause la pertinence des tests upstream, n'en serions-nous point à Apache 2.2, PHP 5.2.11, MySQL 5.1 et PostgreSQL 8.4.1 ? | ||
+ | |||
+ | < | ||
+ | Il vous faut maintenant créer un utilisateur et une base pour Galette sur | ||
+ | votre serveur SQL (MySQL ou PostgreSQL). L' | ||
+ | tous les droits sur la base créée pour Galette. | ||
+ | |||
+ | Se reporter à la documentation de votre serveur SQL pour ce faire. | ||
+ | Web. | ||
+ | </ | ||
+ | |||
+ | Pour ce test, nous choisirons le premier truc qui nous tombera sous la main, à savoir du MySQL. | ||
+ | Création des structures par un script d' | ||
+ | <code mysql> | ||
+ | GRANT ALL PRIVILEGES ON `galette` . * TO ' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Connectez-vous ensuite au sous répertoire " | ||
+ | Dans notre exemple, il s'agit de http:// | ||
+ | |||
+ | Vous n'avez plus qu'à vous laissez guider par les 10 étapes de l' | ||
+ | Web. | ||
+ | </ | ||
+ | |||
+ | Rendons-nous joyeusement sur '' | ||
+ | < | ||
+ | Merci mod_suphp. | ||
+ | < | ||
+ | Si ce n'est pas déjà fait, créez une base de données et un utilisateur pour Galette. | ||
+ | Les droits nécessaires sont CREATE, DROP, DELETE, UPDATE, SELECT et INSERT. | ||
+ | </ | ||
+ | $#%#$%$# Pouvait pas le dire plus tôt non ? | ||
+ | <code mysql> | ||
+ | REVOKE ALL PRIVILEGES ON galette. * FROM galette_user@localhost; | ||
+ | REVOKE GRANT OPTION ON galette. * FROM galette_user@localhost; | ||
+ | GRANT CREATE, DROP, DELETE, UPDATE, SELECT, INSERT ON galette.* TO galette_user@localhost; | ||
+ | </ | ||
+ | |||
+ | Remplissons le formulaire pour la connexion à la base de données et passons à l' | ||
+ | < | ||
+ | Si c'est pas beau la vie. Créons les structures maintenant : | ||
+ | |||
+ | < | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_adherents ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_cotisations ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_transactions ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_statuts ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_types_cotisation ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_preferences ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_logs ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_field_types ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_dynamic_fields ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE `galette_pictures` ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_l10n ... | ||
+ | DROP TABLE IF ... | ||
+ | CREATE TABLE galette_tmppasswds ... | ||
+ | (Les erreurs sur les opérations DROP et RENAME peuvent être ignorées) | ||
+ | Les tables ont été correctement créées. | ||
+ | </ | ||
+ | Ah, c' | ||
+ | |||
+ | < | ||
+ | Alors, utilisateur " | ||
+ | |||
+ | < | ||
+ | Fichier de configuration crée (includes/ | ||
+ | Paramètres sauvegardés dans la base de données | ||
+ | </ | ||
+ | |||
+ | Voyons ce fichier immédiatement après installation : | ||
+ | < | ||
+ | -rw------- 1 xavier xavier 298 2009-11-07 19:25:45 includes/ | ||
+ | </ | ||
+ | Les permissions sur ce fichier sont nickels. Est-ce volontaire ? D' | ||
+ | |||
+ | < | ||
+ | Une fois le script d' | ||
+ | fonctionne, il est fortement conseillé de supprimer le dossier install/. | ||
+ | </ | ||
+ | Voilà un sage conseil. | ||
+ | |||
+ | ==== Utilisation ==== | ||
+ | On arrive ensuite sur galette/ | ||
+ | ==== Petite balade dans le code ==== | ||
+ | |||
+ | Dans index.php, à partir de la ligne 56 : | ||
+ | <code php> | ||
+ | if ( | ||
+ | ($_POST[" | ||
+ | ($_POST[" | ||
+ | ) | ||
+ | { | ||
+ | $_SESSION[" | ||
+ | $_SESSION[" | ||
+ | $_SESSION[" | ||
+ | $_SESSION[" | ||
+ | dblog(" | ||
+ | } | ||
+ | </ | ||
+ | Intéressant : si on arrive à lire le MD5 du mot de passe de l' | ||
+ | |||
+ | Dans includes/ | ||
+ | <code php> | ||
+ | function txt_sqls($champ) { | ||
+ | return "'" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Cette fonction, utilisée 6 fois dans le reste du code, paraît un peu légère par rapport à des fonctions plus spécialisées telles que : | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | Observons maintenant les diverses bibliothèques fournies avec galette : | ||
+ | ^ Lib ^ Version utilisée | ||
+ | | [[http:// | ||
+ | | [[http:// | ||
+ | | [[http:// | ||
+ | |||
+ | La plupart des autres fichiers font état d'un copyright 2003-2004. | ||