=== WPSafer ===
Tags: backup, restore, remote management, security, multisite
Requires at least: 5.3
Tested up to: 7.1
Stable tag: 1.3.0
Contributors: wpsafer,
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

WPSafer lets you remotely manage and back up multiple WordPress sites from a single dashboard on wpsafer.com.

== Description ==

[WPSafer](https://wpsafer.com/ "Manage & Backup Multiple WordPress Websites from One Location") connects your site to the wpsafer.com dashboard so you can manage backups, plugins, themes and core updates for all your WordPress sites from one place. This plugin is the lightweight agent that runs on your site — almost all configuration lives on the dashboard, so there is very little to set up here beyond pasting your site key.

= What it does =

* **Resumable backups.** Full and incremental backups run in small, resumable steps so they survive shared-hosting execution-time limits. Archives are built locally and collected by your dashboard.
* **Safe restores.** Restores are staged next to your live files and swapped in with a single atomic move; nothing is deleted until the swap succeeds, and a failed restore rolls back automatically.
* **Remote plugin & theme management.** Install, update, activate, deactivate and uninstall plugins and themes — individually or in groups — without logging in to each site.
* **One-click login.** Open the wp-admin of any connected site directly from the dashboard, no password required.
* **Core updates.** Update WordPress core from the dashboard.
* **Basic firewall.** Optional IP allow/deny list for wp-admin, wp-login.php and XML-RPC, including multisite.
* **Database & content cleanup.** The built-in sweep tool removes post revisions, auto-drafts, trashed posts and comments, spam, orphaned and duplicated meta data, unused terms, transient options and stale oEmbed caches.
* **Uptime monitoring.** Periodic checks confirm your site is answering from the outside.
* **System checks.** The dashboard reports on PHP version, free disk space, max execution time, ZipArchive availability and file-write access so you can see backup readiness at a glance.
* **Signed connection.** Every request between your site and the dashboard is authenticated with your site key; the plugin also runs a self-test to confirm the connection is healthy.

Check out [wpsafer.com](https://wpsafer.com/dashboard "Multiple WordPress Site Management from One Dashboard") to create a free account.

= Support =

Email us at support@wpsafer.com.

== Installation ==

1. Install the WPSafer plugin via the WordPress.org plugin directory, or upload the `wpsafer` folder to `/wp-content/plugins/`.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Sign up for a free account at [wpsafer.com](https://wpsafer.com/ "WPSafer") and add your site.
4. Copy the site key from your wpsafer.com dashboard and paste it into the plugin's settings page.

== Screenshots ==

1. The WPSafer dashboard at wpsafer.com
2. See all of the plugins and themes needing update across all sites in one view.
3. Backup options on the WPSafer dashboard
4. Plugin options on the WPSafer dashboard
5. Theme options on the WPSafer dashboard
6. Latest logs on the WPSafer dashboard

== Changelog ==

#### 1.3.0
* Site migration release: the restore engine's migration mode (prefix translation, URL/path rewrite on the parallel table set, host files kept), the panel-driven migration receiver (target folder detection for an installed WordPress / an empty folder / a non-WordPress folder, receiver self-deletes after finalize) and the backup manifest (abspath, table prefix, installation id) shipped in 1.2.8–1.2.11 are now verified end to end between two real WordPress installs with different table prefixes and different domains, including a shared database that holds foreign tables. No behaviour change in this build beyond the version number.

#### 1.2.11
* Restore/migration: the parallel table set now leaves 54 characters for the site's own table names (was 49) — WooCommerce tables under a long, randomly generated prefix no longer fail the atomic swap. A step that keeps failing with the same error is abandoned and rolled back right away instead of looping until the step ceiling, and a rollback always gets its own step budget.

#### 1.2.10
* Restore gains a migration mode for moving a site onto a different installation: table prefixes are translated, site URLs and paths are rewritten (serialized data included) on the parallel table set before the atomic swap, and the destination keeps its own wp-config.php, .htaccess, drop-ins, site key and installation id. Multisite archives and tables not belonging to the source site are refused/skipped.

#### 1.2.9
* Backup manifests now record the site's installation path, database table prefix and a per-installation id (generated on activation), groundwork for the upcoming site migration feature.
* Restore checks the archive's table prefix against the site's before touching anything and refuses a mismatch; archives made by older versions have their prefix read from the database dump.
* Restore keeps this installation's id even when the archive predates it or carries another site's.

#### 1.2.8
* The "Moving hosts?" card on the settings page now offers two routes: "Migrate this site" and "Have our team do it" (fixed-price migration service on wpsafer.com), and its copy no longer promises zero downtime.

#### 1.2.7
* Remote plugin/theme update no longer touches WordPress's own update-check transient; it now resolves the package directly (either your supplied zip_url or a fresh WordPress.org lookup) and hands it straight to WordPress's own installer, keeping the remote-management feature intact while satisfying wordpress.org's plugin review requirements.
* Removed a manual translation-loading call now that WordPress loads plugin translations automatically.

#### 1.2.6
* Backup engine rewritten to run in resumable, budget-aware steps, with separate full and incremental modes.
* Restore engine rewritten around a stage-then-atomic-swap design with automatic rollback on failure.
* Site connection now uses signed, timestamped requests tied to your site key, with a built-in self-test.
* Added English and Turkish translations.
* Security, code-quality and WordPress.org compliance pass across the whole plugin.

= Earlier versions =

Versions 1.1.7 through 1.5.1 (2014–2016) added the original backup, restore, plugin/theme management, basic firewall and sweep-data features along with translations for Arabic, Chinese, Dutch, French, German, Italian, Japanese, Romanian, Russian, Serbo-Croatian, Spanish and Turkish. Several of those integrations (direct Dropbox/Amazon S3/FTP backup destinations) have since been superseded by the current dashboard-managed backup storage and are no longer part of this plugin.

== Frequently Asked Questions ==

= I'm having trouble installing WPSafer on my site =

Make sure you're using the latest version of the plugin. Deactivating and reactivating it sometimes resolves installation issues. If the problem persists, [contact us](https://wpsafer.com/contact "WPSafer Contact").

= I'm having trouble installing plugins or updating WordPress through WPSafer =

Make sure your server's file permissions are set correctly and that your site key is up to date.

== License ==

This file is part of WPSafer.

WPSafer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

WPSafer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with WPSafer. If not, see <http://www.gnu.org/licenses/>.