Commit Graph
45 Commits
Author SHA1 Message Date
Fabian GrünbichlerandDietmar Maurer e0e5b4426a BackupDir: make constructor fallible
since converting from i64 epoch timestamp to DateTime is not always
possible. previously, passing invalid backup-time from client to server
(or vice-versa) panicked the corresponding tokio task. now we get proper
error messages including the invalid timestamp.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-11 15:49:35 +02:00
Fabian GrünbichlerandDietmar Maurer 7158b304f5 handle invalid mtime when formating entries
otherwise operations like catalog shell panic when viewing pxar archives
containing such entries, e.g. with mtime very far ahead into the future.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-11 15:48:43 +02:00
Fabian GrünbichlerandDietmar Maurer 833eca6d2f use non-panicky timestamp_opt where appropriate
by either printing the original, out-of-range timestamp as-is, or
bailing with a proper error message instead of panicking.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-11 15:48:24 +02:00
Fabian GrünbichlerandDietmar Maurer 151acf5d96 don't truncate DateTime nanoseconds
where we don't care about them anyway..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-11 15:48:10 +02:00
Fabian GrünbichlerandDietmar Maurer 4a363fb4a7 catalog dump: preserve original mtime
even if it can't be handled by chrono. silently replacing it with epoch
0 is confusing..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-11 15:43:54 +02:00
Fabian GrünbichlerandDietmar Maurer cf9ea3c4c7 server: set http2 max frame size
else we get the default of 16k, which is quite low for our use case.
this improves the TLS upload benchmark speed by about 30-40% for me.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-10 12:43:51 +02:00
Fabian GrünbichlerandDietmar Maurer ecd55041a2 fix #2978: allow non-root to view datastore usage
for datastores where the requesting user has read or write permissions,
since the API method itself filters by that already. this is the same
permission setting and filtering that the datastore list API endpoint
does.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-09-04 06:18:20 +02:00
Fabian Grünbichler c5ac2b9ddd bump version to 0.8.10-1
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-11 15:47:30 +02:00
Fabian GrünbichlerandDietmar Maurer 882c082369 mark signed manifests as such
for less-confusing display in the web interface

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-11 09:56:53 +02:00
Fabian GrünbichlerandDietmar Maurer 9a38fa29c2 verify: also check chunk CryptMode
and in-line verify_stored_chunk to avoid double-loading each chunk.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-11 09:56:20 +02:00
Fabian GrünbichlerandDietmar Maurer 14f6c9cb8b chunk readers: ensure chunk/index CryptMode matches
an encrypted Index should never reference a plain-text chunk, and an
unencrypted Index should never reference an encrypted chunk.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-11 09:54:22 +02:00
Fabian GrünbichlerandDietmar Maurer 2d55beeca0 datastore api: verify blob/index csum from manifest
when dowloading decoded files.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-11 09:52:45 +02:00
Fabian GrünbichlerandDietmar Maurer 9238cdf50d datastore api: only decode unencrypted indices
these checks were already in place for regular downloading of backed up
files, also do them when attempting to decode a catalog, or when
downloading decoded files referenced by a pxar index.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-11 09:51:20 +02:00
Fabian Grünbichler db22e6b270 build: properly regenerate d/control
and commit the latest change

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-04 11:16:11 +02:00
Fabian GrünbichlerandDietmar Maurer c96b0de48f datastore: allow browsing signed pxar files
just because we can't verify the signature, does not mean the contents
are not accessible. it might make sense to make it obvious with a hint
or click-through warning that no signature verification can take place
or this and downloading.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-04 07:27:56 +02:00
Fabian GrünbichlerandDietmar Maurer 2ce159343b sync: verify size and checksum of pulled archives
and not just of previously synced ones.

we can't use BackupManifest::verify_file as the archive is still stored
under the tmp path at this point.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-04 07:27:56 +02:00
Fabian GrünbichlerandDietmar Maurer 9e496ff6f1 sync: verify chunk size and digest, if possible
for encrypted chunks this is currently not possible, as we need the key
to decode the chunk.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-04 07:27:56 +02:00
Fabian GrünbichlerandDietmar Maurer 8819d1f2f5 blobs: attempt to verify on decode when possible
regular chunks are only decoded when their contents are accessed, in
which case we need to have the key anyway and want to verify the digest.

for blobs we need to verify beforehand, since their checksums are always
calculated based on their raw content, and stored in the manifest.

manifests are also stored as blobs, but don't have a digest in the
traditional sense (they might have a signature covering parts of their
contents, but that is verified already when loading the manifest).

