More thorough check of IM URL validity.

pull/21833/head
Richard Lewis 2018-05-24 14:58:59 +01:00
parent 693ccf69c7
commit a13d58f6c2
1 changed files with 14 additions and 5 deletions

View File

@ -122,23 +122,32 @@ export default class AppTile extends React.Component {
/** /**
* Returns true if specified url is a scalar URL, typically https://scalar.vector.im/api * Returns true if specified url is a scalar URL, typically https://scalar.vector.im/api
* @param {[type]} url URL to check * @param {[type]} testUrlString URL to check
* @return {Boolean} True if specified URL is a scalar URL * @return {Boolean} True if specified URL is a scalar URL
*/ */
isScalarUrl(url) { isScalarUrl(testUrlString) {
if (!url) { if (!testUrlString) {
console.error('Scalar URL check failed. No URL specified'); console.error('Scalar URL check failed. No URL specified');
return false; return false;
} }
const testUrl = url.parse(testUrlString);
let scalarUrls = SdkConfig.get().integrations_widgets_urls; let scalarUrls = SdkConfig.get().integrations_widgets_urls;
if (!scalarUrls || scalarUrls.length == 0) { if (!scalarUrls || scalarUrls.length == 0) {
scalarUrls = [SdkConfig.get().integrations_rest_url]; scalarUrls = [SdkConfig.get().integrations_rest_url];
} }
for (let i = 0; i < scalarUrls.length; i++) { for (let i = 0; i < scalarUrls.length; i++) {
if (url.startsWith(scalarUrls[i])) { const scalarUrl = url.parse(scalarUrls[i]);
return true; if (testUrl && scalarUrl) {
if (
testUrl.protocol === scalarUrl.protocol &&
testUrl.host === scalarUrl.host &&
testUrl.pathname.startsWith(scalarUrl.pathname)
) {
return true;
}
} }
} }
return false; return false;