ngrok configuration removed

pull/178/head
pabloFuente 2019-01-10 14:22:50 +01:00
parent e001b2dbc9
commit c670b76e3d
6 changed files with 43 additions and 209 deletions

View File

@ -58,7 +58,6 @@ import io.openvidu.server.kurento.core.KurentoSessionEventsHandler;
import io.openvidu.server.kurento.core.KurentoSessionManager; import io.openvidu.server.kurento.core.KurentoSessionManager;
import io.openvidu.server.kurento.kms.FixedOneKmsManager; import io.openvidu.server.kurento.kms.FixedOneKmsManager;
import io.openvidu.server.recording.ComposedRecordingService; import io.openvidu.server.recording.ComposedRecordingService;
import io.openvidu.server.rest.NgrokRestController;
import io.openvidu.server.rpc.RpcHandler; import io.openvidu.server.rpc.RpcHandler;
import io.openvidu.server.rpc.RpcNotificationService; import io.openvidu.server.rpc.RpcNotificationService;
import io.openvidu.server.utils.CommandExecutor; import io.openvidu.server.utils.CommandExecutor;
@ -81,9 +80,9 @@ public class OpenViduServer implements JsonRpcConfigurer {
public static final String KMSS_URIS_PROPERTY = "kms.uris"; public static final String KMSS_URIS_PROPERTY = "kms.uris";
public static String publicUrl; public static String wsUrl;
private String ngrokAppUrl = ""; public static String httpUrl;
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
@ -187,44 +186,24 @@ public class OpenViduServer implements JsonRpcConfigurer {
String type = publicUrl; String type = publicUrl;
switch (publicUrl) { switch (publicUrl) {
case "ngrok":
try {
NgrokRestController ngrok = new NgrokRestController();
ngrokAppUrl = ngrok.getNgrokAppUrl();
if (ngrokAppUrl.isEmpty()) {
ngrokAppUrl = "(No tunnel 'app' found in ngrok.yml)";
}
// For frontend-only applications overriding openvidu-server dashboard...
String ngrokServerUrl = ngrok.getNgrokServerUrl();
if (ngrokServerUrl.isEmpty()) {
ngrokServerUrl = ngrok.getNgrokAppUrl();
}
OpenViduServer.publicUrl = ngrokServerUrl.replaceFirst("https://", "wss://");
openviduConf.setFinalUrl(ngrokServerUrl);
} catch (Exception e) {
log.error("Ngrok URL was configured, but there was an error connecting to ngrok: "
+ e.getClass().getName() + " " + e.getMessage());
log.error("Fallback to local URL");
}
break;
case "docker": case "docker":
try { try {
String containerIp = getContainerIp(); String containerIp = getContainerIp();
OpenViduServer.publicUrl = "wss://" + containerIp + ":" + openviduConf.getServerPort(); OpenViduServer.wsUrl = "wss://" + containerIp + ":" + openviduConf.getServerPort();
openviduConf.setFinalUrl("https://" + containerIp + ":" + openviduConf.getServerPort()); openviduConf.setFinalUrl("https://" + containerIp + ":" + openviduConf.getServerPort());
} catch (Exception e) { } catch (Exception e) {
log.error("Docker container IP was configured, but there was an error obtaining IP: " log.error("Docker container IP was configured, but there was an error obtaining IP: "
+ e.getClass().getName() + " " + e.getMessage()); + e.getClass().getName() + " " + e.getMessage());
log.error("Fallback to local URL"); log.error("Fallback to local URL");
OpenViduServer.wsUrl = null;
} }
break; break;
case "local": case "local":
break; break;
case "":
break;
default: default:
@ -233,26 +212,26 @@ public class OpenViduServer implements JsonRpcConfigurer {
type = "custom"; type = "custom";
if (publicUrl.startsWith("https://")) { if (publicUrl.startsWith("https://")) {
OpenViduServer.publicUrl = publicUrl.replace("https://", "wss://"); OpenViduServer.wsUrl = publicUrl.replace("https://", "wss://");
} else if (publicUrl.startsWith("http://")) { } else if (publicUrl.startsWith("http://")) {
OpenViduServer.publicUrl = publicUrl.replace("http://", "wss://"); OpenViduServer.wsUrl = publicUrl.replace("http://", "wss://");
} }
openviduConf.setFinalUrl(url.toString()); openviduConf.setFinalUrl(url.toString());
if (!OpenViduServer.publicUrl.startsWith("wss://")) { if (!OpenViduServer.wsUrl.startsWith("wss://")) {
OpenViduServer.publicUrl = "wss://" + OpenViduServer.publicUrl; OpenViduServer.wsUrl = "wss://" + OpenViduServer.wsUrl;
} }
} }
if (OpenViduServer.publicUrl == null) { if (OpenViduServer.wsUrl == null) {
type = "local"; type = "local";
OpenViduServer.publicUrl = "wss://localhost:" + openviduConf.getServerPort(); OpenViduServer.wsUrl = "wss://localhost:" + openviduConf.getServerPort();
openviduConf.setFinalUrl("https://localhost:" + openviduConf.getServerPort()); openviduConf.setFinalUrl("https://localhost:" + openviduConf.getServerPort());
} }
if (OpenViduServer.publicUrl.endsWith("/")) { if (OpenViduServer.wsUrl.endsWith("/")) {
OpenViduServer.publicUrl = OpenViduServer.publicUrl.substring(0, OpenViduServer.publicUrl.length() - 1); OpenViduServer.wsUrl = OpenViduServer.wsUrl.substring(0, OpenViduServer.wsUrl.length() - 1);
} }
boolean recordingModuleEnabled = openviduConf.isRecordingModuleEnabled(); boolean recordingModuleEnabled = openviduConf.isRecordingModuleEnabled();
@ -307,21 +286,21 @@ public class OpenViduServer implements JsonRpcConfigurer {
recordingService.initRecordingPath(); recordingService.initRecordingPath();
} }
log.info("OpenVidu Server using " + type + " URL: [" + OpenViduServer.publicUrl + "]");
httpUrl = openviduConf.getFinalUrl();
log.info("OpenVidu Server using " + type + " URL: [" + OpenViduServer.wsUrl + "]");
} }
@EventListener(ApplicationReadyEvent.class) @EventListener(ApplicationReadyEvent.class)
public void printNgrokUrl() { public void printUrl() {
if (!this.ngrokAppUrl.isEmpty()) { final String NEW_LINE = System.lineSeparator();
final String NEW_LINE = System.lineSeparator(); String str = NEW_LINE +
String str = NEW_LINE + NEW_LINE + " ACCESS IP " +
NEW_LINE + " APP PUBLIC IP " + NEW_LINE + "-------------------------" +
NEW_LINE + "-------------------------" + NEW_LINE + httpUrl +
NEW_LINE + ngrokAppUrl + NEW_LINE + "-------------------------" +
NEW_LINE + "-------------------------" + NEW_LINE;
NEW_LINE; log.info(str);
log.info(str);
}
} }
} }