this commit does not cover pull/sync code which copies blobs and chunks
as-is without decoding them.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-04 07:27:56 +02:00
Fabian Grünbichler 724de093dd build: track generated d/control in git
to track changes and allow bootstrap-installation of build dependencies.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-31 11:18:33 +02:00
Fabian GrünbichlerandThomas Lamprecht 25455bd06d fix #2871: close FDs when scanning backup group
otherwise we leak those descriptors and run into EMFILE when a backup
group contains many snapshots.

fcntl::openat and Dir::openat are not the same ;)

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-22 09:19:29 +02:00
Fabian GrünbichlerandThomas Lamprecht c1c4a18f48 fix #2865: detect and skip vanished snapshots
also when they have been removed/forgotten since we retrieved the
snapshot list for the currently syncing backup group.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-22 09:19:29 +02:00
Fabian GrünbichlerandThomas Lamprecht 91f5594c08 api: translate ENOTFOUND to 404 for downloads
and percolate the HttpError back up on the client side

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-22 09:19:29 +02:00
Fabian GrünbichlerandThomas Lamprecht 86f6f74114 fix #2860: skip in-progress snapshots when syncing
they don't have a final manifest yet and are not done, so they can't be
synced either.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-22 09:19:29 +02:00
Fabian GrünbichlerandThomas Lamprecht 13d9fe3a6c .gitignore: add build directory
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-22 09:19:29 +02:00
Fabian Grünbichler 295d4f4116 bump udev build-dependency
0.4 contains a fix for C chars on non-x86 architectures.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-20 12:11:54 +02:00
Fabian GrünbichlerandThomas Lamprecht c47a900ceb build: run tests on build (again)
now that all examples and tests are fixed again.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-20 11:37:53 +02:00
Fabian GrünbichlerandThomas Lamprecht 1b1110581a manifest: revert canonicalization to old behaviour
JSON keys MUST be quoted. this is a one-time break in signature
validation for backups created with the broken canonicalization code.
QEMU backups are not affected, as libproxmox-backup-qemu never linked
the broken versions.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-07-20 11:37:53 +02:00
Fabian Grünbichler 6c5024b050 Cargo.toml: remove native-tls
it's not used anymore.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-18 13:52:56 +02:00
Fabian Grünbichler b2c9c793ad debcargo.toml: add missing doc build-dependencies
and mark them accordingly.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-18 13:48:16 +02:00
Fabian Grünbichler 79166b3935 debcargo.toml: reflow dependencies
to make changes easier to track

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-18 13:08:10 +02:00
Fabian Grünbichler 2e686e0a63 update dependencies
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-18 09:08:09 +02:00
Fabian Grünbichler b4a85a3fa8 update pin-utils dep to stable version
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-14 11:46:05 +02:00
Fabian Grünbichler e881b8a5ef switch to debcargo for generating d/control
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-21 11:45:26 +01:00
Fabian Grünbichler dbd3e5da12 update tokio to 0.2.9
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-16 13:23:24 +01:00
Fabian Grünbichler 70cd0e1b12 d/control: bump proxmox build-dep
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-07 10:46:32 +01:00
Fabian Grünbichler 88625f2062 cargo: switch to use packaged crates by default
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-03 09:40:33 +01:00
Fabian Grünbichler 0eaa4a7810 add README.rst
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-02 14:10:18 +01:00
Fabian Grünbichler 8921d301fb reference valgrind_request via github
to allow using the same Cargo.toml file with a cargo config referencing
packaged crates instead of crates.io

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-02 13:57:52 +01:00
Fabian Grünbichler 06440889d8 also bump version in Cargo.toml
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-01-02 13:33:28 +01:00
Fabian Grünbichler 75232e517a packaging: fix docs install path
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-12-23 07:52:40 +01:00
Fabian Grünbichler da0e1e4021 various packaging fixes, bump version
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-12-20 12:55:32 +01:00
Fabian Grünbichler 4aa3763944 d/control: add proper rust build-dependencies
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-12-20 12:55:32 +01:00
Fabian Grünbichler 840616ca1e tests/pxar: increase verbosity
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-12-20 12:55:32 +01:00
Fabian Grünbichler 522df0b9ad Cargo.toml: remove zstd-sys
no need to specify it explicitly, the bindgen feature takes care of this.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-12-20 12:55:32 +01:00
Fabian Grünbichler ceced40756 Cargo.toml: update dependencies
to those that are packaged.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-12-20 12:55:32 +01:00