openvidu-server: KurentoOptions parameters type check

pull/105/head
pabloFuente 2018-08-02 11:34:15 +02:00
parent 7ce6826b62
commit 0ab3add07c
3 changed files with 27 additions and 6 deletions

View File

@ -500,7 +500,7 @@ public class KurentoSessionManager extends SessionManager {
} }
@Override @Override
public KurentoMediaOptions generateMediaOptions(Request<JsonObject> request) { public KurentoMediaOptions generateMediaOptions(Request<JsonObject> request) throws OpenViduException {
String sdpOffer = RpcHandler.getStringParam(request, ProtocolElements.PUBLISHVIDEO_SDPOFFER_PARAM); String sdpOffer = RpcHandler.getStringParam(request, ProtocolElements.PUBLISHVIDEO_SDPOFFER_PARAM);
boolean hasAudio = RpcHandler.getBooleanParam(request, ProtocolElements.PUBLISHVIDEO_HASAUDIO_PARAM); boolean hasAudio = RpcHandler.getBooleanParam(request, ProtocolElements.PUBLISHVIDEO_HASAUDIO_PARAM);
@ -534,8 +534,17 @@ public class KurentoSessionManager extends SessionManager {
try { try {
JsonObject kurentoFilterJson = (JsonObject) RpcHandler.getParam(request, JsonObject kurentoFilterJson = (JsonObject) RpcHandler.getParam(request,
ProtocolElements.PUBLISHVIDEO_KURENTOFILTER_PARAM); ProtocolElements.PUBLISHVIDEO_KURENTOFILTER_PARAM);
if (kurentoFilterJson != null) {
try {
kurentoFilter = new KurentoFilter(kurentoFilterJson.get("type").getAsString(), kurentoFilter = new KurentoFilter(kurentoFilterJson.get("type").getAsString(),
kurentoFilterJson.get("options").getAsJsonObject()); kurentoFilterJson.get("options").getAsJsonObject());
} catch (Exception e) {
throw new OpenViduException(Code.FILTER_NOT_APPLIED_ERROR_CODE,
"'filter' parameter wrong:" + e.getMessage());
}
}
} catch (OpenViduException e) {
throw e;
} catch (RuntimeException noParameterFound) { } catch (RuntimeException noParameterFound) {
} }

View File

@ -218,7 +218,12 @@ public class SessionRestController {
String sessionId = (String) params.get("session"); String sessionId = (String) params.get("session");
String roleString = (String) params.get("role"); String roleString = (String) params.get("role");
String metadata = (String) params.get("data"); String metadata = (String) params.get("data");
JsonObject kurentoOptions = new JsonParser().parse(params.get("kurentoOptions").toString()).getAsJsonObject();
JsonObject kurentoOptions = null;
if (params.get("kurentoOptions") != null) {
kurentoOptions = new JsonParser().parse(params.get("kurentoOptions").toString()).getAsJsonObject();
}
ParticipantRole role; ParticipantRole role;
try { try {

View File

@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import io.openvidu.client.OpenViduException; import io.openvidu.client.OpenViduException;
import io.openvidu.client.OpenViduException.Code; import io.openvidu.client.OpenViduException.Code;
@ -375,8 +376,14 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
String filterType = getStringParam(request, ProtocolElements.FILTER_TYPE_PARAM); String filterType = getStringParam(request, ProtocolElements.FILTER_TYPE_PARAM);
if (participant.getToken().getKurentoTokenOptions().isFilterAllowed(filterType)) { if (participant.getToken().getKurentoTokenOptions().isFilterAllowed(filterType)) {
JsonObject filterOptions = new JsonParser().parse(getStringParam(request, ProtocolElements.FILTER_OPTIONS_PARAM)) JsonObject filterOptions;
try {
filterOptions = new JsonParser().parse(getStringParam(request, ProtocolElements.FILTER_OPTIONS_PARAM))
.getAsJsonObject(); .getAsJsonObject();
} catch (JsonSyntaxException e) {
throw new OpenViduException(Code.FILTER_NOT_APPLIED_ERROR_CODE,
"'options' parameter is not a JSON object: " + e.getMessage());
}
String streamId = getStringParam(request, ProtocolElements.FILTER_STREAMID_PARAM); String streamId = getStringParam(request, ProtocolElements.FILTER_STREAMID_PARAM);
sessionManager.applyFilter(sessionManager.getSession(rpcConnection.getSessionId()), streamId, filterType, sessionManager.applyFilter(sessionManager.getSession(rpcConnection.getSessionId()), streamId, filterType,
filterOptions, null, request.getId(), "applyFilter"); filterOptions, null, request.getId(), "applyFilter");