diff options
Diffstat (limited to 'ncp-web/backups.php')
-rw-r--r-- | ncp-web/backups.php | 159 |
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 </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 +--> |