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.
- [0.3.1] - 2017-12-07
- [0.3.0] - 2017-11-30
- [0.2.14] - 2017-11-17
- [0.2.13] - 2017-11-14/15
- [0.2.12] - 2017-11-09
- [0.2.11] - 2017-11-08
- [0.2.10] - 2017-11-08
- [0.2.9] - 2017-11-07
- [0.2.8] - 2017-11-06
- [0.2.7] - 2017-11-01
- [0.2.6] - 2017-10-31
- [0.2.5] - 2017-10-20
- [0.2.4] - 2017-10-19
- [0.2.3] - 2017-10-10
- [0.2.2] - 2017-10-08
- [0.2.1] - 2017-10-05
- 2017-09-20
- [0.1.0] - 2017-09-14
PR #129 PR #134 PR #137 PR #139 PR #140 PR #141 PR #144
High level:
- (#129) cronjobs running every day for full backup, every hour for incremental backups
- (#134) Updated documentation with information related to go-live (production!)
- (#137) disable header and background from admin apprence menu
- (#141) Activate coming soon mode by default for each site
- (#140) Enable mod_remoteip: allows to use "Require ip" apache2 httpd ACL and logs correct client IP.
- (#140) Permet de restreindre wp_admin au réseau EPFL
- (#140) Permet à mod_security d'appliquer les règles sur la véritable IP client
Low level:
- (#139) Shortcut command to log in to the httpd container : make httpd
- (#139) added the vim package
- (#140) enable mod_remoteip
- (#140) configure X-Forwarded-For Header
- (#140) configure SLB and Openshift routers as trusted proxies
- (#140) change logging format to not use raw header but processed data
- (#144) Limit number of pods that (successfully) run the jobs
- (#144) fix args passed to generate_many
- (#144) fixed schedule of cronjob
- (#144) added label to cronjob
PR #99 PR #69 PR #100 PR #102 PR #105 PR #112 PR #113 PR #125 PR #127 PR #128
High level:
- (#69) New WP site has EPFL look and feel
- (#69) Columns
installs_locked
andupdates_automatic
from source of trust are now taken into account - (#99) Add plugin tequila and plugin accred with accred rights
- (#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. - (#102) Suppression de la sidebar
- (#105) Amélioration de la sécurité selon les recommendations de l'OWASP.
- (#105) Nouveaux sites installé avec la version
latest
de WordPress au lieu de4.8
- (#112) enriched INSTALL_DETAILED documentation with setup of brand new servers
- (#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
- (#113) New command:
make functional-tests
, launchingtest_upload.py
andtest_jahia2wp.py
- (#125) Delete owner_id and responsible_id
- (#125) unit_name parameter is now mandatory
- (#127) Disable deactivate option in bulk action plugins
- (#128) Command
clean
do not stop on errors anymore. Replaced option--force
by--stop-on-errors
. - (#128) Command
generate
takes--unit_name
as an optional option
Low level:
- (#69) PluginList takes into account the values from
installs_locked
andupdates_automatic
- (#69) If installed, those two plugins are installed in mu-plugin (in order to forbid their removal)
- (#69) In tests, replaced epfl_infoscience.zip with redirection.zip in order to avoid conflict with mu-plugin EPFL-SC-Infoscience
- (#99) Ajout d'un super admin par défaut
- (#99) Ajout de l'unité à partir de la source de vérité
- (#99) Les menus de configurations de ces 2 plugins sont cachés
- (#100) Ajout d'un champ
theme_faculty
dans la source de vérité + gestion de celui-ci dans le code. - (#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 - (#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. - (#100) Mise à jour des fichiers "source de vérité" pour que ça fonctionne avec le nouveau champ.
- (#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). - (#102) Suppression des widgets de la sidebar de la homepage
- (#105) Mises-à-jour automatiques du Core, des plugins et thèmes
- (#105) Ajout du module Apache ModSecurity
- (#105) Modification de la configuration WordPress pour empêcher l'édition en ligne des plugins et thèmes
- (#112) added names of new pods in valid values (settings.py for now)
- (#112) created dedicated Makefile.c2c in order to bootstrap a environment in a new pod
- (#113) automatic fetching of the IP of the httpd docker (instead of hard-code in settings.py)
- (#113) test_uploads moved out of
jahia2wp/src/.../tests
intojahia2wp/functional_tests
- (#113) new entries in makefile and makefile.mgmt to run pytest in newly created dir above
- (#113) new var OPENSHIFT_ENV in settings.py to define which pod to use
- (#128) review tests to use mocks for LDAP
- (#128) added label on httpd container and use it in test_upload instead of DOCKER_IP
High level changes:
- Tagged version after Sprint_S1711
- (#77) Need to reset DB (using 5.5 instead of 5.7) and containers (images location changed)
Low level changes:
- (#77) added Dockerfiles image to build up
httpd
andmgmt
docker images - (#77) aligned mariaDB version (5.5) with the one used on C2C infra
PR #70 PR #75 PR #76 PR #78 PR #80 PR #81
High level changes:
- (#70) Infos de logging modifiées
- (#70) Ajout de la gestion de "use cases" d'installation/désinstallation" de plugins spécifiques
- (#75) added option
--force
on commandclean
- (#76) Nouvelle option pour lister les plugins (
list-plugins
) ajoutée dansjahia2wp.py
. Elle permet de lister les plugins qui seront installés (ainsi que leur config si on la veut) pour un site (donné parwp_env
etwp_url
) - (#78) Added documentation and template to create cronjobs on openshift
- (#80) added auto-configuration of polylang (with two languages: fr, en)
- (#80) update
make vars
to display all env vars used in project - (#81) Cette PR ajoute un test fonctionnel à savoir : tester l'upload d'un média dans un site WP.
Low level changes:
- (#70) Ajout de check si un plugin est installé ou pas avant de tenter de l'installer ou de le désinstaller.
- (#75) removed IF EXISTS when dropping user.
- (#75) by-passing check_config in jahia2wp.py:clean when using option --force
- (#76) Fonction pour afficher une liste de plugins qui va être installée.
- (#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.
- (#76) Modifications dans
test_jahia2wp.py
pour utiliser des variables pour les infos sur les sites à tester au lieu de hard-coder à chaque fois. - (#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
- (#80) refactored code related to plugins -> new package
wordpress.plugins
- (#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.
High level changes:
- Possibilité de désinstaller un plugin (installé de base avec WordPress ou installé depuis une config générique).
- Mise à jour de la liste des plugins (sans configuration) à installer
- Suppression automatique des plugins installés automatiquement avec WordPress et qui n'étaient pas dans la liste données dans l'issue #52
- 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:
- Ajout de tests unitaires
- 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. - Correction d'un bug dans l'appel à la fonction d'extraction de la configuration d'un plugin.
High level:
- Added miniorange generic configuration
- Added miniorange sample specific configuration
High level:
- la commande
clean
accepte de ne pas avoir de DB et nettoie tout de même les fichiers - les commandes
generate
etgenerate-many
acceptent des accents dans le titre Wordpress generate-many
n'affiche pas de message d'erreur si on passe le meme SCIPER_ID dans les colonnes onwer et responsible
Low level:
- ajout d'un test de génération de site (avec accent et même ids) dans test_wordpress
- utilisation de
sys.stdout.encoding
dans run_command dans la commande - comme c'était déjà le cas pour le output -> l'encoding est passé en kwarg de la fonction
High level:
- Installation et configuration du plugin
MainWP-Child
avec clef "secrète" - Added procedure in HOWTOs to explain how to update WP php files from historical repository
Low level:
- Extraction de la configuration du plugin
MainWP-Child
puis modification du nécessaire pour l'ajouter à la liste des plugins à installer. - La clef secrète est actuellement mise dans la configuration générique du plugin.
- On ne créé plus d'instance de
WPSite
dansjahia2wp.py
. C'est désormais fait dansWPPluginConfigExtractor
- Ajout des scripts js pour le bon fonctionnement du menu déroulant du header EPFL: epfl-si/jahiap#126
- Le fichier "modernizr.custom.js" est renommé "modernizr.js": epfl-si/jahiap#279
- 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-si/jahiap#279
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[...] |
high level:
-
new commands
backup
andbackup-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 ...
-
Backups are
full
by default, but can beinc
remental by using option--backup-type
$ python jahia2wp.py backup $WP_ENV http://localhost --backup-type=inc ...
-
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
High level changes:
- 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
- les commandes
generate
etgenerate-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:
- le fichier config.py a été éclaté en config.py, plugins.py et themes.py
- 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 pluginsWPPluginConfigExtractor
(hérite deWPPluginConfigManager
) 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 YAMLWPPluginConfigRestore
(hérite deWPPluginConfigManager
) permet de restaurer les informations de configuration d'un plugin à partir d'une instance deWPPluginConfigInfos
(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 parWPPluginConfigRestore
afin d'être mises dans la DB.
- 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. - 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. - Les nouvelles classes créées sont utilisées pour paramétrer les plugins lors de la génération d'un site.
high level:
- Installation and activation of plugins
- add-to-any
- BasicAuth
- black-studio-tinymce-widget
- tinymce-advanced
- epfl_infoscience
- Configuration of add-to-any
- Create Main menu
low level:
- possibilité de surcharger le port ssh du conteneur de
mgmt
avec la variableWP_PORT_SSHD
, et celui du conteneur phpmyadmin avecWP_PORT_PHPMA
.
high level:
- added command
download
- added vars
JAHIA_*
in.env.sample
, please update your.env
file to make use of the download command - Ajout d'un pull des images lorsque l'on fait un 'up'
- Ajout d'une règle 'clean' pour nettoyer les fichiers WordPress et ceux de la DB en local.
low level:
- migrate crawler from jahiap
- break code into modules
SessionHandler
,JahiaConfig
,JahiaCrawler
- support username, password, host from either .env or CLI arguments
- added tests
Features deprecated in 0.2.3
check-one
,generate-one
andclean-one
deprecated. Usecheck
,generate
andclean
instead
high level:
- added command
version
- added command
admins
- added command
inventory
- improved command
check-one
: actually checks that config is ok with wp-cli - improved command
generate-one
with parameter--admin-password
to force password for admin instead of creating a random one - improved CLI messages when running jahia2wp.py script
low level:
- improved commands (
run_command
,run_mysql
,run_wp_cli
), which actually return output, do not displaystderr
, but keep it available on error cases - extended
Utils
to read csv from strings and to providerun_command
- improved
WPSite
with a factory method which take openshift_env and path instead of url - improved model
WPUser
to get role - improved
WPRawConfig
which now gives access to wp-config variables, and users openshift_env and url - used
veritas.validators
in wordpress models - added deprecated decorator in utils.py
No need to rely on fixed container names
- Find containers by com.docker.compose.service label in Travis
- Find the "mgmt" container by an ad-hoc label for "make exec"
- Inter-Docker references by host name (e.g. "db") keep working, thanks to Docker's magic
Organize the Makefile rules to make them more fool-proof
- Make as many targets as possible idempotent (= won't hurt if run twice)
- Split out Makefile.mgmt for targets that only make sense from inside Docker; have that file show up as "the" Makefile from the container (by way of a Docker volume)
- Make the "make bootstrap-mgmt" step implicit for the interactive use case (vjahia2wp)
- possibilité de surcharger les variables du Makefile
WP_ENV
,WP_PORT_HTTP
etWP_PORT_HTTPS
par les celles d'environnement ou par la ligne de commande (par exempleWP_PORT_HTTP=81 WP_ENV=my-env make vars
)
- création et suppression d'un Wordpress (avec le thème EPFL) par
generate-one
etclean-one
- création de plusieurs sites à partir d'un CSV avec
generate-many
- consolidation du docker-compose et du Makefile pour créer un environnement local identique à l'environnement de production. Description dans le
README
et leINSTALL_DETAILED
- added .env(.sample) file to define all environment vars
- updated make, docker-compose consequently
- added phpmyadmin in docker-compose
- updated
README
- initial revision