restic/internal/repository
Michael Eischer 99e105eeb6 repository: restrict SaveUnpacked and RemoveUnpacked
Those methods now only allow modifying snapshots. Internal data types
used by the repository are now read-only. The repository-internal code
can bypass the restrictions by wrapping the repository in an
`internalRepository` type.

The restriction itself is implemented by using a new datatype
WriteableFileType in the SaveUnpacked and RemoveUnpacked methods. This
statically ensures that code cannot bypass the access restrictions.

The test changes are somewhat noisy as some of them modify repository
internals and therefore require some way to bypass the access
restrictions. This works by capturing an `internalRepository` or
`Backend` when creating the Repository using a test helper function.
2025-01-13 22:39:57 +01:00
..
hashing hashing: move to repository package 2024-05-25 13:13:03 +02:00
index repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
pack pack: move to repository package 2024-05-25 13:13:03 +02:00
testdata internal/repository: Fix LoadBlob + fuzz test 2022-06-06 17:02:28 +02:00
check.go Switch back to sha256 from the std library 2024-08-10 19:16:10 +02:00
doc.go gofmt all files 2022-08-19 19:12:26 +02:00
fuzz_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
key.go repository: move backend.LoadAll to repository.LoadRaw 2024-05-18 21:26:00 +02:00
lock.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
lock_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
packer_manager.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
packer_manager_test.go repository: remove Packer and SavePacker from public interface 2024-05-24 21:33:17 +02:00
packer_uploader.go repository: remove Packer and SavePacker from public interface 2024-05-24 21:33:17 +02:00
prune.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
prune_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
raw.go repository: make reloading broken files explicit 2024-05-18 21:28:54 +02:00
raw_test.go cache: move to backend package 2024-05-24 23:04:06 +02:00
repack.go repository: inline MasterIndex interface into Repository interface 2024-05-24 21:33:17 +02:00
repack_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
repair_index.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
repair_index_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
repair_pack.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
repair_pack_test.go remove duplicate imports 2025-01-05 13:53:20 +02:00
repository.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
repository_internal_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
repository_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
testing.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
upgrade_repo.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00
upgrade_repo_test.go repository: restrict SaveUnpacked and RemoveUnpacked 2025-01-13 22:39:57 +01:00