{"id":38194,"date":"2015-08-13T22:59:10","date_gmt":"2015-08-13T22:59:10","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/jumpstarter\/"},"modified":"2015-10-21T11:54:14","modified_gmt":"2015-10-21T11:54:14","slug":"jumpstarter","status":"publish","type":"plugin","link":"https:\/\/sv.wordpress.org\/plugins\/jumpstarter\/","author":14548869,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"19.2","stable_tag":"19.2","tested":"4.3.34","requires":"4.2","requires_php":"","requires_plugins":"","header_name":"Jumpstarter","header_author":"Jumpstarter","header_description":"","assets_banners_color":"","last_updated":"2015-10-21 11:54:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/jumpstarter-io\/wp-jumpstarter","header_author_uri":"https:\/\/jumpstarter.io\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1096,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"17.0":"<p>This update adds login help and removes the last plugin restrictions.<\/p>","16.0":"<p>Addresses some issues when running WordPress on a non HTTPS domain in the container environment.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["17.0","17.1","18.0","18.1","19","19.1","19.2"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[38779,38780],"plugin_category":[],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-38194","plugin","type-plugin","status-publish","hentry","plugin_tags-jumpstarter","plugin_tags-url-handling","plugin_committers-jumpstarter","plugin_committers-zeuclas"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/jumpstarter.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>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.<\/p>\n <p>The plugin is divided into two distinct parts.<\/p>\n <ol>\n<li>The installer\/environment synchronizer (<code>js-init.php<\/code>).<\/li>\n<li>The actual plugin (<code>jumpstarter.php<\/code>).<\/li>\n<\/ol>\n <h4>The installer<\/h4>\n <p>The installer takes care of the following:<\/p>\n <ol>\n<li>Install WordPress if <code>\/app\/code\/wp-db<\/code> does not exist.<\/li>\n<li>Sync the <code>\/app\/env.json<\/code> and <code>\/app\/code\/wp-env.json<\/code> environments with WordPress.<\/li>\n<\/ol>\n <p>Install is done the following way:<\/p>\n <ol>\n<li>Configure security salts in <code>wp-config.php<\/code> if not done already.<\/li>\n<li>Clean up previous failed or aborted installations.<\/li>\n<li>Install WordPress to RAM (in <code>\/tmp<\/code>) to get rid of waiting for disk sync.<\/li>\n<li>Activating core plugins (<code>jumpstarter<\/code> and <code>sqlite-integration<\/code>).<\/li>\n<li>Setting the theme specified in <code>wp-env.json<\/code>.<\/li>\n<li>Run WordPress install hooks registered with <code>add_action(\"jumpstarter_install\",...)<\/code>.<\/li>\n<li>Atomically move the database in place. This allows the install to be idempotent.<\/li>\n<li>Restart by execve'ing itself so environment sync can run.<\/li>\n<\/ol>\n <p>Environment sync is done the following way:<\/p>\n <ol>\n<li>Setting nginx <code>fastcgi_param HTTPS<\/code> to \"on\"\/\"off\" depending on configured domains for the container.<\/li>\n<li>Opening and parsing <code>\/app\/code\/wp-env.json<\/code>.<\/li>\n<li>If the <code>siteurl<\/code> has changed it performs a safe search\/replace of <code>siteurl<\/code> in <code>wp_posts<\/code>, <code>wp_postmeta<\/code> and <code>wp_options<\/code>.<\/li>\n<li>Set theme specified in <code>theme<\/code> if not changed by the user.<\/li>\n<li>Update options specified in <code>options<\/code>.<\/li>\n<li>Opening and parsing <code>\/app\/env.json<\/code>.<\/li>\n<li>Update user details if they are admin default.<\/li>\n<li>Call the hook <code>jumpstarter_sync_env<\/code> to let themes\/plugins modify database state depending on the env.<\/li>\n<\/ol>\n <p>It also prints logging and error information to <code>stderr<\/code>.<\/p>\n <h4>The plugin<\/h4>\n <p>The plugin takes care of the following:<\/p>\n <ul>\n<li>Sandboxes all users and overrides any user capabilities defined in <code>\/app\/code\/wp-env.json<\/code>.<\/li>\n<li>Injects a login link to support Jumpstarter <a href=\"https:\/\/github.com\/jumpstarter-io\/help\/wiki\/App-Portals#reflected-login\">reflected login<\/a> on <code>\/wp-login.php<\/code>.<\/li>\n<li>Handles login requests from Jumpstarter by authenticating posts of <code>jumpstarter-auth-token<\/code>. On successful authentication the user is logged in as the admin user.<\/li>\n<li>Hooks in on <code>set_url_scheme<\/code> and uses the env to determine if the url should use http or https.<\/li>\n<li>Disables the possibility to delete the theme that's specified in the wp env.<\/li>\n<li>Rewrites urls passed to <code>wp_enqueue_script<\/code> and <code>wp_enqueue_style<\/code> depending on if SSL is on or not.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Installation Procedure<\/h4>\n <ol>\n<li>Unzip into <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin in the WordPress admin panel.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<h4>Can this plugin be used outside of the Jumpstarter environment?<\/h4>\n <p>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.<\/p>\n <p>Features when not running in a Jumpstarter container:<\/p>\n <ul>\n<li>Hooks in on <code>set_url_scheme<\/code> and uses the env to determine if the url should use http or https.<\/li>\n<li>Rewrites urls passed to <code>wp_enqueue_script<\/code> and <code>wp_enqueue_style<\/code> depending on if SSL is on or not.<\/li>\n<\/ul>\n\n<!--section=changelog-->\n<h4>19.2<\/h4>\n <ul>\n<li>Fixes issue with imported WordPress installs that use custom table_prefix.<\/li>\n<li>New password reset functionality<\/li>\n<\/ul>\n <h4>19.1<\/h4>\n <ul>\n<li>Fixes migration issues if the database was created outside of the container.<\/li>\n<li>Updates legacy table wp_links on siteurl change.<\/li>\n<\/ul>\n <h4>19<\/h4>\n <ul>\n<li>Fix minor display error on wp-login<\/li>\n<\/ul>\n <h4>18.1<\/h4>\n <ul>\n<li>Fix packaging error<\/li>\n<\/ul>\n <h4>18.0<\/h4>\n <ul>\n<li>Rewritten init process to fix issues with php scoping<\/li>\n<\/ul>\n <h4>17.0<\/h4>\n <ul>\n<li>Remove the last restrictions on user plugin management.<\/li>\n<li>Add help on login page for the event of using a non-secure domain.<\/li>\n<li>Improve code documentation.<\/li>\n<li>Add compatibility mode for non Jumpstarter container environments.<\/li>\n<\/ul>\n <h4>16.0<\/h4>\n <ul>\n<li>Open up the plugin for the new Jumpstarter architecture changes (increase the freedom).<\/li>\n<li>Auto generate WordPress security salts on install.<\/li>\n<li>Modify nginx <code>fastcgi_param HTTPS<\/code> on init run.<\/li>\n<\/ul>\n <h4>15.0<\/h4>\n <ul>\n<li>Refactor token authentication functionality, move out to common library.<\/li>\n<\/ul>\n <h4>14.0<\/h4>\n <ul>\n<li>jumpstarter: bugfix JS_WP_User::has_cap. call parent function with all arguments.<\/li>\n<li>Store old siteurl as \"js_siteurl_old\" in env sync phase if siteurl change.<\/li>\n<li>js-init: ensure core plugins load order on env sync.<\/li>\n<\/ul>\n <h4>13.0<\/h4>\n <ul>\n<li>Add \"jumpstarter_install\" hook in install stage.<\/li>\n<li>Enable users to deactivate plugins that are specified in both plugins and user_plugins.<\/li>\n<li>js-init: add <code>jumpstarter_sync_env<\/code> action at end of env sync to allow plugins\/themes to run env change dependent code.<\/li>\n<\/ul>\n <h4>12.0<\/h4>\n <ul>\n<li>Wrap sync of env with WordPress in transaction.<\/li>\n<li>Use js subclasses of sqlite-integration for multiple statement transactions.<\/li>\n<\/ul>\n <h4>11.0<\/h4>\n <ul>\n<li>Take care of serialized values in updating of meta and options.<\/li>\n<\/ul>\n <h4>10.0<\/h4>\n <ul>\n<li>Update post meta and options on change of site url.<\/li>\n<\/ul>\n <h4>9.0<\/h4>\n <ul>\n<li>Enable user plugins.<\/li>\n<li>Add support for login_redirect filter on token auth.<\/li>\n<li>Set user information to defaults on install from state db.<\/li>\n<\/ul>\n <h4>8.0<\/h4>\n <ul>\n<li>Add support for install hooks that are run while db in memory.<\/li>\n<li>Add support for installing instance from init state.<\/li>\n<\/ul>\n <h4>7.0<\/h4>\n <ul>\n<li>Allow reflected login link to work in session expired iframe.<\/li>\n<\/ul>\n <h4>6.0<\/h4>\n <ul>\n<li>Add support for specifying wp options in env.<\/li>\n<\/ul>\n <h4>5.0<\/h4>\n <ul>\n<li>Allow plugin activation\/deactivation from cli.<\/li>\n<li>Run hooks when activating plugins.<\/li>\n<\/ul>\n <h4>4.0<\/h4>\n <ul>\n<li>Fix error when activating jumpstarter plugin from redefining WP_SITEURL.<\/li>\n<\/ul>\n <h4>3.0<\/h4>\n <ul>\n<li>Break out and optimize js_get_env().<\/li>\n<\/ul>\n <h4>2.0<\/h4>\n <ul>\n<li>js-init: always use admin username on install.<\/li>\n<li>Let env define the plugins to activate, hide plugins in admin menu.<\/li>\n<li>Update readme to reflect 2.0 changes.<\/li>\n<\/ul>\n <h4>1.0<\/h4>\n <ul>\n<li>Initial version<\/li>\n<\/ul>","raw_excerpt":"Jumpstarter WordPress integration plugin that simplifies running WordPress in a container environment.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/38194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=38194"}],"author":[{"embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jumpstarter"}],"wp:attachment":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=38194"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=38194"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=38194"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=38194"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=38194"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=38194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}