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();
+               }
+       }
 }


Reply via email to