Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Table of releases

[0.3.1] - 2017-12-07

PR #129 PR #134 PR #137 PR #139 PR #140 PR #141 PR #144

High level:

  1. (#129) cronjobs running every day for full backup, every hour for incremental backups
  2. (#134) Updated documentation with information related to go-live (production!)
  3. (#137) disable header and background from admin apprence menu
  4. (#141) Activate coming soon mode by default for each site
  5. (#140) Enable mod_remoteip: allows to use "Require ip" apache2 httpd ACL and logs correct client IP.
  6. (#140) Permet de restreindre wp_admin au réseau EPFL
  7. (#140) Permet à mod_security d'appliquer les règles sur la véritable IP client

Low level:

  1. (#139) Shortcut command to log in to the httpd container : make httpd
  2. (#139) added the vim package
  3. (#140) enable mod_remoteip
  4. (#140) configure X-Forwarded-For Header
  5. (#140) configure SLB and Openshift routers as trusted proxies
  6. (#140) change logging format to not use raw header but processed data
  7. (#144) Limit number of pods that (successfully) run the jobs
  8. (#144) fix args passed to generate_many
  9. (#144) fixed schedule of cronjob
  10. (#144) added label to cronjob

[0.3.0] - 2017-11-30

PR #99 PR #69 PR #100 PR #102 PR #105 PR #112 PR #113 PR #125 PR #127 PR #128

High level:

  1. (#69) New WP site has EPFL look and feel
  2. (#69) Columns installs_locked and updates_automatic from source of trust are now taken into account
  3. (#99) Add plugin tequila and plugin accred with accred rights
  4. (#100) Ajout de 2 paramètres optionnels à generate pour pouvoir dire quel thème et quelle faculté de thème (couleur) on veut pour le site.
  5. (#102) Suppression de la sidebar
  6. (#105) Amélioration de la sécurité selon les recommendations de l'OWASP.
  7. (#105) Nouveaux sites installé avec la version latest de WordPress au lieu de 4.8
  8. (#112) enriched INSTALL_DETAILED documentation with setup of brand new servers
  9. (#112) change validation of openshift environments: validation is now done checking for the appropriate directory on the file system, instead of checking against a list of hardcoded values
  10. (#113) New command: make functional-tests, launching test_upload.py and test_jahia2wp.py
  11. (#125) Delete owner_id and responsible_id
  12. (#125) unit_name parameter is now mandatory
  13. (#127) Disable deactivate option in bulk action plugins
  14. (#128) Command clean do not stop on errors anymore. Replaced option --force by --stop-on-errors.
  15. (#128) Command generate takes --unit_name as an optional option

Low level:

  1. (#69) PluginList takes into account the values from installs_locked and updates_automatic
  2. (#69) If installed, those two plugins are installed in mu-plugin (in order to forbid their removal)
  3. (#69) In tests, replaced epfl_infoscience.zip with redirection.zip in order to avoid conflict with mu-plugin EPFL-SC-Infoscience
  4. (#99) Ajout d'un super admin par défaut
  5. (#99) Ajout de l'unité à partir de la source de vérité
  6. (#99) Les menus de configurations de ces 2 plugins sont cachés
  7. (#100) Ajout d'un champ theme_faculty dans la source de vérité + gestion de celui-ci dans le code.
  8. (#100) Modification du champ theme dans la source de vérité pour le mettre en minuscule (afin de réellement correspondre au nom du thème) + modif de la RegEx de contrôle
  9. (#100) Le nom du thème par défaut a été mis dans une variable (settings.DEFAULT_THEME_NAME) car il commençait à se retrouver à plein d'endroits.
  10. (#100) Mise à jour des fichiers "source de vérité" pour que ça fonctionne avec le nouveau champ.
  11. (#100) Modification du fichier du thème pour voir que la classe (=theme_faculty) est bien ajoutée à la balise <body> (cette modif va aussi être faite dans les fichiers du thème gérés par Aline).
  12. (#102) Suppression des widgets de la sidebar de la homepage
  13. (#105) Mises-à-jour automatiques du Core, des plugins et thèmes
  14. (#105) Ajout du module Apache ModSecurity
  15. (#105) Modification de la configuration WordPress pour empêcher l'édition en ligne des plugins et thèmes
  16. (#112) added names of new pods in valid values (settings.py for now)
  17. (#112) created dedicated Makefile.c2c in order to bootstrap a environment in a new pod
  18. (#113) automatic fetching of the IP of the httpd docker (instead of hard-code in settings.py)
  19. (#113) test_uploads moved out of jahia2wp/src/.../tests into jahia2wp/functional_tests
  20. (#113) new entries in makefile and makefile.mgmt to run pytest in newly created dir above
  21. (#113) new var OPENSHIFT_ENV in settings.py to define which pod to use
  22. (#128) review tests to use mocks for LDAP
  23. (#128) added label on httpd container and use it in test_upload instead of DOCKER_IP

[0.2.14] - 2017-11-17

PR #77

High level changes:

  1. Tagged version after Sprint_S1711
  2. (#77) Need to reset DB (using 5.5 instead of 5.7) and containers (images location changed)

Low level changes:

  1. (#77) added Dockerfiles image to build up httpd and mgmt docker images
  2. (#77) aligned mariaDB version (5.5) with the one used on C2C infra

[0.2.13] - 2017-11-14/15

PR #70 PR #75 PR #76 PR #78 PR #80 PR #81

High level changes:

  1. (#70) Infos de logging modifiées
  2. (#70) Ajout de la gestion de "use cases" d'installation/désinstallation" de plugins spécifiques
  3. (#75) added option --force on command clean
  4. (#76) Nouvelle option pour lister les plugins (list-plugins) ajoutée dans jahia2wp.py. Elle permet de lister les plugins qui seront installés (ainsi que leur config si on la veut) pour un site (donné par wp_env et wp_url)
  5. (#78) Added documentation and template to create cronjobs on openshift
  6. (#80) added auto-configuration of polylang (with two languages: fr, en)
  7. (#80) update make vars to display all env vars used in project
  8. (#81) Cette PR ajoute un test fonctionnel à savoir : tester l'upload d'un média dans un site WP.

Low level changes:

  1. (#70) Ajout de check si un plugin est installé ou pas avant de tenter de l'installer ou de le désinstaller.
  2. (#75) removed IF EXISTS when dropping user.
  3. (#75) by-passing check_config in jahia2wp.py:clean when using option --force
  4. (#76) Fonction pour afficher une liste de plugins qui va être installée.
  5. (#76) Pas de test spécifique ajouté pour ceci car c'est juste de l'affichage et la génération de la liste de plugins pour un site est déjà testée.
  6. (#76) Modifications dans test_jahia2wp.py pour utiliser des variables pour les infos sur les sites à tester au lieu de hard-coder à chaque fois.
  7. (#76) Modification de WPSite.name qui joue le role d'ID du site WordPress pour l'instant. Pour un sous-domaine, la valeur retournée est le sous-domaine à la place du FQDN
  8. (#80) refactored code related to plugins -> new package wordpress.plugins
  9. (#81) A noter que pour que les tests fonctionnent depuis le conteneur on utilise l'IP de Docker "172.17.0.1" qui potentiellement peut changer dans le futur.

[0.2.12] - 2017-11-09

PR #64

High level changes:

  1. Possibilité de désinstaller un plugin (installé de base avec WordPress ou installé depuis une config générique).
  2. Mise à jour de la liste des plugins (sans configuration) à installer
  3. Suppression automatique des plugins installés automatiquement avec WordPress et qui n'étaient pas dans la liste données dans l'issue #52
  4. A noter que quand simple-sitemap est installé, la première fois qu'on retourne sur la page d'administration, on est redirigé sur la page de "démo" du plugin... pas trouvé où il était mis dans la DB qu'il fallait afficher cette page...

Low level changes:

  1. Ajout de tests unitaires
  2. Champ action ajouté dans le fichier de configuration YAML du plugin. Celui-ci permet de dire si on veut installer ou désinstaller un plugin. Si pas présent, c'est que le plugin doit être installé. Mise à jour du code en conséquence.
  3. Correction d'un bug dans l'appel à la fonction d'extraction de la configuration d'un plugin.

[0.2.11] - 2017-11-08

Issue #13

High level:

  1. Added miniorange generic configuration
  2. Added miniorange sample specific configuration

[0.2.10] - 2017-11-08

PR #67

High level:

  1. la commande clean accepte de ne pas avoir de DB et nettoie tout de même les fichiers
  2. les commandes generate et generate-many acceptent des accents dans le titre Wordpress
  3. generate-many n'affiche pas de message d'erreur si on passe le meme SCIPER_ID dans les colonnes onwer et responsible

Low level:

  1. ajout d'un test de génération de site (avec accent et même ids) dans test_wordpress
  2. utilisation de sys.stdout.encodingdans run_command dans la commande
  3. comme c'était déjà le cas pour le output -> l'encoding est passé en kwarg de la fonction

[0.2.9] - 2017-11-07

PR #66 PR #65

High level:

  1. Installation et configuration du plugin MainWP-Child avec clef "secrète"
  2. Added procedure in HOWTOs to explain how to update WP php files from historical repository

Low level:

  1. Extraction de la configuration du plugin MainWP-Child puis modification du nécessaire pour l'ajouter à la liste des plugins à installer.
  2. La clef secrète est actuellement mise dans la configuration générique du plugin.
  3. On ne créé plus d'instance de WPSite dans jahia2wp.py. C'est désormais fait dans WPPluginConfigExtractor
  4. Ajout des scripts js pour le bon fonctionnement du menu déroulant du header EPFL: epfl-idevelop/jahiap#126
  5. Le fichier "modernizr.custom.js" est renommé "modernizr.js": epfl-idevelop/jahiap#279
  6. J'ai enlevé l'appel de toutes les images de fond inutiles dans la feuille de style epfl.scss (les images sont remplacées par des pictos avec FontAwesome): epfl-idevelop/jahiap#279

[0.2.8] - 2017-11-06

PR #55

Updated Theme from following bugfixes on repo jahiap:

Id Description
240 Texte centré en vertical sur WP mais pas sur Jahia
129 Les titres sont tout en majuscule
188 Mauvais format des listes à puce
92 Les ligne de tableau invisible sont visibles
85 Menu déroulant "personnes" en haut à droite ne déroule pas
192 Affichage d'un rectangle gris à la place d'une division vide
170 La boite rouge dans le corps de page ne se colle pas à droite
169 Une div se colle à gauche au lieu de flotter à droite
89 Séparateur gris clair en trop dans les tableaux
239 couleur de background de paragraphe manquante
225 Dans les paragraphes des pages, il manque le surlignage en couleur de cert[...]

[0.2.7] - 2017-11-01

PR #57

high level:

  1. new commands backup and backup-many to backup one single site or all sites in source of trust.

    $ python jahia2wp.py backup $WP_ENV http://localhost
    ...
    $ python jahia2wp.py backup-many path/to/csv
    ...
    
  2. Backups are full by default, but can be incremental by using option --backup-type

    $ python jahia2wp.py backup $WP_ENV http://localhost --backup-type=inc
    ...
    
    1. new environment variable BACKUP_PATH to define where to store backups (by default: jahia2wp/data/backups)

low level:

A backup of a WordPress site relies on a WPConfig, and is called/used in a similar way as WPGenerator. It creates three files: - a .tar of all WP files (php, assets, media) - a .list reference file for incremental backups - a .sql dump of the database

Backups are stored in BACKUP_PATH (by default: jahia2wp/data/backups), with the following name convention: <wp_site_name>[_<timestamp>]_fullN[_incM].<tar|list|sql>

DISCLAIMER: next iteration might revise this structure for something more easily exploitable, such as:

backups
├── site_1
│   ├── 2017-10-31
│   │   ├── full-201710310945.tar
│   │   ├── inc-201711012300.tar
│   │   ├── inc-201711022301.tar
│   │   └── inc-201711032310.tar
│   └── 2017-11-06
│       └── full-201711060946.tar
├── site_2
│   └── 2017-11-06
│       ├── full-201711060947.tar
│       └── inc-201711060946.tar
└── site_3

[0.2.6] - 2017-10-31

PR #54

High level changes:

  1. L'extraction des informations de configuration d'un plugin est faite de manière interactive (le script se met en attente jusqu'à ce que la configuration soit faite). Une option extract-plugin-config a été ajoutée à jahia2wp.py
  2. les commandes generate et generate-many utilisent les nouveaux fichiers de configuration des plugins (YAML) de manière transparente pour installer et configurer les plugins

DISCLAIMER : Les fichiers de configuration sont pour l'instant créés manuellement, de manière indépendante de la source de vérité. Une prochaine itération reverra ce système pour redonner la main à la source de vérité, et pouvoir générer tous les fichiers de configuration automatiquement

Low level changes:

  1. le fichier config.py a été éclaté en config.py, plugins.py et themes.py
  2. Les classes suivantes ont été ajoutées pour la gestion des plugins (dans plugins.py):
    • WPPluginConfigManager fourni des accès MySQL et des informations sur la structure des tables où sont stockées les informations de configuration des plugins
    • WPPluginConfigExtractor (hérite de WPPluginConfigManager) permet d'extraire les informations de configuration d'un plugin (stockées potentiellement dans X tables différentes) et de les sauver dans un fichier YAML
    • WPPluginConfigRestore (hérite de WPPluginConfigManager) permet de restaurer les informations de configuration d'un plugin à partir d'une instance de WPPluginConfigInfos (décrite ci-dessous).
    • WPPluginConfigList fourni la liste des plugins à installer/configurer pour un site web donné par un id unique (cet ID doit encore être ajouté dans la source de vérité).
    • WPPluginConfigInfos permet de reconstruire les informations de configuration d'un plugin à partir d'une configuration générique à X sites et d'une potentielle configuration spécifique pour un site donné. Ces informations sont ensuite utilisées par WPPluginConfigRestore afin d'être mises dans la DB.
  3. Du fait que l'on doit potentiellement remettre des options dans d'autres tables que la table "options" et que WPCLI ne permet que d'ajouter des informations dans cette dite-table, l'utilisation d'un package pip (PyMYSQL) pour faire les requêtes dans la DB a été faite. WPCLI n'est donc plus utilisé pour mettre les options dans la DB, tout est fait depuis le package.
  4. Pour ce qui est de la configuration spécifique des plugins, pour le moment, seule la table options est gérée par le code.
  5. Les nouvelles classes créées sont utilisées pour paramétrer les plugins lors de la génération d'un site.

[0.2.5] - 2017-10-20

PR #51

high level:

  1. Installation and activation of plugins
  2. add-to-any
  3. BasicAuth
  4. black-studio-tinymce-widget
  5. tinymce-advanced
  6. epfl_infoscience
  7. Configuration of add-to-any
  8. Create Main menu

low level:

[0.2.4] - 2017-10-19

PR #48 & PR #50

high level: 1. added command download 1. added vars JAHIA_* in .env.sample, please update your .env file to make use of the download command 1. Ajout d'un pull des images lorsque l'on fait un 'up' 1. Ajout d'une règle 'clean' pour nettoyer les fichiers WordPress et ceux de la DB en local.

low level: 1. migrate crawler from jahiap 1. break code into modules SessionHandler, JahiaConfig, JahiaCrawler 1. support username, password, host from either .env or CLI arguments 1. added tests

[0.2.3] - 2017-10-10

PR #33

Features deprecated in 0.2.3 1. check-one, generate-one and clean-one deprecated. Use check, generate and clean instead

high level: 1. added command version 1. added command admins 1. added command inventory 1. improved command check-one: actually checks that config is ok with wp-cli 1. improved command generate-one with parameter --admin-password to force password for admin instead of creating a random one 1. improved CLI messages when running jahia2wp.py script

low level: 1. improved commands (run_command, run_mysql, run_wp_cli), which actually return output, do not display stderr, but keep it available on error cases 1. extended Utils to read csv from strings and to provide run_command 1. improved WPSite with a factory method which take openshift_env and path instead of url 1. improved model WPUser to get role 1. improved WPRawConfig which now gives access to wp-config variables, and users openshift_env and url 1. used veritas.validators in wordpress models 1. added deprecated decorator in utils.py

PR #41

No need to rely on fixed container names

[0.2.2] - 2017-10-08

PR #40

Organize the Makefile rules to make them more fool-proof

[0.2.1] - 2017-10-05

Commit 7c0365e

PR #22

2017-09-20

PR #5

[0.1.0] - 2017-09-14