Skip to content

Commit

Permalink
Review duplicating files in vault. Fix #10017.
Browse files Browse the repository at this point in the history
  • Loading branch information
dkocher committed Jul 18, 2017
1 parent 4bd14df commit 8dd7834
Show file tree
Hide file tree
Showing 3 changed files with 375 additions and 28 deletions.
Expand Up @@ -41,16 +41,7 @@ public VaultRegistryCopyFeature(final Session<?> session, final Copy proxy, fina

@Override
public void copy(final Path source, final Path copy, final TransferStatus status) throws BackgroundException {
if(registry.find(session, source).equals(Vault.DISABLED)) {
registry.find(session, copy).getFeature(session, Copy.class, proxy).withTarget(target).copy(source, copy, status);
}
else if(registry.find(session, copy).equals(Vault.DISABLED)) {
registry.find(session, source).getFeature(session, Copy.class, proxy).withTarget(target).copy(source, copy, status);
}
else {
// Move files inside vault. May use server side copy.
proxy.copy(source, copy, status);
}
registry.find(session, copy).getFeature(session, Copy.class, proxy).withTarget(target).copy(source, copy, status);
}

@Override
Expand Down
Expand Up @@ -44,25 +44,16 @@ public CryptoCopyFeature(final Session<?> session, final Copy proxy, final Crypt

@Override
public void copy(final Path source, final Path copy, final TransferStatus status) throws BackgroundException {
if(vault.contains(source) && vault.contains(copy)) {
// Copy inside vault may use server side copy
proxy.withTarget(target).copy(vault.encrypt(session, source), vault.encrypt(session, copy), status);
}
else {
if(vault.contains(copy)) {
// Write header to be reused in writer
final Cryptor cryptor = vault.getCryptor();
final FileHeader header = cryptor.fileHeaderCryptor().create();
status.setHeader(cryptor.fileHeaderCryptor().encryptHeader(header));
status.setNonces(new RandomNonceGenerator());
}
// Copy files from or into vault requires to pass through encryption features
new DefaultCopyFeature(session).withTarget(target).copy(
vault.contains(source) ? vault.encrypt(session, source) : source,
vault.contains(copy) ? vault.encrypt(session, copy) : copy,
status
);
if(vault.contains(copy)) {
// Write header to be reused in writer
final Cryptor cryptor = vault.getCryptor();
final FileHeader header = cryptor.fileHeaderCryptor().create();
status.setHeader(cryptor.fileHeaderCryptor().encryptHeader(header));
status.setNonces(new RandomNonceGenerator());
}
proxy.withTarget(target).copy(
vault.contains(source) ? vault.encrypt(session, source) : source,
vault.contains(copy) ? vault.encrypt(session, copy) : copy, status);
}

@Override
Expand Down

0 comments on commit 8dd7834

Please sign in to comment.