Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/nextcloudpi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ncp-web/backups.php')
-rw-r--r--ncp-web/backups.php159
1 files changed, 159 insertions, 0 deletions
diff --git a/ncp-web/backups.php b/ncp-web/backups.php
new file mode 100644
index 00000000..2bdb08e3
--- /dev/null
+++ b/ncp-web/backups.php
@@ -0,0 +1,159 @@
+<!--
+ NextCloudPi Web Backups Panel
+
+ Copyleft 2019 by Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>
+ GPL licensed (see end of file) * Use at your own risk!
+
+ More at https://nextcloudpi.com
+-->
+<?php
+
+$bkp_cfg = file_get_contents('/usr/local/etc/ncp-config.d/nc-backup.cfg') or exit('backup config not found');
+$bkp_auto_cfg = file_get_contents('/usr/local/etc/ncp-config.d/nc-backup-auto.cfg') or exit('backup config not found');
+
+$bkp_json = json_decode($bkp_cfg , true) or exit('invalid format');
+$bkp_auto_json = json_decode($bkp_auto_cfg, true) or exit('invalid format');
+
+$bkp_dir = $bkp_json['params'][0]['value'];
+$bkp_auto_dir = $bkp_auto_json['params'][1]['value'];
+
+$bkps = array();
+$bkps_auto = array();
+
+if (file_exists($bkp_dir))
+{
+ $bkps = array_diff(scandir($bkp_dir), array('.', '..'));
+ $bkps = preg_filter('/^/', $bkp_dir. '/', $bkps);
+}
+
+if (file_exists($bkp_auto_dir))
+{
+ $bkps_auto = array_diff(scandir($bkp_auto_dir), array('.', '..'));
+ $bkps_auto = preg_filter('/^/', $bkp_auto_dir . '/', $bkps_auto);
+}
+
+$bkps = array_unique(array_merge($bkps, $bkps_auto));
+
+if (!empty($bkps))
+{
+echo <<<HTML
+ <div id="backups-table">
+ <table class="dashtable backuptable">
+ <th>Date</th><th>Size</th><th>Compressed</th><th>Data</th><th></th>
+HTML;
+ foreach ($bkps as $bkp)
+ {
+ $extension = pathinfo($bkp, PATHINFO_EXTENSION);
+ if ($extension === "tar" || $extension === "gz")
+ {
+ $compressed = "";
+ if ($extension === "gz")
+ $compressed = '✓';
+
+ $date = date("Y M d @ H:i", filemtime($bkp));
+ $size = round(filesize($bkp)/1024/1024) . " MiB";
+
+ $has_data = '';
+ exec("sudo /home/www/ncp-backup-launcher.sh bkp " . escapeshellarg($bkp) . " \"$compressed\"", $output, $ret);
+ if ($ret == 0)
+ $has_data = '✓';
+
+ echo <<<HTML
+ <tr id="$bkp">
+ <td class="long-field" title="$bkp">$date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+ <td class="val-field">$size</td>
+ <td class="ok-field align-center">$compressed</td>
+ <td class="ok-field align-center">$has_data</td>
+ <td>
+ <img class="hidden-btn default-btn download-bkp" title="download" src="../img/download.svg">
+ <img class="hidden-btn default-btn delete-bkp" title="delete" src="../img/delete.svg">
+ <img class="hidden-btn default-btn restore-bkp" title="restore" src="../img/defaults.svg">
+ </td>
+ </tr>
+HTML;
+ echo '<input type="hidden" name="csrf-token" value="' . getCSRFToken() . '"/>';
+ }
+ }
+echo <<<HTML
+ </table>
+ </div>
+HTML;
+} else {
+ echo "<div>No backups found.</div>";
+}
+?>
+
+</br></br>
+<h2 class="text-title">Restore from file</h2>
+<form action="upload.php" method="POST" enctype="multipart/form-data">
+ <div class="restore-upload-btn-wrapper">
+ <input type="file" name="backup" id="restore-upload" accept=".tar,.tar.gz"/>
+ <input id="restore-upload-btn" type="submit" value="Restore"/>
+ </div>
+</form>
+</br></br>
+
+<h2 class="text-title"><?php echo $l->__("Snapshots"); ?></h2>
+
+<?php
+
+include( '/var/www/nextcloud/config/config.php' );
+
+$snap_dir = realpath($CONFIG['datadirectory'] . '/../ncp-snapshots');
+$snaps = array();
+if (file_exists($snap_dir))
+{
+ $snaps = array_diff(scandir($snap_dir), array('.', '..'));
+ $snaps = preg_filter('/^/', $snap_dir . '/', $snaps);
+}
+
+if (!empty($snaps))
+{
+echo <<<HTML
+ <div id="snapshots-table">
+ <table class="dashtable backuptable">
+HTML;
+ foreach ($snaps as $snap)
+ {
+ exec("sudo /home/www/ncp-backup-launcher.sh chksnp " . escapeshellarg($snap), $out, $ret);
+ if ($ret == 0)
+ {
+ $snap_name = basename($snap);
+ echo <<<HTML
+ <tr id="$snap">
+ <td class="text-align-left" title="$snap">$snap_name</td>
+ <td>
+ <img class="hidden-btn default-btn delete-snap" title="delete" src="../img/delete.svg">
+ <img class="hidden-btn default-btn restore-snap" title="restore" src="../img/defaults.svg">
+ </td>
+ </tr>
+HTML;
+ }
+ }
+echo <<<HTML
+ </table>
+ </div>
+HTML;
+} else {
+ echo "<div>No snapshots found.</div>";
+}
+?>
+
+<!--
+ License
+
+ This script 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.
+
+ This script 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 this script; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+-->