=== Jumpstarter === Contributors: jumpstarter, zeuclas Tags: jumpstarter, url handling Requires at least: 4.2 Tested up to: 4.3.1 Stable tag: 19.2 License: Unlicense License URI: http://unlicense.org Jumpstarter WordPress integration plugin that simplifies running WordPress in a container environment. == Description == This is a plugin for WordPress installations in a Jumpstarter container environment. The main purpose is to combat the problems one encounters when running WordPress in a container environment under nginx behind multiple http proxy layers. The plugin is divided into two distinct parts. 1. The installer/environment synchronizer (`js-init.php`). 2. The actual plugin (`jumpstarter.php`). = The installer = The installer takes care of the following: 1. Install WordPress if `/app/code/wp-db` does not exist. 2. Sync the `/app/env.json` and `/app/code/wp-env.json` environments with WordPress. Install is done the following way: 1. Configure security salts in `wp-config.php` if not done already. 2. Clean up previous failed or aborted installations. 3. Install WordPress to RAM (in `/tmp`) to get rid of waiting for disk sync. 4. Activating core plugins (`jumpstarter` and `sqlite-integration`). 5. Setting the theme specified in `wp-env.json`. 6. Run WordPress install hooks registered with `add_action("jumpstarter_install",...)`. 7. Atomically move the database in place. This allows the install to be idempotent. 8. Restart by execve'ing itself so environment sync can run. Environment sync is done the following way: 1. Setting nginx `fastcgi_param HTTPS` to "on"/"off" depending on configured domains for the container. 2. Opening and parsing `/app/code/wp-env.json`. 3. If the `siteurl` has changed it performs a safe search/replace of `siteurl` in `wp_posts`, `wp_postmeta` and `wp_options`. 4. Set theme specified in `theme` if not changed by the user. 5. Update options specified in `options`. 6. Opening and parsing `/app/env.json`. 7. Update user details if they are admin default. 8. Call the hook `jumpstarter_sync_env` to let themes/plugins modify database state depending on the env. It also prints logging and error information to `stderr`. = The plugin = The plugin takes care of the following: - Sandboxes all users and overrides any user capabilities defined in `/app/code/wp-env.json`. - Injects a login link to support Jumpstarter [reflected login](https://github.com/jumpstarter-io/help/wiki/App-Portals#reflected-login) on `/wp-login.php`. - Handles login requests from Jumpstarter by authenticating posts of `jumpstarter-auth-token`. On successful authentication the user is logged in as the admin user. - Hooks in on `set_url_scheme` and uses the env to determine if the url should use http or https. - Disables the possibility to delete the theme that's specified in the wp env. - Rewrites urls passed to `wp_enqueue_script` and `wp_enqueue_style` depending on if SSL is on or not. == Installation == = Installation Procedure = 1. Unzip into `/wp-content/plugins/` directory. 2. Activate the plugin in the WordPress admin panel. == Frequently Asked Questions == = Can this plugin be used outside of the Jumpstarter environment? = Yes. It is possible to use the plugin in any WordPress installation. However, when not running in a Jumpstarter container environment the functionality of the plugin is reduced. Features when not running in a Jumpstarter container: - Hooks in on `set_url_scheme` and uses the env to determine if the url should use http or https. - Rewrites urls passed to `wp_enqueue_script` and `wp_enqueue_style` depending on if SSL is on or not. == Changelog == = 19.2 = * Fixes issue with imported WordPress installs that use custom table_prefix. * New password reset functionality = 19.1 = * Fixes migration issues if the database was created outside of the container. * Updates legacy table wp_links on siteurl change. = 19 = * Fix minor display error on wp-login = 18.1 = * Fix packaging error = 18.0 = * Rewritten init process to fix issues with php scoping = 17.0 = * Remove the last restrictions on user plugin management. * Add help on login page for the event of using a non-secure domain. * Improve code documentation. * Add compatibility mode for non Jumpstarter container environments. = 16.0 = * Open up the plugin for the new Jumpstarter architecture changes (increase the freedom). * Auto generate WordPress security salts on install. * Modify nginx `fastcgi_param HTTPS` on init run. = 15.0 = * Refactor token authentication functionality, move out to common library. = 14.0 = * jumpstarter: bugfix JS_WP_User::has_cap. call parent function with all arguments. * Store old siteurl as "js_siteurl_old" in env sync phase if siteurl change. * js-init: ensure core plugins load order on env sync. = 13.0 = * Add "jumpstarter_install" hook in install stage. * Enable users to deactivate plugins that are specified in both plugins and user_plugins. * js-init: add `jumpstarter_sync_env` action at end of env sync to allow plugins/themes to run env change dependent code. = 12.0 = * Wrap sync of env with WordPress in transaction. * Use js subclasses of sqlite-integration for multiple statement transactions. = 11.0 = * Take care of serialized values in updating of meta and options. = 10.0 = * Update post meta and options on change of site url. = 9.0 = * Enable user plugins. * Add support for login_redirect filter on token auth. * Set user information to defaults on install from state db. = 8.0 = * Add support for install hooks that are run while db in memory. * Add support for installing instance from init state. = 7.0 = * Allow reflected login link to work in session expired iframe. = 6.0 = * Add support for specifying wp options in env. = 5.0 = * Allow plugin activation/deactivation from cli. * Run hooks when activating plugins. = 4.0 = * Fix error when activating jumpstarter plugin from redefining WP_SITEURL. = 3.0 = * Break out and optimize js_get_env(). = 2.0 = * js-init: always use admin username on install. * Let env define the plugins to activate, hide plugins in admin menu. * Update readme to reflect 2.0 changes. = 1.0 = * Initial version == Upgrade Notice == = 17.0 = This update adds login help and removes the last plugin restrictions. = 16.0 = Addresses some issues when running WordPress on a non HTTPS domain in the container environment.