From 7b99ac1f0692747c609cf70d5c858cb15f9fd511 Mon Sep 17 00:00:00 2001
From: Ghazi Triki <ghazi.triki@riadvice.tn>
Date: Fri, 3 Nov 2017 16:19:57 +0100
Subject: [PATCH] Improve origin URL setting by adding it to flashvars instead
 of of calling js from flash client.

---
 .../resources/prod/BigBlueButton.html              |  4 ++--
 bigbluebutton-client/src/BigBlueButton.mxml        | 14 --------------
 .../src/org/bigbluebutton/core/BBB.as              |  7 ++-----
 .../bigbluebutton/core/managers/ConfigManager2.as  | 13 ++-----------
 .../main/views/MainApplicationShell.mxml           |  7 ++-----
 .../org/bigbluebutton/util/browser/BrowserCheck.as |  4 ++--
 .../org/bigbluebutton/util/i18n/ResourceUtil.as    |  1 -
 .../bigbluebutton/util/logging/ServerLogTarget.as  |  1 -
 8 files changed, 10 insertions(+), 41 deletions(-)

diff --git a/bigbluebutton-client/resources/prod/BigBlueButton.html b/bigbluebutton-client/resources/prod/BigBlueButton.html
index 5c6b3f68a5..c0670b32c1 100755
--- a/bigbluebutton-client/resources/prod/BigBlueButton.html
+++ b/bigbluebutton-client/resources/prod/BigBlueButton.html
@@ -62,7 +62,7 @@
       };
 
       //swfobject.registerObject("BigBlueButton", "11", "expressInstall.swf");
-      var flashvars = {};
+      var flashvars = {"origin":window.location.origin};
       var params = {};
       params.quality = "high";
       params.bgcolor = "#FFFFFF";
