diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringClientConnection.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringClientConnection.java index ecf652c7..5b07b4c0 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringClientConnection.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringClientConnection.java @@ -307,7 +307,7 @@ public class MonitoringClientConnection implements TemplateComposer { final String webserviceServerAddress = this.pageService.getAuthorizationContextHolder() .getWebserviceURIService() - .getWebserviceServerAddress(); + .getExternalServerURL(); final JavaScriptExecutor javaScriptExecutor = RWT.getClient().getService(JavaScriptExecutor.class); final String script = String.format(OPEN_SINGEL_ROOM_SCRIPT, roomName, webserviceServerAddress, roomName); diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/auth/WebserviceURIService.java b/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/auth/WebserviceURIService.java index a4a55f38..bdfb7875 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/auth/WebserviceURIService.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/auth/WebserviceURIService.java @@ -14,6 +14,7 @@ import org.springframework.web.util.UriComponentsBuilder; import ch.ethz.seb.sebserver.gbl.api.API; import ch.ethz.seb.sebserver.gbl.profile.GuiProfile; +import io.micrometer.core.instrument.util.StringUtils; @Component @GuiProfile @@ -22,13 +23,15 @@ public class WebserviceURIService { private final String servletContextPath; private final String webserviceServerAddress; private final UriComponentsBuilder webserviceURIBuilder; + private final UriComponentsBuilder externaGUIURIBuilder; public WebserviceURIService( @Value("${sebserver.gui.webservice.protocol}") final String webserviceProtocol, @Value("${sebserver.gui.webservice.address}") final String webserviceServerAddress, @Value("${sebserver.gui.webservice.port}") final String webserviceServerPort, @Value("${server.servlet.context-path}") final String servletContextPath, - @Value("${sebserver.gui.webservice.apipath}") final String webserviceAPIPath) { + @Value("${sebserver.gui.webservice.apipath}") final String webserviceAPIPath, + @Value("${sebserver.gui.webservice.address.external}") final String externalServerName) { this.servletContextPath = servletContextPath; this.webserviceServerAddress = @@ -38,6 +41,19 @@ public class WebserviceURIService { .port(webserviceServerPort) .path(servletContextPath) .path(webserviceAPIPath); + if (StringUtils.isNotBlank(externalServerName)) { + this.externaGUIURIBuilder = UriComponentsBuilder + .fromHttpUrl(webserviceProtocol + "://" + externalServerName) + .port(webserviceServerPort); + } else { + this.externaGUIURIBuilder = UriComponentsBuilder + .fromHttpUrl(webserviceProtocol + "://" + webserviceServerAddress) + .port(webserviceServerPort); + } + } + + public String getExternalServerURL() { + return this.externaGUIURIBuilder.toUriString(); } public String getWebserviceServerAddress() { diff --git a/src/main/resources/config/application-gui.properties b/src/main/resources/config/application-gui.properties index aca55cea..8f276121 100644 --- a/src/main/resources/config/application-gui.properties +++ b/src/main/resources/config/application-gui.properties @@ -16,6 +16,7 @@ sebserver.gui.date.displayformat=de sebserver.gui.entrypoint=/gui sebserver.gui.webservice.protocol=http sebserver.gui.webservice.address=localhost +sebserver.gui.webservice.address.external=${sebserver.webservice.http.external.servername} sebserver.gui.webservice.port=8080 sebserver.gui.webservice.apipath=${sebserver.webservice.api.admin.endpoint} # defines the polling interval that is used to poll the webservice for client connection data on a monitored exam page diff --git a/src/test/java/ch/ethz/seb/sebserver/gui/integration/GuiIntegrationTest.java b/src/test/java/ch/ethz/seb/sebserver/gui/integration/GuiIntegrationTest.java index a21dd41c..5f21c1c0 100644 --- a/src/test/java/ch/ethz/seb/sebserver/gui/integration/GuiIntegrationTest.java +++ b/src/test/java/ch/ethz/seb/sebserver/gui/integration/GuiIntegrationTest.java @@ -71,7 +71,7 @@ public abstract class GuiIntegrationTest { final HttpSession sessionMock = Mockito.mock(HttpSession.class); final WebserviceURIService webserviceURIService = new WebserviceURIService( - "http", "localhost", "8080", "/", this.endpoint); + "http", "localhost", "8080", "/", this.endpoint, "localhost"); final ClientHttpRequestFactoryService clientHttpRequestFactoryService = Mockito .mock(ClientHttpRequestFactoryService.class);