7bde1cfdf0
- one locking protocol per location: backup steps and restores hold a shared lock, prune and untrash an exclusive one and refuse while any run (backup, restore, export) exists; starting a backup checks and creates the run under the exclusive lock, closing the race with prune - snapshot entries are validated when read (relative path without '.', '..', NUL, backslash or control characters); raw restore also checks that the resolved directory stays below the target; the restore API and service accept canonical paths only - recovery kit confirmation requires a recent password confirmation and the confirmation code printed in the current kit file (new code per kit version), proving the kit was actually downloaded - prune decides on the authenticated index files on the location and refreshes the local index cache from them - restore job marks the run failed on any error; restore runs without progress for 6 hours are failed so they cannot block cleanup forever - tests for safe paths and a malicious snapshot path
50 lines
2.3 KiB
XML
50 lines
2.3 KiB
XML
<?xml version="1.0"?>
|
|
<info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
|
|
<id>ng_backup</id>
|
|
<name>NG Backup</name>
|
|
<summary>Encrypted, incremental backups of your Nextcloud with restore from the web interface</summary>
|
|
<description><![CDATA[Work in progress, not ready for use.]]></description>
|
|
<version>0.0.12</version>
|
|
<licence>agpl</licence>
|
|
<author>Dillard Blom</author>
|
|
<namespace>NgBackup</namespace>
|
|
<category>tools</category>
|
|
<bugs>https://github.com/dillardblom/ng_backup/issues</bugs>
|
|
<dependencies>
|
|
<php min-version="8.1"/>
|
|
<lib>sodium</lib>
|
|
<nextcloud min-version="32" max-version="35"/>
|
|
</dependencies>
|
|
<background-jobs>
|
|
<job>OCA\NgBackup\BackgroundJob\BackupJob</job>
|
|
</background-jobs>
|
|
<commands>
|
|
<command>OCA\NgBackup\Command\KeyInit</command>
|
|
<command>OCA\NgBackup\Command\KeyKit</command>
|
|
<command>OCA\NgBackup\Command\KeyConfirm</command>
|
|
<command>OCA\NgBackup\Command\TargetBackends</command>
|
|
<command>OCA\NgBackup\Command\TargetAdd</command>
|
|
<command>OCA\NgBackup\Command\TargetList</command>
|
|
<command>OCA\NgBackup\Command\TargetRemove</command>
|
|
<command>OCA\NgBackup\Command\RunBackup</command>
|
|
<command>OCA\NgBackup\Command\Status</command>
|
|
<command>OCA\NgBackup\Command\ListSnapshots</command>
|
|
<command>OCA\NgBackup\Command\Browse</command>
|
|
<command>OCA\NgBackup\Command\Restore</command>
|
|
<command>OCA\NgBackup\Command\Prune</command>
|
|
<command>OCA\NgBackup\Command\Retention</command>
|
|
<command>OCA\NgBackup\Command\TargetAppendOnly</command>
|
|
<command>OCA\NgBackup\Command\Trash</command>
|
|
<command>OCA\NgBackup\Command\TrashRestore</command>
|
|
<command>OCA\NgBackup\Command\KeySlots</command>
|
|
<command>OCA\NgBackup\Command\KeySlotAdd</command>
|
|
<command>OCA\NgBackup\Command\KeySlotReplace</command>
|
|
<command>OCA\NgBackup\Command\KeySlotRemove</command>
|
|
</commands>
|
|
<settings>
|
|
<admin>OCA\NgBackup\Settings\Admin</admin>
|
|
<admin-section>OCA\NgBackup\Settings\AdminSection</admin-section>
|
|
</settings>
|
|
</info>
|