@@ -98,7 +98,7 @@
         var fillContent = function(){
           var content = document.getElementById("content");
           if (content) {
-            content.innerHTML = '<object type="application/x-shockwave-flash" id="BigBlueButton" name="BigBlueButton" tabindex="0" data="BigBlueButton.swf?v=VERSION" style="position: relative; top: 0.5px;" width="100%" height="100%" align="middle"><param name="quality" value="high"><param name="bgcolor" value="#FFFFFF"><param name="allowfullscreen" value="true"><param name="allowfullscreeninteractive" value="true"><param name="wmode" value="window"><param name="allowscriptaccess" value="always"><param name="seamlesstabbing" value="true"></object>';
+            content.innerHTML = '<object type="application/x-shockwave-flash" id="BigBlueButton" name="BigBlueButton" tabindex="0" data="BigBlueButton.swf?v=VERSION" style="position: relative; top: 0.5px;" width="100%" height="100%" align="middle"><param name="quality" value="high"><param name="bgcolor" value="#FFFFFF"><param name="allowfullscreen" value="true"><param name="allowfullscreeninteractive" value="true"><param name="wmode" value="window"><param name="allowscriptaccess" value="always"><param name="seamlesstabbing" value="true"><param name="FlashVars" value="origin='+window.location.origin+'"/></object>';
           }
         };
       } else {
diff --git a/bigbluebutton-client/src/BigBlueButton.mxml b/bigbluebutton-client/src/BigBlueButton.mxml
index d8a87b7da1..423db01d26 100755
--- a/bigbluebutton-client/src/BigBlueButton.mxml
+++ b/bigbluebutton-client/src/BigBlueButton.mxml
@@ -45,20 +45,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			private function init():void {
 				LogUtil.initLogging(true);
 			}
-
-			public function determineHtmlUrl():String {
-				var url:String = "";
-				if (ExternalInterface.available) {
-					try {
-						url = String(ExternalInterface.call("window.location.href.toString"));
-						LOGGER.debug("HTML URL [{0}]", [url]);
-					} catch (s:Error) {
-						LOGGER.debug("Cannot determine HTML URL");
-					}
-				}
-
-				return url;
-			}
 		]]>
 	</fx:Script>
   <views:BigBlueButtonMainContainer id="bbbShell"/>
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/BBB.as b/bigbluebutton-client/src/org/bigbluebutton/core/BBB.as
index 279ff41b3b..5bf1f4953a 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/core/BBB.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/BBB.as
@@ -21,7 +21,6 @@ package org.bigbluebutton.core {
 	import flash.system.Capabilities;
 	
 	import mx.core.FlexGlobals;
-	import mx.utils.URLUtil;
 	
 	import org.bigbluebutton.core.managers.ConfigManager2;
 	import org.bigbluebutton.core.managers.ConnectionManager;
@@ -127,10 +126,8 @@ package org.bigbluebutton.core {
 			return logoutUrl;
 		}
 
-		private static function getBaseURL():String {
-			var protocol:String = URLUtil.getProtocol(FlexGlobals.topLevelApplication.determineHtmlUrl());
-			var serverName:String = URLUtil.getServerNameWithPort(FlexGlobals.topLevelApplication.determineHtmlUrl());
-			return protocol + "://" + serverName;
+		public static function getBaseURL():String {
+			return FlexGlobals.topLevelApplication.loaderInfo.parameters.origin
 		}
 	}
 }
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConfigManager2.as b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConfigManager2.as
index 11ed5370eb..5daa3af642 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConfigManager2.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConfigManager2.as
@@ -26,12 +26,10 @@ package org.bigbluebutton.core.managers {
     import flash.net.URLVariables;
     import flash.utils.Dictionary;
     
-    import mx.core.FlexGlobals;
-    import mx.utils.URLUtil;
-    
     import org.as3commons.logging.api.ILogger;
     import org.as3commons.logging.api.getClassLogger;
     import org.bigbluebutton.common.LogUtil;
+    import org.bigbluebutton.core.BBB;
     import org.bigbluebutton.core.model.Config;
     import org.bigbluebutton.main.events.ConfigLoadedEvent;
     import org.bigbluebutton.main.events.MeetingNotFoundEvent;
@@ -57,7 +55,7 @@ package org.bigbluebutton.core.managers {
             urlLoader.addEventListener(Event.COMPLETE, handleComplete);
 
             var date:Date = new Date();
-            var localeReqURL:String = buildRequestURL();
+            var localeReqURL:String = BBB.getBaseURL() + "/" + CONFIG_XML;;
             trace("::loadConfig [{0}]", [localeReqURL]);
 
             trace(localeReqURL + " session=[" + sessionToken + "]");
@@ -69,13 +67,6 @@ package org.bigbluebutton.core.managers {
             urlLoader.load(request);
         }
 
-        private function buildRequestURL():String {
-            var swfURL:String = FlexGlobals.topLevelApplication.determineHtmlUrl();
-            var protocol:String = URLUtil.getProtocol(swfURL);
-            var serverName:String = URLUtil.getServerNameWithPort(swfURL);
-            return protocol + "://" + serverName + "/" + CONFIG_XML;
-        }
-
         private function handleComplete(e:Event):void {
             trace("handleComplete [{0}]", [new XML(e.target.data)]);
 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
index e077f9b4d9..b9c06009e3 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
@@ -623,11 +623,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
                 } else {
                     mdiCanvas.removeAllPopUps();
                     removeToolBars();
-                    var serverURL:String = FlexGlobals.topLevelApplication.determineHtmlUrl();
-                    var pageHost:String = serverURL.split("/")[0];
-                    var pageURL:String = serverURL.split("/")[2];
-                    LOGGER.debug("SingOut to [{0}//{1}/bigbluebutton/api/signOut]", [pageHost, pageURL]);
-                    var request:URLRequest = new URLRequest(pageHost + "//" + pageURL + "/bigbluebutton/api/signOut");
+                    LOGGER.debug("SingOut to [{0}/bigbluebutton/api/signOut]", [BBB.getBaseURL()]);
+                    var request:URLRequest = new URLRequest(BBB.getBaseURL() + "/bigbluebutton/api/signOut");
                     var urlLoader:URLLoader = new URLLoader();
                     urlLoader.addEventListener(Event.COMPLETE, handleLogoutComplete);
                     urlLoader.addEventListener(IOErrorEvent.IO_ERROR, handleLogoutError);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/util/browser/BrowserCheck.as b/bigbluebutton-client/src/org/bigbluebutton/util/browser/BrowserCheck.as
index 7325903ba6..43645e1802 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/util/browser/BrowserCheck.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/util/browser/BrowserCheck.as
@@ -23,6 +23,7 @@ package org.bigbluebutton.util.browser {
 	import org.as3commons.lang.StringUtils;
 	import org.as3commons.logging.api.ILogger;
 	import org.as3commons.logging.api.getClassLogger;
+	import org.bigbluebutton.core.BBB;
 
 	public class BrowserCheck {
 		private static const LOGGER:ILogger = getClassLogger(BrowserCheck);
@@ -87,9 +88,8 @@ package org.bigbluebutton.util.browser {
 		}
 
 		public static function isHttps():Boolean {
-			var url:String = ExternalInterface.call("window.location.href.toString");
 			var httpsPattern:RegExp = /^https/;
-			return httpsPattern.test(url);
+			return httpsPattern.test(BBB.getBaseURL());
 		}
 	}
 }
diff --git a/bigbluebutton-client/src/org/bigbluebutton/util/i18n/ResourceUtil.as b/bigbluebutton-client/src/org/bigbluebutton/util/i18n/ResourceUtil.as
index a7e9d072f5..b4ee9c68ab 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/util/i18n/ResourceUtil.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/util/i18n/ResourceUtil.as
@@ -48,7 +48,6 @@ package org.bigbluebutton.util.i18n
 		private var inited:Boolean = false;
 		private var dispatcher:Dispatcher = new Dispatcher();
 
-		
 		private static var BBB_RESOURCE_BUNDLE:String = 'bbbResources';
 		private static var MASTER_LOCALE:String = "en_US";
 		private static var DEFAULT_LOCALE_IDENTIFIER:String = "default";
diff --git a/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as b/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as
index bfc516464b..79f45306b7 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as
@@ -24,7 +24,6 @@ package org.bigbluebutton.util.logging
 	import flash.net.URLLoader;
 	import flash.net.URLRequest;
 	import flash.net.URLRequestMethod;
-	import flash.net.URLVariables;
 	import flash.utils.Timer;
 
 	import org.as3commons.lang.ArrayUtils;
-- 
GitLab