diff options
author | Simon Rettberg | 2018-05-11 17:36:45 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-05-11 17:36:45 +0200 |
commit | b3557ec2e121f91ca842ca37f0e4b582556046a4 (patch) | |
tree | 21f6feb3f678db1da60b6f72fea6ef1cbb72fee0 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java | |
parent | [client] Fix inverted logic for slowed down hashing (diff) | |
download | tutor-module-b3557ec2e121f91ca842ca37f0e4b582556046a4.tar.gz tutor-module-b3557ec2e121f91ca842ca37f0e4b582556046a4.tar.xz tutor-module-b3557ec2e121f91ca842ca37f0e4b582556046a4.zip |
[server] Support server side chunk copying
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java index df127736..f97231f8 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java @@ -64,10 +64,12 @@ import org.openslx.bwlp.thrift.iface.TNotFoundException; import org.openslx.bwlp.thrift.iface.TTransferRejectedException; import org.openslx.bwlp.thrift.iface.TransferInformation; import org.openslx.bwlp.thrift.iface.TransferStatus; +import org.openslx.bwlp.thrift.iface.UploadOptions; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.bwlp.thrift.iface.Virtualizer; import org.openslx.bwlp.thrift.iface.WhoamiInfo; import org.openslx.sat.thrift.version.Version; +import org.openslx.thrifthelper.Comparators; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.ThriftUtil; @@ -124,8 +126,9 @@ public class ServerHandler implements SatelliteServer.Iface { } @Override - public void updateBlockHashes(String uploadToken, List<ByteBuffer> blockHashes) + public void updateBlockHashes(String uploadToken, List<ByteBuffer> blockHashes, String userToken) throws TInvalidTokenException { + // TODO: Validate user token some time in the future IncomingDataTransfer upload = fileServer.getUploadByToken(uploadToken); if (upload == null) throw new TInvalidTokenException(); @@ -134,6 +137,20 @@ public class ServerHandler implements SatelliteServer.Iface { } @Override + public UploadOptions setUploadOptions(String userToken, String uploadToken, UploadOptions options) + throws TAuthorizationException, TInvalidTokenException, TException { + IncomingDataTransfer upload = fileServer.getUploadByToken(uploadToken); + if (upload == null) + throw new TInvalidTokenException(); + if (options == null) // Query only -- don't validate user + return upload.setOptions(null); + UserInfo user = SessionManager.getOrFail(userToken); + if (Comparators.user.compare(user, upload.getOwner()) != 0) + throw new TAuthorizationException(AuthorizationError.NO_PERMISSION, "This isn't your upload"); + return upload.setOptions(options); + } + + @Override public void cancelUpload(String uploadToken) { IncomingDataTransfer upload = fileServer.getUploadByToken(uploadToken); if (upload != null) { @@ -762,4 +779,5 @@ public class ServerHandler implements SatelliteServer.Iface { "Database failure when setting the virtualizer config for '" + imageVersionId + "'."); } } + } |