From 708a3689f157f3301c3ead4efaebd24de033df60 Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Wed, 20 Mar 2024 10:13:03 +0100 Subject: [PATCH] Fix issues found in code review --- lib/env.js | 14 +++++++++++++- lib/load-config.js | 14 -------------- www/checkup/main.js | 8 +++++--- www/common/sframe-common-outer.js | 11 ++++++----- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/env.js b/lib/env.js index 38cfe9c96..f41602d76 100644 --- a/lib/env.js +++ b/lib/env.js @@ -4,6 +4,8 @@ /* globals process */ +const { existsSync, readdirSync } = require('node:fs'); + const Crypto = require('crypto'); const WriteQueue = require("./write-queue"); const BatchRead = require("./batch-read"); @@ -56,6 +58,14 @@ var isRecentVersion = function () { return false; }; +const getInstalledOOVersions = function() { + if (!existsSync('www/common/onlyoffice/dist')) { + return []; + } + + return readdirSync('www/common/onlyoffice/dist'); +}; + module.exports.create = function (config) { var httpUnsafeOrigin = canonicalizeOrigin(config.httpUnsafeOrigin); @@ -233,7 +243,9 @@ module.exports.create = function (config) { sso: config.sso, enforceMFA: config.enforceMFA, - onlyOffice: config.onlyOffice, + onlyOffice: { + availableVersions: getInstalledOOVersions() + }, // initialized as undefined bearerSecret: void 0, diff --git a/lib/load-config.js b/lib/load-config.js index 7665dfa66..8b35153e8 100644 --- a/lib/load-config.js +++ b/lib/load-config.js @@ -4,8 +4,6 @@ "use strict"; -const { existsSync, readdirSync } = require('node:fs'); - var config; var configPath = process.env.CRYPTPAD_CONFIG || "../config/config.js"; try { @@ -55,16 +53,4 @@ try { //console.log("SSO config not found"); } -const getInstalledOOVersions = function() { - if (!existsSync('www/common/onlyoffice/dist')) { - return []; - } - - return readdirSync('www/common/onlyoffice/dist'); -}; - -config.onlyOffice = { - availableVersions: getInstalledOOVersions() -}; - module.exports = config; diff --git a/www/checkup/main.js b/www/checkup/main.js index 0a95ec9d3..7182c6b02 100644 --- a/www/checkup/main.js +++ b/www/checkup/main.js @@ -20,13 +20,15 @@ define([ '/customize/pages.js', '/checkup/checkup-tools.js', '/customize/application_config.js', + '/common/onlyoffice/current-version.js', '/components/tweetnacl/nacl-fast.min.js', 'css!/components/components-font-awesome/css/font-awesome.min.css', 'less!/checkup/app-checkup.less', ], function ($, ApiConfig, Assertions, h, Messages, DomReady, nThen, SFCommonO, Login, Hash, Util, Pinpad, - NetConfig, Block, Pages, Tools, AppConfig) { + NetConfig, Block, Pages, Tools, AppConfig, + OOCurrentVersion) { window.CHECKUP_MAIN_LOADED = true; var Assert = Assertions(); @@ -421,7 +423,7 @@ define([ }); }); - var sheetURL = '/common/onlyoffice/dist/v7/web-apps/apps/spreadsheeteditor/main/index.html'; + var sheetURL = `/common/onlyoffice/dist/${OOCurrentVersion.currentVersion}/web-apps/apps/spreadsheeteditor/main/index.html`; assert(function (cb, msg) { msg.innerText = "Missing HTTP headers required for .xlsx export from sheets. "; @@ -718,7 +720,7 @@ define([ }); assert(function (cb, msg) { // FIXME possibly superseded by more advanced CSP tests? - var url = '/common/onlyoffice/dist/v7/web-apps/apps/spreadsheeteditor/main/index.html'; + var url = `/common/onlyoffice/dist/${OOCurrentVersion.currentVersion}/web-apps/apps/spreadsheeteditor/main/index.html`; msg.appendChild(CSP_WARNING(url)); deferredPostMessage({ command: 'GET_HEADER', diff --git a/www/common/sframe-common-outer.js b/www/common/sframe-common-outer.js index dc86e851c..1387fb2ac 100644 --- a/www/common/sframe-common-outer.js +++ b/www/common/sframe-common-outer.js @@ -9,8 +9,7 @@ define([ '/common/requireconfig.js', '/customize/messages.js', 'jquery', - '/common/pad-types.js', -], function (nThen, ApiConfig, RequireConfig, Messages, $, PadTypes) { +], function (nThen, ApiConfig, RequireConfig, Messages, $) { var common = {}; var embeddableApps = [ @@ -155,11 +154,12 @@ define([ '/customize/application_config.js', //'/common/test.js', '/common/userObject.js', - 'optional!/api/instance' + 'optional!/api/instance', + '/common/pad-types.js', ], waitFor(function (_CpNfOuter, _Cryptpad, _Crypto, _Cryptget, _SFrameChannel, _SecureIframe, _UnsafeIframe, _OOIframe, _Notifier, _Hash, _Util, _Realtime, _Notify, _Constants, _Feedback, _LocalStore, _Block, _Cache, _AppConfig, /* _Test,*/ _UserObject, - _Instance) { + _Instance, _PadTypes) { CpNfOuter = _CpNfOuter; Cryptpad = _Cryptpad; Crypto = Utils.Crypto = _Crypto; @@ -181,6 +181,7 @@ define([ Utils.currentPad = currentPad; Utils.Instance = _Instance; Utils.Block = _Block; + Utils.PadTypes = _PadTypes; AppConfig = _AppConfig; //Test = _Test; @@ -820,7 +821,7 @@ define([ additionalPriv.newSharedFolder = window.CryptPad_newSharedFolder; } if (Utils.Constants.criticalApps.indexOf(parsed.type) === -1 && - !PadTypes.isAvailable(parsed.type)) { + !Utils.PadTypes.isAvailable(parsed.type)) { additionalPriv.disabledApp = true; } if (!Utils.LocalStore.isLoggedIn() &&