Remove automatic repository subdirectories

This commit is contained in:
Mikei386
2026-06-14 23:58:46 +02:00
parent 7542133692
commit 69c907bf59
12 changed files with 21 additions and 115 deletions
-6
View File
@@ -166,12 +166,6 @@ func ValidateRepository(r Repository) error {
if r.Mount.Remote == "" || !filepath.IsAbs(r.Mount.MountPoint) {
return errors.New("managed mount requires remote and absolute mountPoint")
}
location := filepath.Clean(r.Location)
mountPoint := filepath.Clean(r.Mount.MountPoint)
relative, err := filepath.Rel(mountPoint, location)
if err != nil || relative == ".." || strings.HasPrefix(relative, ".."+string(filepath.Separator)) {
return errors.New("managed repository location must be inside mountPoint")
}
}
if r.Type == RepositorySFTP && r.CredentialRef != "" {
knownHosts := r.Options["knownHostsPath"]
-11
View File
@@ -79,14 +79,3 @@ func TestRetentionRequiresAtLeastOneRule(t *testing.T) {
t.Fatalf("age retention rejected: %v", err)
}
}
func TestManagedRepositoryLocationMustRemainInsideMountPoint(t *testing.T) {
repo := Repository{SchemaVersion: 1, ID: "repo", Name: "NAS", Type: RepositorySMB, Location: "/mnt/remotes/nas/NAS", PasswordRef: "password", Mount: &MountConfig{Managed: true, Remote: "//nas/backups", MountPoint: "/mnt/remotes/nas"}}
if err := ValidateRepository(repo); err != nil {
t.Fatalf("repository subdirectory rejected: %v", err)
}
repo.Location = "/mnt/remotes/other/NAS"
if err := ValidateRepository(repo); err == nil {
t.Fatal("repository location outside mountPoint accepted")
}
}