Author: solomax
Date: Sat Dec 31 09:19:15 2016
New Revision: 1776710
URL: http://svn.apache.org/viewvc?rev=1776710&view=rev
Log:
[OPENMEETINGS-1507] application.base.url setting is not being used for screen
sharing codebase
Modified:
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
Modified:
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1776710&r1=1776709&r2=1776710&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
Sat Dec 31 09:19:15 2016
@@ -107,7 +107,8 @@ public class Application extends Authent
STRINGS_WITH_APP.addAll(Arrays.asList("499", "500", "506",
"511", "512", "513", "517", "532", "622", "804"
, "909", "952", "978", "981", "984", "989",
"990", "999", "1151", "1155", "1157", "1158", "1194"));
}
-
+ public static final String HASH_MAPPING = "/hash";
+
@Override
protected void init() {
wicketApplicationName = super.getName();
@@ -139,13 +140,13 @@ public class Application extends Authent
getRootRequestMapperAsCompound().add(new
NoVersionMapper(getHomePage()));
getRootRequestMapperAsCompound().add(new
NoVersionMapper("notinited", NotInitedPage.class));
getRootRequestMapperAsCompound().add(new NoVersionMapper("swf",
HashPage.class));
- //getRootRequestMapperAsCompound().add(new
NoVersionMapper("/hash", HashPage.class));
+ //getRootRequestMapperAsCompound().add(new
NoVersionMapper(HASH_MAPPING, HashPage.class));
getRootRequestMapperAsCompound().add(new
NoVersionMapper("/recording/${hash}", HashPage.class));
getRootRequestMapperAsCompound().add(new
NoVersionMapper("signin", getSignInPageClass()));
mountPage("install", InstallWizardPage.class);
mountPage("activate", ActivatePage.class);
mountPage("reset", ResetPage.class);
- mountPage("/hash", HashPage.class);
+ mountPage(HASH_MAPPING, HashPage.class);
mountResource("/recordings/mp4/${id}", new
Mp4RecordingResourceReference());
mountResource("/recordings/jpg/${id}", new
JpgRecordingResourceReference()); //should be in sync with VideoPlayer
mountResource("/profile/${id}", new
ProfileImageResourceReference());
Modified:
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java?rev=1776710&r1=1776709&r2=1776710&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
Sat Dec 31 09:19:15 2016
@@ -24,6 +24,7 @@ import static org.apache.openmeetings.ut
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.HASH_MAPPING;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
import static org.apache.openmeetings.web.room.RoomBroadcaster.getClient;
@@ -46,8 +47,16 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.protocol.http.ClientProperties;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.string.Strings;
import org.red5.logging.Red5LoggerFactory;
@@ -60,6 +69,21 @@ public class StartSharingEventBehavior e
private static final String CDATA_END = "]]>";
private final AjaxDownload download;
private final Long roomId;
+ private final AjaxClientInfoBehavior acib = new
AjaxClientInfoBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse
response) {
+ super.renderHead(component, response);
+
response.render(JavaScriptHeaderItem.forScript("Wicket.BrowserInfo.collectExtraInfo
= function(info) { var l = window.location; info.codebase = l.origin +
l.pathname; };", "extended-client-info"));
+ }
+
+ @Override
+ protected WebClientInfo newWebClientInfo(RequestCycle
requestCycle) {
+ return new WebClientInfo(requestCycle, extProps);
+ }
+ };
+ private final ExtendedClientProperties extProps = new
ExtendedClientProperties();
private enum Protocol {
rtmp
, rtmpe
@@ -82,7 +106,7 @@ public class StartSharingEventBehavior e
@Override
protected void onBind() {
super.onBind();
- getComponent().add(download);
+ getComponent().add(download, acib);
}
@Override
@@ -92,7 +116,6 @@ public class StartSharingEventBehavior e
try (InputStream jnlp =
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp")) {
ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
app = IOUtils.toString(jnlp, UTF_8);
- String baseUrl = cfgDao.getBaseUrl();
Room room = getBean(RoomDao.class).get(roomId);
String publicSid = getParam(getComponent(),
PARAM_PUBLIC_SID).toString();
SessionManager sessionManager =
getBean(SessionManager.class);
@@ -108,7 +131,7 @@ public class StartSharingEventBehavior e
throw new
RuntimeException(String.format("Invalid room id passed %s, expected, %s", path,
roomId));
}
Protocol protocol = Protocol.valueOf(url.getScheme());
- app = addKeystore(rc, app,
protocol).replace("$codebase", baseUrl + "screenshare")
+ app = addKeystore(rc, app,
protocol).replace("$codebase", extProps.getCodebase())
.replace("$applicationName",
cfgDao.getAppName())
.replace("$url", _url)
.replace("$publicSid", publicSid)
@@ -193,4 +216,27 @@ public class StartSharingEventBehavior e
.replace("$keystore", CDATA_BEGIN + keystore +
CDATA_END)
.replace("$password", CDATA_BEGIN + password +
CDATA_END);
}
+
+ private static class ExtendedClientProperties extends ClientProperties {
+ private static final long serialVersionUID = 1L;
+ private String codebase;
+
+ public String getCodebase() {
+ return codebase;
+ }
+
+ @Override
+ public void read(IRequestParameters parameters) {
+ super.read(parameters);
+ String _url =
parameters.getParameterValue("codebase").toString("N/A");
+ StringBuilder sb = new StringBuilder(_url);
+ if (_url.endsWith(HASH_MAPPING)) {
+ sb.setLength(_url.length() -
HASH_MAPPING.length());
+ }
+ if (sb.charAt(sb.length() - 1) != '/') {
+ sb.append('/');
+ }
+ codebase = sb.append("screenshare").toString();
+ }
+ }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java?rev=1776710&r1=1776709&r2=1776710&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
Sat Dec 31 09:19:15 2016
@@ -24,6 +24,7 @@ import static org.apache.openmeetings.ut
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.HASH_MAPPING;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
import static org.apache.openmeetings.web.room.RoomBroadcaster.getClient;
@@ -46,8 +47,16 @@ import org.apache.openmeetings.util.OmFi
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.common.OmButton;
import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.protocol.http.ClientProperties;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.string.Strings;
import org.red5.logging.Red5LoggerFactory;
@@ -60,6 +69,7 @@ public class StartSharingButton extends
private static final String CDATA_END = "]]>";
private final AjaxDownload download;
private final org.apache.openmeetings.web.app.Client c;
+ private final ExtendedClientProperties extProps = new
ExtendedClientProperties();
private enum Protocol {
rtmp
, rtmpe
@@ -81,6 +91,20 @@ public class StartSharingButton extends
return String.format("public_%s.jnlp",
StartSharingButton.this.c.getRoomId());
}
});
+ add(new AjaxClientInfoBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void renderHead(Component component,
IHeaderResponse response) {
+ super.renderHead(component, response);
+
response.render(JavaScriptHeaderItem.forScript("Wicket.BrowserInfo.collectExtraInfo
= function(info) { var l = window.location; info.codebase = l.origin +
l.pathname; };", "extended-client-info"));
+ }
+
+ @Override
+ protected WebClientInfo newWebClientInfo(RequestCycle
requestCycle) {
+ return new WebClientInfo(requestCycle,
extProps);
+ }
+ });
}
@Override
@@ -90,7 +114,6 @@ public class StartSharingButton extends
try (InputStream jnlp =
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp")) {
ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
app = IOUtils.toString(jnlp, UTF_8);
- String baseUrl = cfgDao.getBaseUrl();
String publicSid = c.getUid();
Client rc = getClient(publicSid);
if (rc == null) {
@@ -107,7 +130,7 @@ public class StartSharingButton extends
throw new
RuntimeException(String.format("Invalid room id passed %s, expected, %s", path,
roomId));
}
Protocol protocol = Protocol.valueOf(url.getScheme());
- app = addKeystore(rc, app,
protocol).replace("$codebase", baseUrl + "screenshare")
+ app = addKeystore(rc, app,
protocol).replace("$codebase", extProps.getCodebase())
.replace("$applicationName",
cfgDao.getAppName())
.replace("$url", _url)
.replace("$publicSid", publicSid)
@@ -192,4 +215,27 @@ public class StartSharingButton extends
.replace("$keystore", CDATA_BEGIN + keystore +
CDATA_END)
.replace("$password", CDATA_BEGIN + password +
CDATA_END);
}
+
+ private static class ExtendedClientProperties extends ClientProperties {
+ private static final long serialVersionUID = 1L;
+ private String codebase;
+
+ public String getCodebase() {
+ return codebase;
+ }
+
+ @Override
+ public void read(IRequestParameters parameters) {
+ super.read(parameters);
+ String _url =
parameters.getParameterValue("codebase").toString("N/A");
+ StringBuilder sb = new StringBuilder(_url);
+ if (_url.endsWith(HASH_MAPPING)) {
+ sb.setLength(_url.length() -
HASH_MAPPING.length());
+ }
+ if (sb.charAt(sb.length() - 1) != '/') {
+ sb.append('/');
+ }
+ codebase = sb.append("screenshare").toString();
+ }
+ }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java?rev=1776710&r1=1776709&r2=1776710&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
Sat Dec 31 09:19:15 2016
@@ -24,6 +24,7 @@ import static org.apache.openmeetings.ut
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.HASH_MAPPING;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
import static org.apache.openmeetings.web.room.RoomBroadcaster.getClient;
@@ -46,8 +47,16 @@ import org.apache.openmeetings.util.OmFi
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.common.OmButton;
import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.protocol.http.ClientProperties;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.string.Strings;
import org.red5.logging.Red5LoggerFactory;
@@ -60,6 +69,7 @@ public class StartSharingButton extends
private static final String CDATA_END = "]]>";
private final AjaxDownload download;
private final org.apache.openmeetings.web.app.Client c;
+ private final ExtendedClientProperties extProps = new
ExtendedClientProperties();
private enum Protocol {
rtmp
, rtmpe
@@ -81,6 +91,20 @@ public class StartSharingButton extends
return String.format("public_%s.jnlp",
StartSharingButton.this.c.getRoomId());
}
});
+ add(new AjaxClientInfoBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void renderHead(Component component,
IHeaderResponse response) {
+ super.renderHead(component, response);
+
response.render(JavaScriptHeaderItem.forScript("Wicket.BrowserInfo.collectExtraInfo
= function(info) { var l = window.location; info.codebase = l.origin +
l.pathname; };", "extended-client-info"));
+ }
+
+ @Override
+ protected WebClientInfo newWebClientInfo(RequestCycle
requestCycle) {
+ return new WebClientInfo(requestCycle,
extProps);
+ }
+ });
}
@Override
@@ -90,7 +114,6 @@ public class StartSharingButton extends
try (InputStream jnlp =
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp")) {
ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
app = IOUtils.toString(jnlp, UTF_8);
- String baseUrl = cfgDao.getBaseUrl();
String publicSid = c.getUid();
Client rc = getClient(publicSid);
if (rc == null) {
@@ -107,7 +130,7 @@ public class StartSharingButton extends
throw new
RuntimeException(String.format("Invalid room id passed %s, expected, %s", path,
roomId));
}
Protocol protocol = Protocol.valueOf(url.getScheme());
- app = addKeystore(rc, app,
protocol).replace("$codebase", baseUrl + "screenshare")
+ app = addKeystore(rc, app,
protocol).replace("$codebase", extProps.getCodebase())
.replace("$applicationName",
cfgDao.getAppName())
.replace("$url", _url)
.replace("$publicSid", publicSid)
@@ -192,4 +215,27 @@ public class StartSharingButton extends
.replace("$keystore", CDATA_BEGIN + keystore +
CDATA_END)
.replace("$password", CDATA_BEGIN + password +
CDATA_END);
}
+
+ private static class ExtendedClientProperties extends ClientProperties {
+ private static final long serialVersionUID = 1L;
+ private String codebase;
+
+ public String getCodebase() {
+ return codebase;
+ }
+
+ @Override
+ public void read(IRequestParameters parameters) {
+ super.read(parameters);
+ String _url =
parameters.getParameterValue("codebase").toString("N/A");
+ StringBuilder sb = new StringBuilder(_url);
+ if (_url.endsWith(HASH_MAPPING)) {
+ sb.setLength(_url.length() -
HASH_MAPPING.length());
+ }
+ if (sb.charAt(sb.length() - 1) != '/') {
+ sb.append('/');
+ }
+ codebase = sb.append("screenshare").toString();
+ }
+ }
}