summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
diff options
context:
space:
mode:
authorSimon Rettberg2018-05-11 17:36:45 +0200
committerSimon Rettberg2018-05-11 17:36:45 +0200
commitb3557ec2e121f91ca842ca37f0e4b582556046a4 (patch)
tree21f6feb3f678db1da60b6f72fea6ef1cbb72fee0 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
parent[client] Fix inverted logic for slowed down hashing (diff)
downloadtutor-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.java20
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 + "'.");
}
}
+
}