View File

@ -26,7 +26,7 @@ import io.openvidu.server.core.ParticipantRole;
public class OpenviduConfig { public class OpenviduConfig {
@Value("${openvidu.publicurl}") @Value("${openvidu.publicurl}")
private String openviduPublicUrl; // local, ngrok, docker, [FINAL_URL] private String openviduPublicUrl; // local, docker, [FINAL_URL]
@Value("${server.port}") @Value("${server.port}")
private String serverPort; private String serverPort;

View File

@ -150,11 +150,9 @@ public abstract class SessionManager {
/** /**
* Returns all the participants inside a session. * Returns all the participants inside a session.
* *
* @param sessionId * @param sessionId identifier of the session
* identifier of the session
* @return set of {@link Participant} * @return set of {@link Participant}
* @throws OpenViduException * @throws OpenViduException in case the session doesn't exist
* in case the session doesn't exist
*/ */
public Set<Participant> getParticipants(String sessionId) throws OpenViduException { public Set<Participant> getParticipants(String sessionId) throws OpenViduException {
Session session = sessions.get(sessionId); Session session = sessions.get(sessionId);
@ -169,14 +167,11 @@ public abstract class SessionManager {
/** /**
* Returns a participant in a session * Returns a participant in a session
* *
* @param sessionId * @param sessionId identifier of the session
* identifier of the session * @param participantPrivateId private identifier of the participant
* @param participantPrivateId
* private identifier of the participant
* @return {@link Participant} * @return {@link Participant}
* @throws OpenViduException * @throws OpenViduException in case the session doesn't exist or the
* in case the session doesn't exist or the participant doesn't * participant doesn't belong to it
* belong to it
*/ */
public Participant getParticipant(String sessionId, String participantPrivateId) throws OpenViduException { public Participant getParticipant(String sessionId, String participantPrivateId) throws OpenViduException {
Session session = sessions.get(sessionId); Session session = sessions.get(sessionId);
@ -194,11 +189,9 @@ public abstract class SessionManager {
/** /**
* Returns a participant * Returns a participant
* *
* @param participantPrivateId * @param participantPrivateId private identifier of the participant
* private identifier of the participant
* @return {@link Participant} * @return {@link Participant}
* @throws OpenViduException * @throws OpenViduException in case the participant doesn't exist
* in case the participant doesn't exist
*/ */
public Participant getParticipant(String participantPrivateId) throws OpenViduException { public Participant getParticipant(String participantPrivateId) throws OpenViduException {
for (Session session : sessions.values()) { for (Session session : sessions.values()) {
@ -232,11 +225,10 @@ public abstract class SessionManager {
if (!isMetadataFormatCorrect(serverMetadata)) { if (!isMetadataFormatCorrect(serverMetadata)) {
log.error("Data invalid format"); log.error("Data invalid format");
throw new OpenViduException(Code.GENERIC_ERROR_CODE, throw new OpenViduException(Code.GENERIC_ERROR_CODE, "Data invalid format");
"Data invalid format");
} }
String token = OpenViduServer.publicUrl; String token = OpenViduServer.wsUrl;
token += "?sessionId=" + sessionId; token += "?sessionId=" + sessionId;
token += "&token=" + this.generateRandomChain(); token += "&token=" + this.generateRandomChain();
token += "&role=" + role.name(); token += "&role=" + role.name();
@ -422,13 +414,12 @@ public abstract class SessionManager {
* notifications to the existing participants in the session to inform that it * notifications to the existing participants in the session to inform that it
* was forcibly closed. * was forcibly closed.
* *
* @param sessionId * @param sessionId identifier of the session
* identifier of the session
* @return * @return
* @return set of {@link Participant} POJOS representing the session's * @return set of {@link Participant} POJOS representing the session's
* participants * participants
* @throws OpenViduException * @throws OpenViduException in case the session doesn't exist or has been
* in case the session doesn't exist or has been already closed * already closed
*/ */
public Set<Participant> closeSession(String sessionId, String reason) { public Set<Participant> closeSession(String sessionId, String reason) {
Session session = sessions.get(sessionId); Session session = sessions.get(sessionId);

View File

@ -526,7 +526,7 @@ public class ComposedRecordingService {
private String getLayoutUrl(Recording recording, String shortSessionId) { private String getLayoutUrl(Recording recording, String shortSessionId) {
String secret = openviduConfig.getOpenViduSecret(); String secret = openviduConfig.getOpenViduSecret();
String location = OpenViduServer.publicUrl.replaceFirst("wss://", ""); String location = OpenViduServer.wsUrl.replaceFirst("wss://", "");
String layout, finalUrl; String layout, finalUrl;
if (RecordingLayout.CUSTOM.equals(recording.getRecordingLayout())) { if (RecordingLayout.CUSTOM.equals(recording.getRecordingLayout())) {

View File

@ -1,122 +0,0 @@
/*
* (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package io.openvidu.server.rest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class NgrokRestController {
private final String NGROK_URL = "http://localhost:4040/api/tunnels";
private final String NGROK_APP_NAME = "app";
private final String NGROK_SERVER_NAME = "server";
private String appUrl = "";
private String serverUrl = "";
private JsonObject json;
HttpClient client = HttpClientBuilder.create().build();
public String getNgrokAppUrl() throws ClientProtocolException, IOException {
if (this.appUrl != null && !this.appUrl.isEmpty()) {
return this.appUrl;
}
if (this.json == null) {
this.json = this.httpRequest();
}
String appPublicUrl = "";
JsonArray array = this.json.getAsJsonArray("tunnels");
for (JsonElement el : array) {
JsonObject elObj = el.getAsJsonObject();
String name = elObj.get("name").getAsString();
if (name.equals(NGROK_APP_NAME)) {
appPublicUrl = elObj.get("public_url").getAsString();
appPublicUrl = appPublicUrl.replaceFirst("http://", "https://");
break;
}
}
this.appUrl = appPublicUrl;
return appPublicUrl;
}
public String getNgrokServerUrl() throws ClientProtocolException, IOException {
if (this.serverUrl != null && !this.serverUrl.isEmpty()) {
return this.serverUrl;
}
if (this.json == null) {
this.json = this.httpRequest();
}
String serverPublicUrl = "";
JsonArray array = this.json.getAsJsonArray("tunnels");
for (JsonElement el : array) {
JsonObject elObj = el.getAsJsonObject();
String name = elObj.get("name").getAsString();
if (name.equals(NGROK_SERVER_NAME)) {
serverPublicUrl = elObj.get("public_url").getAsString();
serverPublicUrl = serverPublicUrl.replaceFirst("http://", "https://");
break;
}
}
this.serverUrl = serverPublicUrl;
return serverPublicUrl;
}
private JsonObject httpRequest() throws ClientProtocolException, IOException {
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(NGROK_URL);
HttpResponse response = client.execute(request);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
JsonObject responseJson = (JsonObject) new JsonParser().parse(result.toString());
return responseJson;
}
}

View File

@ -1,14 +0,0 @@
spring.profiles.active=ngrok
server.port: 5000
server.address: 0.0.0.0
server.ssl.enabled: false
openvidu.recording.version: 2.7.0
kms.uris=[\"ws://localhost:8888/kurento\"]
openvidu.secret: MY_SECRET
openvidu.publicurl: ngrok
openvidu.cdr: false
openvidu.recording: false
openvidu.recording.path: /opt/openvidu/recordings
openvidu.recording.public-access: false