mirror of
https://github.com/ONLYOFFICE/server.git
synced 2026-04-07 14:04:35 +08:00
[feature] Update dependencies; Migrate to esm; Create build
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@ -10,4 +10,7 @@ node_modules
|
||||
/Gruntfile.js.out
|
||||
local-development-*.json
|
||||
*.pyc
|
||||
run-develop-local.py
|
||||
run-develop-local.py
|
||||
bundle/node_modules
|
||||
bundle/*.js
|
||||
bundle/*.exe
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"version": "1.0.1",
|
||||
"homepage": "https://www.onlyoffice.com",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "3.797.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.797.0",
|
||||
|
||||
@ -31,10 +31,9 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var config = require('config');
|
||||
var container = require('rhea');
|
||||
var logger = require('./logger');
|
||||
const operationContext = require('./operationContext');
|
||||
import config from 'config';
|
||||
import container from 'rhea';
|
||||
import * as operationContext from './operationContext.js';
|
||||
|
||||
const cfgRabbitSocketOptions = config.util.cloneDeep(config.get('activemq.connectOptions'));
|
||||
|
||||
@ -97,8 +96,10 @@ function closePromise(conn) {
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.connetPromise = connetPromise;
|
||||
module.exports.openSenderPromise = openSenderPromise;
|
||||
module.exports.openReceiverPromise = openReceiverPromise;
|
||||
module.exports.closePromise = closePromise;
|
||||
module.exports.RECONNECT_TIMEOUT = RECONNECT_TIMEOUT;
|
||||
export {
|
||||
connetPromise,
|
||||
openSenderPromise,
|
||||
openReceiverPromise,
|
||||
closePromise,
|
||||
RECONNECT_TIMEOUT
|
||||
};
|
||||
|
||||
@ -32,8 +32,8 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const config = require('config');
|
||||
const constants = require('./constants');
|
||||
import config from 'config';
|
||||
import * as constants from './constants.js';
|
||||
|
||||
function InputCommand(data, copyExplicit) {
|
||||
//must be set explicitly to prevent vulnerability(downloadAs(with url) creates request to integrator with authorization)
|
||||
@ -1163,28 +1163,30 @@ const FileStatus = {
|
||||
const buildVersion = '4.1.2';
|
||||
const buildNumber = 37;
|
||||
|
||||
exports.TaskQueueData = TaskQueueData;
|
||||
exports.CMailMergeSendData = CMailMergeSendData;
|
||||
exports.CThumbnailData = CThumbnailData;
|
||||
exports.CTextParams = CTextParams;
|
||||
exports.CForceSaveData = CForceSaveData;
|
||||
exports.InputCommand = InputCommand;
|
||||
exports.OutputSfcData = OutputSfcData;
|
||||
exports.OutputMailMerge = OutputMailMerge;
|
||||
exports.OutputAction = OutputAction;
|
||||
exports.ConvertStatus = ConvertStatus;
|
||||
exports.c_oPublishType = c_oPublishType;
|
||||
exports.c_oAscCsvDelimiter = c_oAscCsvDelimiter;
|
||||
exports.c_oAscEncodings = c_oAscEncodings;
|
||||
exports.c_oAscEncodingsMap = c_oAscEncodingsMap;
|
||||
exports.c_oAscCodePageUtf8 = c_oAscCodePageUtf8;
|
||||
exports.c_oAscUserAction = c_oAscUserAction;
|
||||
exports.c_oAscServerCommandErrors = c_oAscServerCommandErrors;
|
||||
exports.c_oAscForceSaveTypes = c_oAscForceSaveTypes;
|
||||
exports.c_oAscUrlTypes = c_oAscUrlTypes;
|
||||
exports.c_oAscSecretType = c_oAscSecretType;
|
||||
exports.c_oAscQueueType = c_oAscQueueType;
|
||||
exports.c_oAscUnlockRes = c_oAscUnlockRes;
|
||||
exports.FileStatus = FileStatus;
|
||||
exports.buildVersion = buildVersion;
|
||||
exports.buildNumber = buildNumber;
|
||||
export {
|
||||
TaskQueueData,
|
||||
CMailMergeSendData,
|
||||
CThumbnailData,
|
||||
CTextParams,
|
||||
CForceSaveData,
|
||||
InputCommand,
|
||||
OutputSfcData,
|
||||
OutputMailMerge,
|
||||
OutputAction,
|
||||
ConvertStatus,
|
||||
c_oPublishType,
|
||||
c_oAscCsvDelimiter,
|
||||
c_oAscEncodings,
|
||||
c_oAscEncodingsMap,
|
||||
c_oAscCodePageUtf8,
|
||||
c_oAscUserAction,
|
||||
c_oAscServerCommandErrors,
|
||||
c_oAscForceSaveTypes,
|
||||
c_oAscUrlTypes,
|
||||
c_oAscSecretType,
|
||||
c_oAscQueueType,
|
||||
c_oAscUnlockRes,
|
||||
FileStatus,
|
||||
buildVersion,
|
||||
buildNumber
|
||||
};
|
||||
|
||||
@ -32,28 +32,28 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
exports.DOC_ID_PATTERN = '0-9-.a-zA-Z_=';
|
||||
exports.DOC_ID_REGEX = new RegExp("^[" + exports.DOC_ID_PATTERN + "]*$", 'i');
|
||||
exports.DOC_ID_REPLACE_REGEX = new RegExp("[^" + exports.DOC_ID_PATTERN + "]", 'g');
|
||||
exports.DOC_ID_SOCKET_PATTERN = new RegExp("^/doc/([" + exports.DOC_ID_PATTERN + "]*)/c.+", 'i');
|
||||
exports.DOC_ID_MAX_LENGTH = 240;
|
||||
exports.USER_ID_MAX_LENGTH = 240;//255-240=15 symbols to make user id unique
|
||||
exports.USER_NAME_MAX_LENGTH = 255;
|
||||
exports.PASSWORD_MAX_LENGTH = 255;//set password limit for DoS protection with long password
|
||||
exports.EXTENTION_REGEX = /^[a-zA-Z0-9]*$/;
|
||||
exports.CHAR_DELIMITER = String.fromCharCode(5);
|
||||
exports.OUTPUT_NAME = 'output';
|
||||
exports.ONLY_OFFICE_URL_PARAM = 'ooname';
|
||||
exports.DISPLAY_PREFIX = 'display';
|
||||
exports.CHANGES_NAME = 'changes';
|
||||
exports.VIEWER_ONLY = /^(?:(pdf|djvu|xps|oxps))$/;
|
||||
exports.DEFAULT_DOC_ID = 'docId';
|
||||
exports.DEFAULT_USER_ID = 'userId';
|
||||
exports.ALLOWED_PROTO = /^https?$/i;
|
||||
exports.SHARD_KEY_WOPI_NAME = 'WOPISrc';
|
||||
exports.SHARD_KEY_API_NAME = 'shardkey';
|
||||
export const DOC_ID_PATTERN = '0-9-.a-zA-Z_=';
|
||||
export const DOC_ID_REGEX = new RegExp("^[" + DOC_ID_PATTERN + "]*$", 'i');
|
||||
export const DOC_ID_REPLACE_REGEX = new RegExp("[^" + DOC_ID_PATTERN + "]", 'g');
|
||||
export const DOC_ID_SOCKET_PATTERN = new RegExp("^/doc/([" + DOC_ID_PATTERN + "]*)/c.+", 'i');
|
||||
export const DOC_ID_MAX_LENGTH = 240;
|
||||
export const USER_ID_MAX_LENGTH = 240;//255-240=15 symbols to make user id unique
|
||||
export const USER_NAME_MAX_LENGTH = 255;
|
||||
export const PASSWORD_MAX_LENGTH = 255;//set password limit for DoS protection with long password
|
||||
export const EXTENTION_REGEX = /^[a-zA-Z0-9]*$/;
|
||||
export const CHAR_DELIMITER = String.fromCharCode(5);
|
||||
export const OUTPUT_NAME = 'output';
|
||||
export const ONLY_OFFICE_URL_PARAM = 'ooname';
|
||||
export const DISPLAY_PREFIX = 'display';
|
||||
export const CHANGES_NAME = 'changes';
|
||||
export const VIEWER_ONLY = /^(?:(pdf|djvu|xps|oxps))$/;
|
||||
export const DEFAULT_DOC_ID = 'docId';
|
||||
export const DEFAULT_USER_ID = 'userId';
|
||||
export const ALLOWED_PROTO = /^https?$/i;
|
||||
export const SHARD_KEY_WOPI_NAME = 'WOPISrc';
|
||||
export const SHARD_KEY_API_NAME = 'shardkey';
|
||||
|
||||
exports.RIGHTS = {
|
||||
export const RIGHTS = {
|
||||
None : 0,
|
||||
Edit : 1,
|
||||
Review : 2,
|
||||
@ -61,14 +61,14 @@ exports.RIGHTS = {
|
||||
View : 4
|
||||
};
|
||||
|
||||
exports.LICENSE_MODE = {
|
||||
export const LICENSE_MODE = {
|
||||
None: 0,
|
||||
Trial: 1,
|
||||
Developer: 2,
|
||||
Limited: 4
|
||||
};
|
||||
|
||||
exports.LICENSE_RESULT = {
|
||||
export const LICENSE_RESULT = {
|
||||
Error : 1,
|
||||
Expired : 2,
|
||||
Success : 3,
|
||||
@ -87,231 +87,232 @@ exports.LICENSE_RESULT = {
|
||||
NotBefore: 16
|
||||
};
|
||||
|
||||
exports.LICENSE_CONNECTIONS = 20;
|
||||
exports.LICENSE_USERS = 3;
|
||||
exports.LICENSE_EXPIRE_USERS_ONE_DAY = 24 * 60 * 60; // day in seconds
|
||||
export const LICENSE_CONNECTIONS = 20;
|
||||
export const LICENSE_USERS = 3;
|
||||
export const LICENSE_EXPIRE_USERS_ONE_DAY = 24 * 60 * 60; // day in seconds
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_UNKNOWN = 0x0000;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT = 0x0040;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0006;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0007;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0008;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2 = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0009;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000a;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000b;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000c;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000d;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000e;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000f;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0010;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0011;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0012;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0014;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0015;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0016;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM_PDF = exports.AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0017;
|
||||
export const AVS_OFFICESTUDIO_FILE_UNKNOWN = 0x0000;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT = 0x0040;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0007;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0008;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2 = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0009;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000a;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000b;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000c;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000d;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000e;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000f;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0010;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0011;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0012;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0014;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0015;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0016;
|
||||
export const AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM_PDF = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0017;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION = 0x0080;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0006;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0007;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0008;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0009;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x000a;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x000b;
|
||||
exports.AVS_OFFICESTUDIO_FILE_PRESENTATION_ODG = exports.AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x000c;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION = 0x0080;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0007;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0008;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0009;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x000a;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x000b;
|
||||
export const AVS_OFFICESTUDIO_FILE_PRESENTATION_ODG = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x000c;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET = 0x0100;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0006;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0007;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0008;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0009;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x000a;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x000b;
|
||||
exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE = exports.AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x000c;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET = 0x0100;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0007;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0008;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0009;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x000a;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x000b;
|
||||
export const AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x000c;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM = 0x0200;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0006;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR_MENU = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0007;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR_CANVAS = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0008;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDFA = exports.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0009;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM = 0x0200;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR_MENU = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0007;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR_CANVAS = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0008;
|
||||
export const AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDFA = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0009;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE = 0x0400;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_JPG = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_TIFF = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_TGA = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_GIF = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_PNG = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_EMF = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0006;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_WMF = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0007;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_BMP = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0008;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_CR2 = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x0009;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_PCX = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x000a;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_RAS = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x000b;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_PSD = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x000c;
|
||||
exports.AVS_OFFICESTUDIO_FILE_IMAGE_ICO = exports.AVS_OFFICESTUDIO_FILE_IMAGE + 0x000d;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE = 0x0400;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_JPG = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_TIFF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_TGA = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_GIF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_PNG = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_EMF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_WMF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0007;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_BMP = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0008;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_CR2 = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0009;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_PCX = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000a;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_RAS = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000b;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_PSD = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000c;
|
||||
export const AVS_OFFICESTUDIO_FILE_IMAGE_ICO = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000d;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER = 0x0800;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_EXTRACT_IMAGE = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0006;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_OOXML = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0007;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_JSON = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x0008; // Для mail-merge
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_ODF = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x000a;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_MS_MITCRYPTO = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x000b;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_MS_VBAPROJECT = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x000c;
|
||||
exports.AVS_OFFICESTUDIO_FILE_OTHER_PACKAGE_IN_OLE = exports.AVS_OFFICESTUDIO_FILE_OTHER + 0x000d;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER = 0x0800;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_EXTRACT_IMAGE = AVS_OFFICESTUDIO_FILE_OTHER + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO = AVS_OFFICESTUDIO_FILE_OTHER + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP = AVS_OFFICESTUDIO_FILE_OTHER + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT = AVS_OFFICESTUDIO_FILE_OTHER + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION = AVS_OFFICESTUDIO_FILE_OTHER + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING = AVS_OFFICESTUDIO_FILE_OTHER + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_OOXML = AVS_OFFICESTUDIO_FILE_OTHER + 0x0007;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_JSON = AVS_OFFICESTUDIO_FILE_OTHER + 0x0008; // Для mail-merge
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_ODF = AVS_OFFICESTUDIO_FILE_OTHER + 0x000a;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_MS_MITCRYPTO = AVS_OFFICESTUDIO_FILE_OTHER + 0x000b;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_MS_VBAPROJECT = AVS_OFFICESTUDIO_FILE_OTHER + 0x000c;
|
||||
export const AVS_OFFICESTUDIO_FILE_OTHER_PACKAGE_IN_OLE = AVS_OFFICESTUDIO_FILE_OTHER + 0x000d;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_TEAMLAB = 0x1000;
|
||||
exports.AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY = exports.AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY = exports.AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY = exports.AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_TEAMLAB = 0x1000;
|
||||
export const AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY = AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY = AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY = AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0003;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_CANVAS = 0x2000;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CANVAS_WORD = exports.AVS_OFFICESTUDIO_FILE_CANVAS + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET = exports.AVS_OFFICESTUDIO_FILE_CANVAS + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION = exports.AVS_OFFICESTUDIO_FILE_CANVAS + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_CANVAS_PDF = exports.AVS_OFFICESTUDIO_FILE_CANVAS + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_CANVAS = 0x2000;
|
||||
export const AVS_OFFICESTUDIO_FILE_CANVAS_WORD = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_CANVAS_PDF = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0004;
|
||||
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW = 0x4000;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW_VSDX = exports.AVS_OFFICESTUDIO_FILE_DRAW + 0x0001;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW_VSSX = exports.AVS_OFFICESTUDIO_FILE_DRAW + 0x0002;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW_VSTX = exports.AVS_OFFICESTUDIO_FILE_DRAW + 0x0003;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW_VSDM = exports.AVS_OFFICESTUDIO_FILE_DRAW + 0x0004;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW_VSSM = exports.AVS_OFFICESTUDIO_FILE_DRAW + 0x0005;
|
||||
exports.AVS_OFFICESTUDIO_FILE_DRAW_VSTM = exports.AVS_OFFICESTUDIO_FILE_DRAW + 0x0006;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW = 0x4000;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW_VSDX = AVS_OFFICESTUDIO_FILE_DRAW + 0x0001;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW_VSSX = AVS_OFFICESTUDIO_FILE_DRAW + 0x0002;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW_VSTX = AVS_OFFICESTUDIO_FILE_DRAW + 0x0003;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW_VSDM = AVS_OFFICESTUDIO_FILE_DRAW + 0x0004;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW_VSSM = AVS_OFFICESTUDIO_FILE_DRAW + 0x0005;
|
||||
export const AVS_OFFICESTUDIO_FILE_DRAW_VSTM = AVS_OFFICESTUDIO_FILE_DRAW + 0x0006;
|
||||
|
||||
exports.NO_ERROR = 0;
|
||||
exports.UNKNOWN = -1;
|
||||
exports.READ_REQUEST_STREAM = -3;
|
||||
exports.WEB_REQUEST = -4;
|
||||
exports.CHANGE_DOC_INFO = -5;
|
||||
exports.TASK_QUEUE = -20;
|
||||
exports.TASK_RESULT = -40;
|
||||
exports.STORAGE = -60;
|
||||
exports.STORAGE_FILE_NO_FOUND = -61;
|
||||
exports.STORAGE_READ = -62;
|
||||
exports.STORAGE_WRITE = -63;
|
||||
exports.STORAGE_REMOVE_DIR = -64;
|
||||
exports.STORAGE_CREATE_DIR = -65;
|
||||
exports.STORAGE_GET_INFO = -66;
|
||||
exports.CONVERT = -80;
|
||||
exports.CONVERT_DOWNLOAD = -81;
|
||||
exports.CONVERT_UNKNOWN_FORMAT = -82;
|
||||
exports.CONVERT_TIMEOUT = -83;
|
||||
exports.CONVERT_READ_FILE = -84;
|
||||
exports.CONVERT_DRM_UNSUPPORTED = -85;
|
||||
exports.CONVERT_CORRUPTED = -86;
|
||||
exports.CONVERT_LIBREOFFICE = -87;
|
||||
exports.CONVERT_PARAMS = -88;
|
||||
exports.CONVERT_NEED_PARAMS = -89;
|
||||
exports.CONVERT_DRM = -90;
|
||||
exports.CONVERT_PASSWORD = -91;
|
||||
exports.CONVERT_ICU = -92;
|
||||
exports.CONVERT_LIMITS = -93;
|
||||
exports.CONVERT_TEMPORARY = -94;
|
||||
exports.CONVERT_DETECT = -95;
|
||||
exports.CONVERT_CELLLIMITS = -96;
|
||||
exports.CONVERT_DEAD_LETTER = -99;
|
||||
exports.UPLOAD = -100;
|
||||
exports.UPLOAD_CONTENT_LENGTH = -101;
|
||||
exports.UPLOAD_EXTENSION = -102;
|
||||
exports.UPLOAD_COUNT_FILES = -103;
|
||||
exports.UPLOAD_URL = -104;
|
||||
exports.VKEY = -120;
|
||||
exports.VKEY_ENCRYPT = -121;
|
||||
exports.VKEY_KEY_EXPIRE = -122;
|
||||
exports.VKEY_USER_COUNT_EXCEED = -123;
|
||||
exports.VKEY_TIME_EXPIRE = -124;
|
||||
exports.VKEY_TIME_INCORRECT = -125;
|
||||
exports.EDITOR_CHANGES = -160;
|
||||
exports.PASSWORD = -180;
|
||||
export const NO_ERROR = 0;
|
||||
export const UNKNOWN = -1;
|
||||
export const READ_REQUEST_STREAM = -3;
|
||||
export const WEB_REQUEST = -4;
|
||||
export const CHANGE_DOC_INFO = -5;
|
||||
export const TASK_QUEUE = -20;
|
||||
export const TASK_RESULT = -40;
|
||||
export const STORAGE = -60;
|
||||
export const STORAGE_FILE_NO_FOUND = -61;
|
||||
export const STORAGE_READ = -62;
|
||||
export const STORAGE_WRITE = -63;
|
||||
export const STORAGE_REMOVE_DIR = -64;
|
||||
export const STORAGE_CREATE_DIR = -65;
|
||||
export const STORAGE_GET_INFO = -66;
|
||||
export const CONVERT = -80;
|
||||
export const CONVERT_DOWNLOAD = -81;
|
||||
export const CONVERT_UNKNOWN_FORMAT = -82;
|
||||
export const CONVERT_TIMEOUT = -83;
|
||||
export const CONVERT_READ_FILE = -84;
|
||||
export const CONVERT_DRM_UNSUPPORTED = -85;
|
||||
export const CONVERT_CORRUPTED = -86;
|
||||
export const CONVERT_LIBREOFFICE = -87;
|
||||
export const CONVERT_PARAMS = -88;
|
||||
export const CONVERT_NEED_PARAMS = -89;
|
||||
export const CONVERT_DRM = -90;
|
||||
export const CONVERT_PASSWORD = -91;
|
||||
export const CONVERT_ICU = -92;
|
||||
export const CONVERT_LIMITS = -93;
|
||||
export const CONVERT_TEMPORARY = -94;
|
||||
export const CONVERT_DETECT = -95;
|
||||
export const CONVERT_CELLLIMITS = -96;
|
||||
export const CONVERT_DEAD_LETTER = -99;
|
||||
export const UPLOAD = -100;
|
||||
export const UPLOAD_CONTENT_LENGTH = -101;
|
||||
export const UPLOAD_EXTENSION = -102;
|
||||
export const UPLOAD_COUNT_FILES = -103;
|
||||
export const UPLOAD_URL = -104;
|
||||
export const VKEY = -120;
|
||||
export const VKEY_ENCRYPT = -121;
|
||||
export const VKEY_KEY_EXPIRE = -122;
|
||||
export const VKEY_USER_COUNT_EXCEED = -123;
|
||||
export const VKEY_TIME_EXPIRE = -124;
|
||||
export const VKEY_TIME_INCORRECT = -125;
|
||||
export const EDITOR_CHANGES = -160;
|
||||
export const PASSWORD = -180;
|
||||
|
||||
//Quorum queues internally only support two priorities: high and normal.
|
||||
//Messages without a priority set will be mapped to normal as will priorities 0 - 4.
|
||||
//Messages with a priority higher than 4 will be mapped to high.
|
||||
exports.QUEUE_PRIORITY_VERY_LOW = 2;
|
||||
exports.QUEUE_PRIORITY_LOW = 3;
|
||||
exports.QUEUE_PRIORITY_NORMAL = 4;
|
||||
exports.QUEUE_PRIORITY_HIGH = 5;
|
||||
exports.QUEUE_PRIORITY_VERY_HIGH = 6;
|
||||
export const QUEUE_PRIORITY_VERY_LOW = 2;
|
||||
export const QUEUE_PRIORITY_LOW = 3;
|
||||
export const QUEUE_PRIORITY_NORMAL = 4;
|
||||
export const QUEUE_PRIORITY_HIGH = 5;
|
||||
export const QUEUE_PRIORITY_VERY_HIGH = 6;
|
||||
|
||||
exports.EDITOR_TYPE_WORD = 0;
|
||||
exports.EDITOR_TYPE_SPREADSHEET = 1;
|
||||
exports.EDITOR_TYPE_PRESENTATION = 2;
|
||||
exports.EDITOR_TYPE_CONVERTATION = 3;
|
||||
export const EDITOR_TYPE_WORD = 0;
|
||||
export const EDITOR_TYPE_SPREADSHEET = 1;
|
||||
export const EDITOR_TYPE_PRESENTATION = 2;
|
||||
export const EDITOR_TYPE_CONVERTATION = 3;
|
||||
|
||||
exports.PACKAGE_TYPE_OS = 0;
|
||||
exports.PACKAGE_TYPE_I = 1;
|
||||
exports.PACKAGE_TYPE_D = 2;
|
||||
export const PACKAGE_TYPE_OS = 0;
|
||||
export const PACKAGE_TYPE_I = 1;
|
||||
export const PACKAGE_TYPE_D = 2;
|
||||
|
||||
exports.REDIS_KEY_SHUTDOWN = 'shutdown';
|
||||
exports.REDIS_KEY_LICENSE = 'license';
|
||||
exports.REDIS_KEY_LICENSE_T = 'licenseT';
|
||||
export const REDIS_KEY_SHUTDOWN = 'shutdown';
|
||||
export const REDIS_KEY_LICENSE = 'license';
|
||||
export const REDIS_KEY_LICENSE_T = 'licenseT';
|
||||
|
||||
exports.SHUTDOWN_CODE = 4001;
|
||||
exports.SHUTDOWN_REASON = 'server shutdown';
|
||||
exports.SESSION_IDLE_CODE = 4002;
|
||||
exports.SESSION_IDLE_REASON = 'idle session expires';
|
||||
exports.SESSION_ABSOLUTE_CODE = 4003;
|
||||
exports.SESSION_ABSOLUTE_REASON = 'absolute session expires';
|
||||
exports.ACCESS_DENIED_CODE = 4004;
|
||||
exports.ACCESS_DENIED_REASON = 'access deny';
|
||||
exports.JWT_EXPIRED_CODE = 4005;
|
||||
exports.JWT_EXPIRED_REASON = 'token:';
|
||||
exports.JWT_ERROR_CODE = 4006;
|
||||
exports.JWT_ERROR_REASON = 'token:';
|
||||
exports.DROP_CODE = 4007;
|
||||
exports.DROP_REASON = 'drop';
|
||||
exports.UPDATE_VERSION_CODE = 4008;
|
||||
exports.UPDATE_VERSION = 'update version';
|
||||
exports.NO_CACHE_CODE = 4009;
|
||||
exports.NO_CACHE = 'no cache';
|
||||
exports.RESTORE_CODE = 4010;
|
||||
exports.RESTORE = 'no cache';
|
||||
export const SHUTDOWN_CODE = 4001;
|
||||
export const SHUTDOWN_REASON = 'server shutdown';
|
||||
export const SESSION_IDLE_CODE = 4002;
|
||||
export const SESSION_IDLE_REASON = 'idle session expires';
|
||||
export const SESSION_ABSOLUTE_CODE = 4003;
|
||||
export const SESSION_ABSOLUTE_REASON = 'absolute session expires';
|
||||
export const ACCESS_DENIED_CODE = 4004;
|
||||
export const ACCESS_DENIED_REASON = 'access deny';
|
||||
export const JWT_EXPIRED_CODE = 4005;
|
||||
export const JWT_EXPIRED_REASON = 'token:';
|
||||
export const JWT_ERROR_CODE = 4006;
|
||||
export const JWT_ERROR_REASON = 'token:';
|
||||
export const DROP_CODE = 4007;
|
||||
export const DROP_REASON = 'drop';
|
||||
export const UPDATE_VERSION_CODE = 4008;
|
||||
export const UPDATE_VERSION = 'update version';
|
||||
export const NO_CACHE_CODE = 4009;
|
||||
export const NO_CACHE = 'no cache';
|
||||
export const RESTORE_CODE = 4010;
|
||||
export const RESTORE = 'no cache';
|
||||
|
||||
exports.CONTENT_DISPOSITION_INLINE = 'inline';
|
||||
exports.CONTENT_DISPOSITION_ATTACHMENT = 'attachment';
|
||||
export const CONTENT_DISPOSITION_INLINE = 'inline';
|
||||
export const CONTENT_DISPOSITION_ATTACHMENT = 'attachment';
|
||||
|
||||
exports.CONN_CLOSED = "closed";
|
||||
export const CONN_CLOSED = "closed";
|
||||
|
||||
exports.FILE_STATUS_OK = 'ok';
|
||||
exports.FILE_STATUS_UPDATE_VERSION = 'updateversion';
|
||||
export const FILE_STATUS_OK = 'ok';
|
||||
export const FILE_STATUS_UPDATE_VERSION = 'updateversion';
|
||||
|
||||
exports.ACTIVEMQ_QUEUE_PREFIX = 'queue://';
|
||||
exports.ACTIVEMQ_TOPIC_PREFIX = 'topic://';
|
||||
export const ACTIVEMQ_QUEUE_PREFIX = 'queue://';
|
||||
export const ACTIVEMQ_TOPIC_PREFIX = 'topic://';
|
||||
|
||||
exports.TEMPLATES_DEFAULT_LOCALE = 'en-US';
|
||||
exports.TEMPLATES_FOLDER_LOCALE_COLLISON_MAP = {
|
||||
export const TEMPLATES_DEFAULT_LOCALE = 'en-US';
|
||||
export const TEMPLATES_FOLDER_LOCALE_COLLISON_MAP = {
|
||||
'en': 'en-US',
|
||||
'pt': 'pt-BR',
|
||||
'zh': 'zh-CH',
|
||||
'pt-PT': 'pt-PT',
|
||||
'zh-TW': 'zh-TW'
|
||||
};
|
||||
exports.TABLE_RESULT_SCHEMA = [
|
||||
|
||||
export const TABLE_RESULT_SCHEMA = [
|
||||
'tenant',
|
||||
'id',
|
||||
'status',
|
||||
@ -325,7 +326,8 @@ exports.TABLE_RESULT_SCHEMA = [
|
||||
'password',
|
||||
'additional'
|
||||
];
|
||||
exports.TABLE_CHANGES_SCHEMA = [
|
||||
|
||||
export const TABLE_CHANGES_SCHEMA = [
|
||||
'tenant',
|
||||
'id',
|
||||
'change_id',
|
||||
|
||||
@ -32,9 +32,9 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var constants = require('./constants');
|
||||
const {open} = require("node:fs/promises");
|
||||
import path from 'path';
|
||||
import * as constants from './constants.js';
|
||||
import { open } from 'node:fs/promises';
|
||||
|
||||
function getImageFormatBySignature(buffer) {
|
||||
var length = buffer.length;
|
||||
@ -196,7 +196,8 @@ function getImageFormatBySignature(buffer) {
|
||||
|
||||
return constants.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
}
|
||||
exports.getFormatFromString = function(ext) {
|
||||
|
||||
export function getFormatFromString(ext) {
|
||||
if (!ext) {
|
||||
return constants.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
}
|
||||
@ -356,8 +357,9 @@ exports.getFormatFromString = function(ext) {
|
||||
default:
|
||||
return constants.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
}
|
||||
};
|
||||
exports.getStringFromFormat = function(format) {
|
||||
}
|
||||
|
||||
export function getStringFromFormat(format) {
|
||||
switch (format) {
|
||||
case constants.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX:
|
||||
return 'docx';
|
||||
@ -535,8 +537,9 @@ exports.getStringFromFormat = function(format) {
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
};
|
||||
exports.getImageFormat = function(ctx, buffer) {
|
||||
}
|
||||
|
||||
export function getImageFormat(ctx, buffer) {
|
||||
var format = constants.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
try {
|
||||
//signature
|
||||
@ -546,23 +549,27 @@ exports.getImageFormat = function(ctx, buffer) {
|
||||
ctx.logger.error('error getImageFormat: %s', e.stack);
|
||||
}
|
||||
return format;
|
||||
};
|
||||
exports.isDocumentFormat = function(format) {
|
||||
}
|
||||
|
||||
export function isDocumentFormat(format) {
|
||||
return 0 !== (format & constants.AVS_OFFICESTUDIO_FILE_DOCUMENT) ||
|
||||
format === constants.AVS_OFFICESTUDIO_FILE_CANVAS_WORD ||
|
||||
format === constants.AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY;
|
||||
};
|
||||
exports.isSpreadsheetFormat = function(format) {
|
||||
}
|
||||
|
||||
export function isSpreadsheetFormat(format) {
|
||||
return 0 !== (format & constants.AVS_OFFICESTUDIO_FILE_SPREADSHEET) ||
|
||||
format === constants.AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET ||
|
||||
format === constants.AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY;
|
||||
};
|
||||
exports.isPresentationFormat = function(format) {
|
||||
}
|
||||
|
||||
export function isPresentationFormat(format) {
|
||||
return 0 !== (format & constants.AVS_OFFICESTUDIO_FILE_PRESENTATION) ||
|
||||
format === constants.AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION ||
|
||||
format === constants.AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY;
|
||||
};
|
||||
exports.isOOXFormat = function(format) {
|
||||
}
|
||||
|
||||
export function isOOXFormat(format) {
|
||||
return constants.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX === format
|
||||
|| constants.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM === format
|
||||
|| constants.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX === format
|
||||
@ -580,14 +587,16 @@ exports.isOOXFormat = function(format) {
|
||||
|| constants.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM === format
|
||||
|| constants.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX === format
|
||||
|| constants.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM === format;
|
||||
};
|
||||
exports.isBrowserEditorFormat = function(format) {
|
||||
}
|
||||
|
||||
export function isBrowserEditorFormat(format) {
|
||||
return constants.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF === format ||
|
||||
constants.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDFA === format ||
|
||||
constants.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU === format ||
|
||||
constants.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS === format;
|
||||
};
|
||||
function getDocumentFormatBySignature(buffer) {
|
||||
}
|
||||
|
||||
export function getDocumentFormatBySignature(buffer) {
|
||||
if (!buffer) {
|
||||
return constants.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
}
|
||||
@ -609,8 +618,9 @@ function getDocumentFormatBySignature(buffer) {
|
||||
|
||||
// Unknown format
|
||||
return constants.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
};
|
||||
async function getDocumentFormatByFile(file) {
|
||||
}
|
||||
|
||||
export async function getDocumentFormatByFile(file) {
|
||||
let firstBytesLen = 100;
|
||||
let buffer;
|
||||
let fd;
|
||||
@ -626,6 +636,4 @@ async function getDocumentFormatByFile(file) {
|
||||
await fd?.close();
|
||||
}
|
||||
return getDocumentFormatBySignature(buffer);
|
||||
};
|
||||
exports.getDocumentFormatBySignature = getDocumentFormatBySignature;
|
||||
exports.getDocumentFormatByFile = getDocumentFormatByFile
|
||||
}
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const constants = require('./constants');
|
||||
import * as constants from './constants.js';
|
||||
|
||||
const buildDate = '6/29/2016';
|
||||
const oBuildDate = new Date(buildDate);
|
||||
|
||||
exports.readLicense = async function () {
|
||||
export async function readLicense() {
|
||||
const c_LR = constants.LICENSE_RESULT;
|
||||
var now = new Date();
|
||||
var startDate = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1));//first day of current month
|
||||
@ -62,6 +62,6 @@ exports.readLicense = async function () {
|
||||
alias: "",
|
||||
multitenancy: false
|
||||
}, null];
|
||||
};
|
||||
}
|
||||
|
||||
exports.packageType = constants.PACKAGE_TYPE_OS;
|
||||
export const packageType = constants.PACKAGE_TYPE_OS;
|
||||
|
||||
@ -32,10 +32,9 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var config = require('config');
|
||||
var util = require('util');
|
||||
|
||||
var log4js = require('log4js');
|
||||
import config from 'config';
|
||||
import util from 'util';
|
||||
import log4js from 'log4js';
|
||||
|
||||
// https://stackoverflow.com/a/36643588
|
||||
var dateToJSONWithTZ = function (d) {
|
||||
@ -73,27 +72,35 @@ if (config.get('log.options.replaceConsole')) {
|
||||
console.error = logger.error.bind(logger);
|
||||
console.debug = logger.debug.bind(logger);
|
||||
}
|
||||
exports.getLogger = function (){
|
||||
|
||||
export function getLogger() {
|
||||
return log4js.getLogger.apply(log4js, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.trace = function (){
|
||||
}
|
||||
|
||||
export function trace() {
|
||||
return logger.trace.apply(logger, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.debug = function (){
|
||||
}
|
||||
|
||||
export function debug() {
|
||||
return logger.debug.apply(logger, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.info = function (){
|
||||
}
|
||||
|
||||
export function info() {
|
||||
return logger.info.apply(logger, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.warn = function (){
|
||||
}
|
||||
|
||||
export function warn() {
|
||||
return logger.warn.apply(logger, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.error = function (){
|
||||
}
|
||||
|
||||
export function error() {
|
||||
return logger.error.apply(logger, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.fatal = function (){
|
||||
}
|
||||
|
||||
export function fatal() {
|
||||
return logger.fatal.apply(logger, Array.prototype.slice.call(arguments));
|
||||
};
|
||||
exports.shutdown = function (callback) {
|
||||
}
|
||||
|
||||
export function shutdown(callback) {
|
||||
return log4js.shutdown(callback);
|
||||
};
|
||||
}
|
||||
|
||||
@ -32,8 +32,8 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const config = require('config');
|
||||
const nodemailer = require('nodemailer');
|
||||
import config from 'config';
|
||||
import nodemailer from 'nodemailer';
|
||||
|
||||
const cfgConnection = config.util.cloneDeep(config.get('email.connectionConfiguration'));
|
||||
|
||||
@ -93,7 +93,7 @@ function transportersRelease() {
|
||||
smtpTransporters.clear();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
createTransporter,
|
||||
send,
|
||||
deleteTransporter,
|
||||
|
||||
@ -31,19 +31,20 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const util = require('util');
|
||||
const config = require('config');
|
||||
const ms = require('ms');
|
||||
|
||||
const mailService = require('./mailService');
|
||||
import util from 'util';
|
||||
import config from 'config';
|
||||
import ms from 'ms';
|
||||
import * as mailService from './mailService.js';
|
||||
import * as cfgEditorDataStorageModule from './../../DocService/sources/editorDataMemory.js';
|
||||
import * as cfgEditorStatStorageModule from './../../DocService/sources/editorDataRedis.js';
|
||||
|
||||
const cfgMailServer = config.util.cloneDeep(config.get('email.smtpServerConfiguration'));
|
||||
const cfgMailMessageDefaults = config.util.cloneDeep(config.get('email.contactDefaults'));
|
||||
const cfgEditorDataStorage = config.get('services.CoAuthoring.server.editorDataStorage');
|
||||
const cfgEditorStatStorage = config.get('services.CoAuthoring.server.editorStatStorage');
|
||||
const editorStatStorage = require('./../../DocService/sources/' + (cfgEditorStatStorage || cfgEditorDataStorage));
|
||||
|
||||
const editorStat = editorStatStorage.EditorStat ? new editorStatStorage.EditorStat() : new editorStatStorage();
|
||||
const editorStatStorage = cfgEditorStatStorage? cfgEditorStatStorageModule: cfgEditorDataStorage ? cfgEditorDataStorageModule: null;
|
||||
const editorStat = editorStatStorage.EditorStat ? new editorStatStorage.EditorStat() : new editorStatStorage.default();
|
||||
const notificationTypes = {
|
||||
LICENSE_EXPIRATION_WARNING: 'licenseExpirationWarning',
|
||||
LICENSE_EXPIRATION_ERROR: 'licenseExpirationError',
|
||||
@ -144,7 +145,7 @@ async function notifyRule(ctx, tenRule, title, message) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
notificationTypes,
|
||||
notify
|
||||
};
|
||||
|
||||
@ -32,10 +32,10 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const utils = require('./utils');
|
||||
const logger = require('./logger');
|
||||
const constants = require('./constants');
|
||||
const tenantManager = require('./tenantManager');
|
||||
import * as utils from './utils.js';
|
||||
import * as logger from './logger.js';
|
||||
import * as constants from './constants.js';
|
||||
import * as tenantManager from './tenantManager.js';
|
||||
|
||||
function Context(){
|
||||
this.logger = logger.getLogger('nodeJS');
|
||||
@ -148,5 +148,5 @@ function getImpl(object, property) {
|
||||
return getImpl(value, elems.slice(1));
|
||||
};
|
||||
|
||||
exports.Context = Context;
|
||||
exports.global = new Context();
|
||||
export { Context };
|
||||
export const global = new Context();
|
||||
|
||||
@ -31,15 +31,15 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var config = require('config');
|
||||
var amqp = require('amqplib/callback_api');
|
||||
var logger = require('./logger');
|
||||
const operationContext = require('./operationContext');
|
||||
import config from 'config';
|
||||
import amqp from 'amqplib/callback_api.js';
|
||||
import * as logger from './logger.js';
|
||||
import * as operationContext from './operationContext.js';
|
||||
|
||||
var cfgRabbitUrl = config.get('rabbitmq.url');
|
||||
var cfgRabbitSocketOptions = config.util.cloneDeep(config.get('rabbitmq.socketOptions'));
|
||||
const cfgRabbitUrl = config.get('rabbitmq.url');
|
||||
const cfgRabbitSocketOptions = config.util.cloneDeep(config.get('rabbitmq.socketOptions'));
|
||||
|
||||
var RECONNECT_TIMEOUT = 1000;
|
||||
const RECONNECT_TIMEOUT = 1000;
|
||||
|
||||
function connetPromise(closeCallback) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
@ -134,11 +134,13 @@ function closePromise(conn) {
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.connetPromise = connetPromise;
|
||||
module.exports.createChannelPromise = createChannelPromise;
|
||||
module.exports.createConfirmChannelPromise = createConfirmChannelPromise;
|
||||
module.exports.assertExchangePromise = assertExchangePromise;
|
||||
module.exports.assertQueuePromise = assertQueuePromise;
|
||||
module.exports.consumePromise = consumePromise;
|
||||
module.exports.closePromise = closePromise;
|
||||
module.exports.RECONNECT_TIMEOUT = RECONNECT_TIMEOUT;
|
||||
export {
|
||||
connetPromise,
|
||||
createChannelPromise,
|
||||
createConfirmChannelPromise,
|
||||
assertExchangePromise,
|
||||
assertQueuePromise,
|
||||
consumePromise,
|
||||
closePromise,
|
||||
RECONNECT_TIMEOUT
|
||||
};
|
||||
|
||||
@ -32,19 +32,21 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var statsD = require('node-statsd');
|
||||
var configStatsD = require('config').get('statsd');
|
||||
import statsD from 'node-statsd';
|
||||
import config from 'config';
|
||||
|
||||
var cfgStatsDUseMetrics = configStatsD.get('useMetrics');
|
||||
var cfgStatsDHost = configStatsD.get('host');
|
||||
var cfgStatsDPort = configStatsD.get('port');
|
||||
var cfgStatsDPrefix = configStatsD.get('prefix');
|
||||
const configStatsD = config.get('statsd');
|
||||
|
||||
var clientStatsD = null;
|
||||
const cfgStatsDUseMetrics = configStatsD.get('useMetrics');
|
||||
const cfgStatsDHost = configStatsD.get('host');
|
||||
const cfgStatsDPort = configStatsD.get('port');
|
||||
const cfgStatsDPrefix = configStatsD.get('prefix');
|
||||
|
||||
let clientStatsD = null;
|
||||
if(cfgStatsDUseMetrics) {
|
||||
clientStatsD = new statsD({host: cfgStatsDHost, port:cfgStatsDPort, prefix: cfgStatsDPrefix});
|
||||
}
|
||||
|
||||
exports.getClient = function() {
|
||||
export function getClient() {
|
||||
return clientStatsD;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1,16 +1,13 @@
|
||||
'use strict';
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { BlobServiceClient, StorageSharedKeyCredential, generateBlobSASQueryParameters, BlobSASPermissions } = require('@azure/storage-blob');
|
||||
let mime;
|
||||
import('mime').then(module => {
|
||||
mime = module.default;
|
||||
})
|
||||
const config = require('config');
|
||||
const { Readable } = require('stream');
|
||||
const utils = require('../utils');
|
||||
const ms = require('ms');
|
||||
const commonDefines = require('../commondefines');
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { BlobServiceClient, StorageSharedKeyCredential, generateBlobSASQueryParameters, BlobSASPermissions } from '@azure/storage-blob';
|
||||
import config from 'config';
|
||||
import { Readable } from 'stream';
|
||||
import * as utils from '../utils.js';
|
||||
import ms from 'ms';
|
||||
import * as commonDefines from '../commondefines.js';
|
||||
import mime from 'mime';
|
||||
|
||||
const cfgExpSessionAbsolute = ms(config.get('services.CoAuthoring.expire.sessionabsolute'));
|
||||
const MAX_DELETE_OBJECTS = 1000;
|
||||
@ -218,7 +215,7 @@ function needServeStatic() {
|
||||
return false;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
headObject,
|
||||
getObject,
|
||||
createReadStream,
|
||||
@ -228,6 +225,6 @@ module.exports = {
|
||||
listObjects,
|
||||
deleteObject,
|
||||
deletePath,
|
||||
getSignedUrl: getSignedUrlWrapper,
|
||||
needServeStatic
|
||||
getSignedUrlWrapper as getSignedUrl,
|
||||
needServeStatic,
|
||||
};
|
||||
|
||||
@ -31,17 +31,24 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const os = require('os');
|
||||
const cluster = require('cluster');
|
||||
var config = require('config');
|
||||
var utils = require('../utils');
|
||||
import os from 'os';
|
||||
import cluster from 'cluster';
|
||||
import config from 'config';
|
||||
import * as utils from '../utils.js';
|
||||
import * as storageFs from './storage-fs.js';
|
||||
import * as storageAz from './storage-az.js';
|
||||
import * as storageS3 from './storage-s3.js';
|
||||
import * as tenantManager from '../tenantManager.js';
|
||||
|
||||
const cfgCacheStorage = config.get('storage');
|
||||
const cfgPersistentStorage = utils.deepMergeObjects({}, cfgCacheStorage, config.get('persistentStorage'));
|
||||
|
||||
const cacheStorage = require('./' + cfgCacheStorage.name);
|
||||
const persistentStorage = require('./' + cfgPersistentStorage.name);
|
||||
const tenantManager = require('../tenantManager');
|
||||
const cacheStorage = cfgCacheStorage.name === 'storage-fs' ? storageFs : cfgCacheStorage.name === 'storage-az' ? storageAz : cfgCacheStorage.name === 'storage-s3' ? storageS3 : null;
|
||||
const persistentStorage = cfgPersistentStorage.name === 'storage-fs' ? storageFs : cfgPersistentStorage.name === 'storage-az' ? storageAz : cfgPersistentStorage.name === 'storage-s3' ? storageS3 : null;
|
||||
|
||||
// export { init };
|
||||
|
||||
// export { cacheStorage, persistentStorage, tenantManager };
|
||||
|
||||
const HEALTH_CHECK_KEY_MAX = 10000;
|
||||
|
||||
@ -193,7 +200,7 @@ function needServeStatic(opt_specialDir) {
|
||||
return storage.needServeStatic();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
headObject,
|
||||
getObject,
|
||||
createReadStream,
|
||||
|
||||
@ -32,15 +32,14 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const { cp, rm, mkdir } = require('fs/promises');
|
||||
const { stat, readFile, writeFile } = require('fs/promises');
|
||||
var path = require('path');
|
||||
var utils = require("../utils");
|
||||
var crypto = require('crypto');
|
||||
const ms = require('ms');
|
||||
const config = require('config');
|
||||
const commonDefines = require('../commondefines');
|
||||
const constants = require('../constants');
|
||||
import { cp, rm, mkdir, stat, readFile, writeFile } from 'fs/promises';
|
||||
import path from 'path';
|
||||
import * as utils from '../utils.js';
|
||||
import crypto from 'crypto';
|
||||
import ms from 'ms';
|
||||
import config from 'config';
|
||||
import * as commonDefines from '../commondefines.js';
|
||||
import * as constants from '../constants.js';
|
||||
|
||||
const cfgExpSessionAbsolute = ms(config.get('services.CoAuthoring.expire.sessionabsolute'));
|
||||
|
||||
@ -168,7 +167,7 @@ function needServeStatic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
headObject,
|
||||
getObject,
|
||||
createReadStream,
|
||||
|
||||
@ -31,24 +31,21 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const fs = require('fs');
|
||||
const url = require('url');
|
||||
const { Agent: HttpsAgent } = require('https');
|
||||
const { Agent: HttpAgent } = require('http');
|
||||
const path = require('path');
|
||||
const { S3Client, ListObjectsCommand, HeadObjectCommand} = require("@aws-sdk/client-s3");
|
||||
const { GetObjectCommand, PutObjectCommand, CopyObjectCommand} = require("@aws-sdk/client-s3");
|
||||
const { DeleteObjectsCommand, DeleteObjectCommand } = require("@aws-sdk/client-s3");
|
||||
const { getSignedUrl } = require("@aws-sdk/s3-request-presigner");
|
||||
const { NodeHttpHandler } = require("@smithy/node-http-handler");
|
||||
let mime;
|
||||
import('mime').then(module => {
|
||||
mime = module.default;
|
||||
})
|
||||
const config = require('config');
|
||||
const utils = require('../utils');
|
||||
const ms = require('ms');
|
||||
const commonDefines = require('../commondefines');
|
||||
import fs from 'fs';
|
||||
import url from 'url';
|
||||
import { Agent as HttpsAgent } from 'https';
|
||||
import { Agent as HttpAgent } from 'http';
|
||||
import path from 'path';
|
||||
import { S3Client, ListObjectsCommand, HeadObjectCommand } from '@aws-sdk/client-s3';
|
||||
import { GetObjectCommand, PutObjectCommand, CopyObjectCommand } from '@aws-sdk/client-s3';
|
||||
import { DeleteObjectsCommand, DeleteObjectCommand } from '@aws-sdk/client-s3';
|
||||
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
||||
import { NodeHttpHandler } from '@smithy/node-http-handler';
|
||||
import mime from 'mime';
|
||||
import config from 'config';
|
||||
import * as utils from '../utils.js';
|
||||
import ms from 'ms';
|
||||
import * as commonDefines from '../commondefines.js';
|
||||
|
||||
const cfgExpSessionAbsolute = ms(config.get('services.CoAuthoring.expire.sessionabsolute'));
|
||||
const cfgRequestDefaults = config.util.cloneDeep(config.get('services.CoAuthoring.requestDefaults'));
|
||||
@ -256,16 +253,16 @@ function needServeStatic() {
|
||||
return false;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
headObject,
|
||||
getObject,
|
||||
createReadStream,
|
||||
putObject,
|
||||
uploadObject,
|
||||
copyObject,
|
||||
listObjects,
|
||||
deleteObject,
|
||||
deletePath,
|
||||
getSignedUrl: getSignedUrlWrapper,
|
||||
needServeStatic
|
||||
export {
|
||||
headObject,
|
||||
getObject,
|
||||
createReadStream,
|
||||
putObject,
|
||||
uploadObject,
|
||||
copyObject,
|
||||
listObjects,
|
||||
deleteObject,
|
||||
deletePath,
|
||||
getSignedUrlWrapper as getSignedUrl,
|
||||
needServeStatic,
|
||||
};
|
||||
|
||||
@ -31,16 +31,16 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var config = require('config');
|
||||
var events = require('events');
|
||||
var util = require('util');
|
||||
var co = require('co');
|
||||
var utils = require('./utils');
|
||||
var constants = require('./constants');
|
||||
var rabbitMQCore = require('./rabbitMQCore');
|
||||
var activeMQCore = require('./activeMQCore');
|
||||
const commonDefines = require('./commondefines');
|
||||
const operationContext = require('./operationContext');
|
||||
import config from 'config';
|
||||
import { EventEmitter } from 'events';
|
||||
import util from 'util';
|
||||
import co from 'co';
|
||||
import * as utils from './utils.js';
|
||||
import * as constants from './constants.js';
|
||||
import * as rabbitMQCore from './rabbitMQCore.js';
|
||||
import * as activeMQCore from './activeMQCore.js';
|
||||
import * as commonDefines from './commondefines.js';
|
||||
import * as operationContext from './operationContext.js';
|
||||
|
||||
const cfgMaxRedeliveredCount = config.get('FileConverter.converter.maxRedeliveredCount');
|
||||
const cfgQueueType = config.get('queue.type');
|
||||
@ -496,115 +496,125 @@ if (commonDefines.c_oAscQueueType.rabbitmq === cfgQueueType) {
|
||||
healthCheck = healthCheckActive;
|
||||
}
|
||||
|
||||
function TaskQueueRabbitMQ(simulateErrorResponse) {
|
||||
this.isClose = false;
|
||||
this.connection = null;
|
||||
this.channelConvertTask = null;
|
||||
this.channelConvertTaskReceive = null;
|
||||
this.channelConvertDead = null;
|
||||
this.channelConvertResponse = null;
|
||||
this.channelConvertResponseReceive = null;
|
||||
this.channelDelayed = null;
|
||||
this.addTaskStore = [];
|
||||
this.addDelayedStore = [];
|
||||
this.channelConvertTaskData = {};
|
||||
this.channelConvertResponseData = {};
|
||||
this.channelDelayedData = {};
|
||||
this.simulateErrorResponse = simulateErrorResponse;
|
||||
}
|
||||
util.inherits(TaskQueueRabbitMQ, events.EventEmitter);
|
||||
TaskQueueRabbitMQ.prototype.init = function (isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed, callback) {
|
||||
init(this, isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed, callback);
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.initPromise = function(isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed) {
|
||||
var t = this;
|
||||
return new Promise(function(resolve, reject) {
|
||||
init(t, isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed, function(err) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
class TaskQueueRabbitMQ extends EventEmitter {
|
||||
constructor(simulateErrorResponse) {
|
||||
super();
|
||||
this.isClose = false;
|
||||
this.connection = null;
|
||||
this.channelConvertTask = null;
|
||||
this.channelConvertTaskReceive = null;
|
||||
this.channelConvertDead = null;
|
||||
this.channelConvertResponse = null;
|
||||
this.channelConvertResponseReceive = null;
|
||||
this.channelDelayed = null;
|
||||
this.addTaskStore = [];
|
||||
this.addDelayedStore = [];
|
||||
this.channelConvertTaskData = {};
|
||||
this.channelConvertResponseData = {};
|
||||
this.channelDelayedData = {};
|
||||
this.simulateErrorResponse = simulateErrorResponse;
|
||||
}
|
||||
|
||||
init(isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed, callback) {
|
||||
init(this, isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed, callback);
|
||||
}
|
||||
|
||||
initPromise(isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed) {
|
||||
var t = this;
|
||||
return new Promise(function(resolve, reject) {
|
||||
init(t, isAddTask, isAddResponse, isAddTaskReceive, isAddResponseReceive, isEmitDead, isAddDelayed, function(err) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
addTask(task, priority, opt_expiration, opt_headers) {
|
||||
task.setVisibilityTimeout(cfgVisibilityTimeout);
|
||||
return addTaskString(this, JSON.stringify(task), priority, opt_expiration);
|
||||
}
|
||||
|
||||
addResponse(task) {
|
||||
var t = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
var content = Buffer.from(JSON.stringify(task));
|
||||
if (null != t.channelConvertResponse) {
|
||||
addResponse(t, content, function (err, ok) {
|
||||
if (null != err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.addTask = function (task, priority, opt_expiration, opt_headers) {
|
||||
task.setVisibilityTimeout(cfgVisibilityTimeout);
|
||||
return addTaskString(this, JSON.stringify(task), priority, opt_expiration);
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.addResponse = function (task) {
|
||||
var t = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
var content = Buffer.from(JSON.stringify(task));
|
||||
if (null != t.channelConvertResponse) {
|
||||
addResponse(t, content, function (err, ok) {
|
||||
if (null != err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.addDelayed = function (task, ttl) {
|
||||
var t = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
var content = new Buffer(JSON.stringify(task));
|
||||
if (null != t.channelDelayed) {
|
||||
addDelayed(t, content, ttl, function (err, ok) {
|
||||
if (null != err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
t.addDelayedStore.push({task: content, ttl: ttl});
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.close = function () {
|
||||
let t = this;
|
||||
return co(function* () {
|
||||
t.isClose = true;
|
||||
if (t.channelConvertTask) {
|
||||
yield close(t.channelConvertTask);
|
||||
}
|
||||
if (t.channelConvertTaskReceive) {
|
||||
yield close(t.channelConvertTaskReceive);
|
||||
}
|
||||
if (t.channelConvertDead) {
|
||||
yield close(t.channelConvertDead);
|
||||
}
|
||||
if (t.channelConvertResponse) {
|
||||
yield close(t.channelConvertResponse);
|
||||
}
|
||||
if (t.channelConvertResponseReceive) {
|
||||
yield close(t.channelConvertResponseReceive);
|
||||
}
|
||||
if (t.channelDelayed) {
|
||||
yield close(t.channelDelayed);
|
||||
}
|
||||
yield close(t.connection);
|
||||
});
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.closeOrWait = function() {
|
||||
if (commonDefines.c_oAscQueueType.rabbitmq === cfgQueueType) {
|
||||
return this.close();
|
||||
} else {
|
||||
//todo remove sleep
|
||||
//sleep to wait acknowledge
|
||||
return this.close().then(() => {
|
||||
return utils.sleep(1000);
|
||||
}
|
||||
|
||||
addDelayed(task, ttl) {
|
||||
var t = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
var content = new Buffer(JSON.stringify(task));
|
||||
if (null != t.channelDelayed) {
|
||||
addDelayed(t, content, ttl, function (err, ok) {
|
||||
if (null != err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
t.addDelayedStore.push({task: content, ttl: ttl});
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
TaskQueueRabbitMQ.prototype.healthCheck = function() {
|
||||
return healthCheck(this);
|
||||
};
|
||||
|
||||
module.exports = TaskQueueRabbitMQ;
|
||||
async close() {
|
||||
let t = this;
|
||||
return co(function* () {
|
||||
t.isClose = true;
|
||||
if (t.channelConvertTask) {
|
||||
yield close(t.channelConvertTask);
|
||||
}
|
||||
if (t.channelConvertTaskReceive) {
|
||||
yield close(t.channelConvertTaskReceive);
|
||||
}
|
||||
if (t.channelConvertDead) {
|
||||
yield close(t.channelConvertDead);
|
||||
}
|
||||
if (t.channelConvertResponse) {
|
||||
yield close(t.channelConvertResponse);
|
||||
}
|
||||
if (t.channelConvertResponseReceive) {
|
||||
yield close(t.channelConvertResponseReceive);
|
||||
}
|
||||
if (t.channelDelayed) {
|
||||
yield close(t.channelDelayed);
|
||||
}
|
||||
yield close(t.connection);
|
||||
});
|
||||
}
|
||||
|
||||
closeOrWait() {
|
||||
if (commonDefines.c_oAscQueueType.rabbitmq === cfgQueueType) {
|
||||
return this.close();
|
||||
} else {
|
||||
//todo remove sleep
|
||||
//sleep to wait acknowledge
|
||||
return this.close().then(() => {
|
||||
return utils.sleep(1000);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
healthCheck() {
|
||||
return healthCheck(this);
|
||||
}
|
||||
}
|
||||
|
||||
export default TaskQueueRabbitMQ;
|
||||
|
||||
@ -32,15 +32,15 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const config = require('config');
|
||||
const co = require('co');
|
||||
const NodeCache = require( "node-cache" );
|
||||
const license = require('./../../Common/sources/license');
|
||||
const constants = require('./../../Common/sources/constants');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
const utils = require('./../../Common/sources/utils');
|
||||
const { readFile, readdir } = require('fs/promises');
|
||||
const path = require('path');
|
||||
import config from 'config';
|
||||
import co from 'co';
|
||||
import NodeCache from 'node-cache';
|
||||
import * as license from './license.js';
|
||||
import * as constants from './constants.js';
|
||||
import * as commonDefines from './commondefines.js';
|
||||
import * as utils from './utils.js';
|
||||
import { readFile, readdir } from 'fs/promises';
|
||||
import path from 'path';
|
||||
|
||||
const cfgTenantsBaseDomain = config.get('tenants.baseDomain');
|
||||
const cfgTenantsBaseDir = config.get('tenants.baseDir');
|
||||
@ -413,16 +413,18 @@ async function readLicenseTenant(ctx, licenseFile, baseVerifiedLicense) {
|
||||
return [res, oLicense];
|
||||
}
|
||||
|
||||
exports.getAllTenants = getAllTenants;
|
||||
exports.getDefautTenant = getDefautTenant;
|
||||
exports.getTenantByConnection = getTenantByConnection;
|
||||
exports.getTenantByRequest = getTenantByRequest;
|
||||
exports.getTenantPathPrefix = getTenantPathPrefix;
|
||||
exports.getTenantConfig = getTenantConfig;
|
||||
exports.getTenantSecret = getTenantSecret;
|
||||
exports.getTenantLicense = getTenantLicense;
|
||||
exports.getServerLicense = getServerLicense;
|
||||
exports.setDefLicense = setDefLicense;
|
||||
exports.isMultitenantMode = isMultitenantMode;
|
||||
exports.setMultitenantMode = setMultitenantMode;
|
||||
exports.isDefaultTenant = isDefaultTenant;
|
||||
export {
|
||||
getAllTenants,
|
||||
getDefautTenant,
|
||||
getTenantByConnection,
|
||||
getTenantByRequest,
|
||||
getTenantPathPrefix,
|
||||
getTenantConfig,
|
||||
getTenantSecret,
|
||||
getTenantLicense,
|
||||
getServerLicense,
|
||||
setDefLicense,
|
||||
isMultitenantMode,
|
||||
setMultitenantMode,
|
||||
isDefaultTenant
|
||||
};
|
||||
|
||||
@ -33,39 +33,36 @@
|
||||
'use strict';
|
||||
|
||||
//Fix EPROTO error in node 8.x at some web sites(https://github.com/nodejs/node/issues/21513)
|
||||
require("tls").DEFAULT_ECDH_CURVE = "auto";
|
||||
import { DEFAULT_ECDH_CURVE } from 'tls';
|
||||
// DEFAULT_ECDH_CURVE = "auto";
|
||||
|
||||
const { pipeline } = require('node:stream/promises');
|
||||
const { buffer } = require('node:stream/consumers');
|
||||
const { Transform } = require('stream');
|
||||
var config = require('config');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
const crypto = require('crypto');
|
||||
var url = require('url');
|
||||
var axios = require('../node_modules/axios/dist/node/axios.cjs');
|
||||
var co = require('co');
|
||||
var URI = require("uri-js-replace");
|
||||
let escapeStringRegexp;
|
||||
import('escape-string-regexp').then(module => {
|
||||
escapeStringRegexp = module.default;
|
||||
})
|
||||
const ipaddr = require('ipaddr.js');
|
||||
const getDnsCache = require('dnscache');
|
||||
const jwt = require('jsonwebtoken');
|
||||
const NodeCache = require( "node-cache" );
|
||||
const ms = require('ms');
|
||||
const constants = require('./constants');
|
||||
const commonDefines = require('./commondefines');
|
||||
const forwarded = require('forwarded');
|
||||
const { RequestFilteringHttpAgent, RequestFilteringHttpsAgent } = require("request-filtering-agent");
|
||||
const https = require('https');
|
||||
const http = require('http');
|
||||
const ca = require('win-ca/api');
|
||||
const util = require('util');
|
||||
|
||||
const contentDisposition = require('content-disposition');
|
||||
const operationContext = require("./operationContext");
|
||||
import { pipeline } from 'node:stream/promises';
|
||||
import { buffer } from 'node:stream/consumers';
|
||||
import { Transform } from 'stream';
|
||||
import config from 'config';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import crypto from 'crypto';
|
||||
import url from 'url';
|
||||
import axios from 'axios';
|
||||
import co from 'co';
|
||||
import URI from 'uri-js-replace';
|
||||
import ipaddr from 'ipaddr.js';
|
||||
import getDnsCache from 'dnscache';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import NodeCache from 'node-cache';
|
||||
import ms from 'ms';
|
||||
import * as constants from './constants.js';
|
||||
import * as commonDefines from './commondefines.js';
|
||||
import forwarded from 'forwarded';
|
||||
import { RequestFilteringHttpAgent, RequestFilteringHttpsAgent } from 'request-filtering-agent';
|
||||
import https from 'https';
|
||||
import http from 'http';
|
||||
import ca from 'win-ca/api/index.js';
|
||||
import util from 'util';
|
||||
import contentDisposition from 'content-disposition';
|
||||
import * as operationContext from './operationContext.js';
|
||||
import escapeStringRegexp from 'escape-string-regexp';
|
||||
|
||||
//Clone sealed config objects before passing to external libraries using config.util.cloneDeep
|
||||
const cfgDnsCache = config.util.cloneDeep(config.get('dnscache'));
|
||||
@ -93,6 +90,7 @@ const cfgWinCa = config.util.cloneDeep(config.get('win-ca'));
|
||||
|
||||
ca(cfgWinCa);
|
||||
|
||||
|
||||
const minimumIterationsByteLength = 4;
|
||||
const dnscache = getDnsCache(cfgDnsCache);
|
||||
|
||||
@ -113,7 +111,7 @@ function getIpFilterRule(address) {
|
||||
}
|
||||
const pemfileCache = new NodeCache({stdTTL: ms(cfgExpPemStdTtl) / 1000, checkperiod: ms(cfgExpPemCheckPeriod) / 1000, errorOnMissing: false, useClones: true});
|
||||
|
||||
exports.getConvertionTimeout = function(opt_ctx) {
|
||||
export function getConvertionTimeout(opt_ctx) {
|
||||
if (opt_ctx) {
|
||||
const tenVisibilityTimeout = opt_ctx.getCfg('queue.visibilityTimeout', cfgVisibilityTimeout);
|
||||
const tenQueueRetentionPeriod = opt_ctx.getCfg('queue.retentionPeriod', cfgQueueRetentionPeriod);
|
||||
@ -123,13 +121,13 @@ exports.getConvertionTimeout = function(opt_ctx) {
|
||||
}
|
||||
}
|
||||
|
||||
exports.addSeconds = function(date, sec) {
|
||||
export function addSeconds(date, sec) {
|
||||
date.setSeconds(date.getSeconds() + sec);
|
||||
};
|
||||
exports.getMillisecondsOfHour = function(date) {
|
||||
export function getMillisecondsOfHour(date) {
|
||||
return (date.getUTCMinutes() * 60 + date.getUTCSeconds()) * 1000 + date.getUTCMilliseconds();
|
||||
};
|
||||
exports.encodeXml = function(value) {
|
||||
export function encodeXml(value) {
|
||||
return value.replace(/[<>&'"\r\n\t\xA0]/g, function (c) {
|
||||
switch (c) {
|
||||
case '<': return '<';
|
||||
@ -144,7 +142,7 @@ exports.encodeXml = function(value) {
|
||||
}
|
||||
});
|
||||
};
|
||||
function fsStat(fsPath) {
|
||||
export function fsStat(fsPath) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
fs.stat(fsPath, function(err, stats) {
|
||||
if (err) {
|
||||
@ -155,7 +153,6 @@ function fsStat(fsPath) {
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.fsStat = fsStat;
|
||||
function fsReadDir(fsPath) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
fs.readdir(fsPath, function(err, list) {
|
||||
@ -192,7 +189,7 @@ function* walkDir(fsPath, results, optNoSubDir, optOnlyFolders) {
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.listFolders = function(fsPath, optNoSubDir) {
|
||||
export function listFolders(fsPath, optNoSubDir) {
|
||||
return co(function* () {
|
||||
let stats, list = [];
|
||||
try {
|
||||
@ -207,7 +204,7 @@ exports.listFolders = function(fsPath, optNoSubDir) {
|
||||
return list;
|
||||
});
|
||||
};
|
||||
exports.listObjects = function(fsPath, optNoSubDir) {
|
||||
export function listObjects(fsPath, optNoSubDir) {
|
||||
return co(function* () {
|
||||
let stats, list = [];
|
||||
try {
|
||||
@ -226,12 +223,12 @@ exports.listObjects = function(fsPath, optNoSubDir) {
|
||||
return list;
|
||||
});
|
||||
};
|
||||
exports.sleep = function(ms) {
|
||||
export function sleep(ms) {
|
||||
return new Promise(function(resolve) {
|
||||
setTimeout(resolve, ms);
|
||||
});
|
||||
};
|
||||
exports.readFile = function(file) {
|
||||
export function readFile(file) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
fs.readFile(file, function(err, data) {
|
||||
if (err) {
|
||||
@ -242,12 +239,10 @@ exports.readFile = function(file) {
|
||||
});
|
||||
});
|
||||
};
|
||||
function getContentDisposition (opt_filename, opt_useragent, opt_type) {
|
||||
export function getContentDisposition (opt_filename, opt_useragent, opt_type) {
|
||||
let type = opt_type || constants.CONTENT_DISPOSITION_ATTACHMENT;
|
||||
return contentDisposition(opt_filename, {type: type});
|
||||
}
|
||||
exports.getContentDisposition = getContentDisposition;
|
||||
|
||||
function isAllowDirectRequest(ctx, uri, isInJwtToken) {
|
||||
let res = false;
|
||||
const tenExternalRequestDirectIfIn = ctx.getCfg('externalRequest.directIfIn', cfgExternalRequestDirectIfIn);
|
||||
@ -335,7 +330,7 @@ function changeOptionsForCompatibilityWithRequest(options, httpAgentOptions, htt
|
||||
* @param {boolean} opt_returnStream - Optional flag to return stream.
|
||||
* @returns {Promise<{response: axios.AxiosResponse, sha256: string|null, body: Buffer|null, stream: NodeJS.ReadableStream|null}>} - A promise that resolves to object containing response, sha256 hash, and body (null if opt_streamWriter is provided).
|
||||
*/
|
||||
async function downloadUrlPromise(ctx, uri, optTimeout, optLimit, opt_Authorization, opt_filterPrivate, opt_headers, opt_returnStream) {
|
||||
export async function downloadUrlPromise(ctx, uri, optTimeout, optLimit, opt_Authorization, opt_filterPrivate, opt_headers, opt_returnStream) {
|
||||
const tenTenantRequestDefaults = ctx.getCfg('services.CoAuthoring.requestDefaults', cfgRequestDefaults);
|
||||
const tenTokenOutboxHeader = ctx.getCfg('services.CoAuthoring.token.outbox.header', cfgTokenOutboxHeader);
|
||||
const tenTokenOutboxPrefix = ctx.getCfg('services.CoAuthoring.token.outbox.prefix', cfgTokenOutboxPrefix);
|
||||
@ -415,7 +410,7 @@ async function downloadUrlPromise(ctx, uri, optTimeout, optLimit, opt_Authorizat
|
||||
}
|
||||
}
|
||||
|
||||
async function postRequestPromise(ctx, uri, postData, postDataStream, postDataSize, optTimeout, opt_Authorization, opt_isInJwtToken, opt_headers) {
|
||||
export async function postRequestPromise(ctx, uri, postData, postDataStream, postDataSize, optTimeout, opt_Authorization, opt_isInJwtToken, opt_headers) {
|
||||
const tenTenantRequestDefaults = ctx.getCfg('services.CoAuthoring.requestDefaults', cfgRequestDefaults);
|
||||
const tenTokenOutboxHeader = ctx.getCfg('services.CoAuthoring.token.outbox.header', cfgTokenOutboxHeader);
|
||||
const tenTokenOutboxPrefix = ctx.getCfg('services.CoAuthoring.token.outbox.prefix', cfgTokenOutboxPrefix);
|
||||
@ -497,9 +492,7 @@ async function postRequestPromise(ctx, uri, postData, postDataStream, postDataSi
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
exports.postRequestPromise = postRequestPromise;
|
||||
exports.downloadUrlPromise = downloadUrlPromise;
|
||||
exports.mapAscServerErrorToOldError = function(error) {
|
||||
export const mapAscServerErrorToOldError = function(error) {
|
||||
var res = -1;
|
||||
switch (error) {
|
||||
case constants.NO_ERROR :
|
||||
@ -564,15 +557,15 @@ exports.mapAscServerErrorToOldError = function(error) {
|
||||
function fillXmlResponse(val) {
|
||||
var xml = '<?xml version="1.0" encoding="utf-8"?><FileResult>';
|
||||
if (undefined != val.error) {
|
||||
xml += '<Error>' + exports.encodeXml(val.error.toString()) + '</Error>';
|
||||
xml += '<Error>' + encodeXml(val.error.toString()) + '</Error>';
|
||||
} else {
|
||||
if (val.fileUrl) {
|
||||
xml += '<FileUrl>' + exports.encodeXml(val.fileUrl) + '</FileUrl>';
|
||||
xml += '<FileUrl>' + encodeXml(val.fileUrl) + '</FileUrl>';
|
||||
} else {
|
||||
xml += '<FileUrl/>';
|
||||
}
|
||||
if (val.fileType) {
|
||||
xml += '<FileType>' + exports.encodeXml(val.fileType) + '</FileType>';
|
||||
xml += '<FileType>' + encodeXml(val.fileType) + '</FileType>';
|
||||
} else {
|
||||
xml += '<FileType/>';
|
||||
}
|
||||
@ -583,7 +576,7 @@ function fillXmlResponse(val) {
|
||||
return xml;
|
||||
}
|
||||
|
||||
function fillResponseSimple(res, str, contentType) {
|
||||
export function fillResponseSimple(res, str, contentType) {
|
||||
let body = Buffer.from(str, 'utf-8');
|
||||
res.setHeader('Content-Type', contentType + '; charset=UTF-8');
|
||||
res.setHeader('Content-Length', body.length);
|
||||
@ -602,10 +595,10 @@ function _fillResponse(res, output, isJSON) {
|
||||
fillResponseSimple(res, data, contentType);
|
||||
}
|
||||
|
||||
function fillResponse(req, res, convertStatus, isJSON) {
|
||||
export function fillResponse(req, res, convertStatus, isJSON) {
|
||||
let output;
|
||||
if (constants.NO_ERROR != convertStatus.err) {
|
||||
output = {error: exports.mapAscServerErrorToOldError(convertStatus.err)};
|
||||
output = {error: mapAscServerErrorToOldError(convertStatus.err)};
|
||||
} else {
|
||||
output = {fileUrl: convertStatus.url, fileType: convertStatus.filetype, percent: (convertStatus.end ? 100 : 0), endConvert: convertStatus.end};
|
||||
}
|
||||
@ -621,22 +614,17 @@ function fillResponse(req, res, convertStatus, isJSON) {
|
||||
_fillResponse(res, output, isJSON);
|
||||
}
|
||||
|
||||
exports.fillResponseSimple = fillResponseSimple;
|
||||
exports.fillResponse = fillResponse;
|
||||
|
||||
function fillResponseBuilder(res, key, urls, end, error) {
|
||||
export function fillResponseBuilder(res, key, urls, end, error) {
|
||||
let output;
|
||||
if (constants.NO_ERROR != error) {
|
||||
output = {error: exports.mapAscServerErrorToOldError(error)};
|
||||
output = {error: mapAscServerErrorToOldError(error)};
|
||||
} else {
|
||||
output = {key: key, urls: urls, end: end};
|
||||
}
|
||||
_fillResponse(res, output, true);
|
||||
}
|
||||
|
||||
exports.fillResponseBuilder = fillResponseBuilder;
|
||||
|
||||
function promiseCreateWriteStream(strPath, optOptions) {
|
||||
export function promiseCreateWriteStream(strPath, optOptions) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var file = fs.createWriteStream(strPath, optOptions);
|
||||
var errorCallback = function(e) {
|
||||
@ -649,23 +637,20 @@ function promiseCreateWriteStream(strPath, optOptions) {
|
||||
});
|
||||
});
|
||||
};
|
||||
exports.promiseCreateWriteStream = promiseCreateWriteStream;
|
||||
|
||||
function promiseWaitDrain(stream) {
|
||||
export function promiseWaitDrain(stream) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
stream.once('drain', resolve);
|
||||
});
|
||||
}
|
||||
exports.promiseWaitDrain = promiseWaitDrain;
|
||||
|
||||
function promiseWaitClose(stream) {
|
||||
export function promiseWaitClose(stream) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
stream.once('close', resolve);
|
||||
});
|
||||
}
|
||||
exports.promiseWaitClose = promiseWaitClose;
|
||||
|
||||
function promiseCreateReadStream(strPath) {
|
||||
export function promiseCreateReadStream(strPath) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var file = fs.createReadStream(strPath);
|
||||
var errorCallback = function(e) {
|
||||
@ -678,8 +663,7 @@ function promiseCreateReadStream(strPath) {
|
||||
});
|
||||
});
|
||||
};
|
||||
exports.promiseCreateReadStream = promiseCreateReadStream;
|
||||
exports.compareStringByLength = function(x, y) {
|
||||
export const compareStringByLength = function(x, y) {
|
||||
if (x && y) {
|
||||
if (x.length == y.length) {
|
||||
return x.localeCompare(y);
|
||||
@ -695,7 +679,7 @@ exports.compareStringByLength = function(x, y) {
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
exports.promiseRedis = function(client, func) {
|
||||
export const promiseRedis = function(client, func) {
|
||||
var newArguments = Array.prototype.slice.call(arguments, 2);
|
||||
return new Promise(function(resolve, reject) {
|
||||
newArguments.push(function(err, data) {
|
||||
@ -708,13 +692,12 @@ exports.promiseRedis = function(client, func) {
|
||||
func.apply(client, newArguments);
|
||||
});
|
||||
};
|
||||
exports.containsAllAscii = function(str) {
|
||||
export const containsAllAscii = function(str) {
|
||||
return /^[\000-\177]*$/.test(str);
|
||||
};
|
||||
function containsAllAsciiNP(str) {
|
||||
export function containsAllAsciiNP(str) {
|
||||
return /^[\040-\176]*$/.test(str);//non-printing characters
|
||||
}
|
||||
exports.containsAllAsciiNP = containsAllAsciiNP;
|
||||
function getDomain(hostHeader, forwardedHostHeader) {
|
||||
return forwardedHostHeader || hostHeader || 'localhost';
|
||||
};
|
||||
@ -734,7 +717,7 @@ function getBaseUrl(protocol, hostHeader, forwardedProtoHeader, forwardedHostHea
|
||||
}
|
||||
return url;
|
||||
}
|
||||
function getBaseUrlByConnection(ctx, conn) {
|
||||
export function getBaseUrlByConnection(ctx, conn) {
|
||||
conn = conn.request;
|
||||
//Header names are lower-cased. https://nodejs.org/api/http.html#messageheaders
|
||||
let cloudfrontForwardedProto = conn.headers['cloudfront-forwarded-proto'];
|
||||
@ -747,7 +730,7 @@ function getBaseUrlByConnection(ctx, conn) {
|
||||
host, forwardedHost, forwardedProto, forwardedPrefix, cloudfrontForwardedProto);
|
||||
return getBaseUrl('', host, proto, forwardedHost, forwardedPrefix);
|
||||
}
|
||||
function getBaseUrlByRequest(ctx, req) {
|
||||
export function getBaseUrlByRequest(ctx, req) {
|
||||
//case-insensitive match. https://expressjs.com/en/api.html#req.get
|
||||
let cloudfrontForwardedProto = req.get('cloudfront-forwarded-proto');
|
||||
let forwardedProto = req.get('x-forwarded-proto');
|
||||
@ -760,40 +743,32 @@ function getBaseUrlByRequest(ctx, req) {
|
||||
protocol, host, forwardedHost, forwardedProto, forwardedPrefix, cloudfrontForwardedProto);
|
||||
return getBaseUrl(protocol, host, proto, forwardedHost, forwardedPrefix);
|
||||
}
|
||||
exports.getBaseUrlByConnection = getBaseUrlByConnection;
|
||||
exports.getBaseUrlByRequest = getBaseUrlByRequest;
|
||||
function getDomainByConnection(ctx, conn) {
|
||||
export function getDomainByConnection(ctx, conn) {
|
||||
let incomingMessage = conn.request;
|
||||
let host = incomingMessage.headers['host'];
|
||||
let forwardedHost = incomingMessage.headers['x-forwarded-host'];
|
||||
ctx.logger.debug("getDomainByConnection headers['host']=%s headers['x-forwarded-host']=%s", host, forwardedHost);
|
||||
return getDomain(host, forwardedHost);
|
||||
}
|
||||
function getDomainByRequest(ctx, req) {
|
||||
export function getDomainByRequest(ctx, req) {
|
||||
let host = req.get('host');
|
||||
let forwardedHost = req.get('x-forwarded-host');
|
||||
ctx.logger.debug("getDomainByRequest headers['host']=%s headers['x-forwarded-host']=%s", host, forwardedHost);
|
||||
return getDomain(req.get('host'), req.get('x-forwarded-host'));
|
||||
}
|
||||
exports.getDomainByConnection = getDomainByConnection;
|
||||
exports.getDomainByRequest = getDomainByRequest;
|
||||
function getShardKeyByConnection(ctx, conn) {
|
||||
export function getShardKeyByConnection(ctx, conn) {
|
||||
return conn?.handshake?.query?.[constants.SHARD_KEY_API_NAME];
|
||||
}
|
||||
function getWopiSrcByConnection(ctx, conn) {
|
||||
export function getWopiSrcByConnection(ctx, conn) {
|
||||
return conn?.handshake?.query?.[constants.SHARD_KEY_WOPI_NAME];
|
||||
}
|
||||
function getShardKeyByRequest(ctx, req) {
|
||||
export function getShardKeyByRequest(ctx, req) {
|
||||
return req.query?.[constants.SHARD_KEY_API_NAME];
|
||||
}
|
||||
function getWopiSrcByRequest(ctx, req) {
|
||||
export function getWopiSrcByRequest(ctx, req) {
|
||||
return req.query?.[constants.SHARD_KEY_WOPI_NAME];
|
||||
}
|
||||
exports.getShardKeyByConnection = getShardKeyByConnection;
|
||||
exports.getWopiSrcByConnection = getWopiSrcByConnection;
|
||||
exports.getShardKeyByRequest = getShardKeyByRequest;
|
||||
exports.getWopiSrcByRequest = getWopiSrcByRequest;
|
||||
function stream2Buffer(stream) {
|
||||
export function stream2Buffer(stream) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
if (!stream.readable) {
|
||||
resolve(Buffer.alloc(0));
|
||||
@ -813,8 +788,7 @@ function stream2Buffer(stream) {
|
||||
stream.on('error', onEnd);
|
||||
});
|
||||
}
|
||||
exports.stream2Buffer = stream2Buffer;
|
||||
function changeOnlyOfficeUrl(inputUrl, strPath, optFilename) {
|
||||
export function changeOnlyOfficeUrl(inputUrl, strPath, optFilename) {
|
||||
//onlyoffice file server expects url end with file extension
|
||||
if (-1 == inputUrl.indexOf('?')) {
|
||||
inputUrl += '?';
|
||||
@ -823,8 +797,7 @@ function changeOnlyOfficeUrl(inputUrl, strPath, optFilename) {
|
||||
}
|
||||
return inputUrl + constants.ONLY_OFFICE_URL_PARAM + '=' + constants.OUTPUT_NAME + path.extname(optFilename || strPath);
|
||||
}
|
||||
exports.changeOnlyOfficeUrl = changeOnlyOfficeUrl;
|
||||
function pipeStreams(from, to, isEnd) {
|
||||
export function pipeStreams(from, to, isEnd) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
from.pipe(to, {end: isEnd});
|
||||
from.on('end', function() {
|
||||
@ -835,14 +808,12 @@ function pipeStreams(from, to, isEnd) {
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.pipeStreams = pipeStreams;
|
||||
function* pipeFiles(from, to) {
|
||||
export function* pipeFiles(from, to) {
|
||||
var fromStream = yield promiseCreateReadStream(from);
|
||||
var toStream = yield promiseCreateWriteStream(to);
|
||||
yield pipeStreams(fromStream, toStream, true);
|
||||
}
|
||||
exports.pipeFiles = co.wrap(pipeFiles);
|
||||
function checkIpFilter(ctx, ipString, opt_hostname) {
|
||||
export function checkIpFilter(ctx, ipString, opt_hostname) {
|
||||
const tenIpFilterRules = ctx.getCfg('services.CoAuthoring.ipfilter.rules', cfgIpFilterRules);
|
||||
|
||||
var status = 0;
|
||||
@ -874,8 +845,7 @@ function checkIpFilter(ctx, ipString, opt_hostname) {
|
||||
}
|
||||
return status;
|
||||
}
|
||||
exports.checkIpFilter = checkIpFilter;
|
||||
function* checkHostFilter(ctx, hostname) {
|
||||
export function* checkHostFilter(ctx, hostname) {
|
||||
let status = 0;
|
||||
let hostIp;
|
||||
try {
|
||||
@ -890,8 +860,7 @@ function* checkHostFilter(ctx, hostname) {
|
||||
}
|
||||
return status;
|
||||
}
|
||||
exports.checkHostFilter = checkHostFilter;
|
||||
function checkClientIp(req, res, next) {
|
||||
export function checkClientIp(req, res, next) {
|
||||
let ctx = new operationContext.Context();
|
||||
ctx.initFromRequest(req);
|
||||
const tenIpFilterUseForRequest = ctx.getCfg('services.CoAuthoring.ipfilter.useforrequest', cfgIpFilterUseForRequest);
|
||||
@ -907,8 +876,7 @@ function checkClientIp(req, res, next) {
|
||||
next();
|
||||
}
|
||||
}
|
||||
exports.checkClientIp = checkClientIp;
|
||||
function lowercaseQueryString(req, res, next) {
|
||||
export function lowercaseQueryString(req, res, next) {
|
||||
for (var key in req.query) {
|
||||
if (req.query.hasOwnProperty(key) && key.toLowerCase() !== key) {
|
||||
req.query[key.toLowerCase()] = req.query[key];
|
||||
@ -917,8 +885,7 @@ function lowercaseQueryString(req, res, next) {
|
||||
}
|
||||
next();
|
||||
}
|
||||
exports.lowercaseQueryString = lowercaseQueryString;
|
||||
function dnsLookup(hostname, options) {
|
||||
export function dnsLookup(hostname, options) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
dnscache.lookup(hostname, options, function(err, addresses){
|
||||
if (err) {
|
||||
@ -929,12 +896,10 @@ function dnsLookup(hostname, options) {
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.dnsLookup = dnsLookup;
|
||||
function isEmptyObject(val) {
|
||||
export function isEmptyObject(val) {
|
||||
return !(val && Object.keys(val).length);
|
||||
}
|
||||
exports.isEmptyObject = isEmptyObject;
|
||||
function getSecretByElem(secretElem) {
|
||||
export function getSecretByElem(secretElem) {
|
||||
let secret;
|
||||
if (secretElem) {
|
||||
if (secretElem.string) {
|
||||
@ -949,8 +914,7 @@ function getSecretByElem(secretElem) {
|
||||
}
|
||||
return secret;
|
||||
}
|
||||
exports.getSecretByElem = getSecretByElem;
|
||||
function fillJwtForRequest(ctx, payload, secret, opt_inBody) {
|
||||
export function fillJwtForRequest(ctx, payload, secret, opt_inBody) {
|
||||
const tenTokenOutboxAlgorithm = ctx.getCfg('services.CoAuthoring.token.outbox.algorithm', cfgTokenOutboxAlgorithm);
|
||||
const tenTokenOutboxExpires = ctx.getCfg('services.CoAuthoring.token.outbox.expires', cfgTokenOutboxExpires);
|
||||
//todo refuse prototypes in payload(they are simple getter/setter).
|
||||
@ -966,12 +930,11 @@ function fillJwtForRequest(ctx, payload, secret, opt_inBody) {
|
||||
let options = {algorithm: tenTokenOutboxAlgorithm, expiresIn: tenTokenOutboxExpires};
|
||||
return jwt.sign(data, secret, options);
|
||||
}
|
||||
exports.fillJwtForRequest = fillJwtForRequest;
|
||||
exports.forwarded = forwarded;
|
||||
exports.getIndexFromUserId = function(userId, userIdOriginal){
|
||||
export {forwarded};
|
||||
export const getIndexFromUserId = function(userId, userIdOriginal){
|
||||
return parseInt(userId.substring(userIdOriginal.length));
|
||||
};
|
||||
exports.checkPathTraversal = function(ctx, docId, rootDirectory, filename) {
|
||||
export const checkPathTraversal = function(ctx, docId, rootDirectory, filename) {
|
||||
if (filename.indexOf('\0') !== -1) {
|
||||
ctx.logger.warn('checkPathTraversal Poison Null Bytes filename=%s', filename);
|
||||
return false;
|
||||
@ -982,7 +945,7 @@ exports.checkPathTraversal = function(ctx, docId, rootDirectory, filename) {
|
||||
}
|
||||
return true;
|
||||
};
|
||||
exports.getConnectionInfo = function(conn){
|
||||
export const getConnectionInfo = function(conn){
|
||||
var user = conn.user;
|
||||
var data = {
|
||||
id: user.id,
|
||||
@ -992,21 +955,21 @@ exports.getConnectionInfo = function(conn){
|
||||
view: user.view,
|
||||
connectionId: conn.id,
|
||||
isCloseCoAuthoring: conn.isCloseCoAuthoring,
|
||||
isLiveViewer: exports.isLiveViewer(conn),
|
||||
isLiveViewer: isLiveViewer(conn),
|
||||
encrypted: conn.encrypted
|
||||
};
|
||||
return data;
|
||||
};
|
||||
exports.getConnectionInfoStr = function(conn){
|
||||
return JSON.stringify(exports.getConnectionInfo(conn));
|
||||
export const getConnectionInfoStr = function(conn){
|
||||
return JSON.stringify(getConnectionInfo(conn));
|
||||
};
|
||||
exports.isLiveViewer = function(conn){
|
||||
export const isLiveViewer = function(conn){
|
||||
return conn.user?.view && "fast" === conn.coEditingMode;
|
||||
};
|
||||
exports.isLiveViewerSupport = function(licenseInfo){
|
||||
export const isLiveViewerSupport = function(licenseInfo){
|
||||
return licenseInfo.connectionsView > 0 || licenseInfo.usersViewCount > 0;
|
||||
};
|
||||
exports.canIncludeOutboxAuthorization = function (ctx, url) {
|
||||
export const canIncludeOutboxAuthorization = function (ctx, url) {
|
||||
const tenTokenEnableRequestOutbox = ctx.getCfg('services.CoAuthoring.token.enable.request.outbox', cfgTokenEnableRequestOutbox);
|
||||
const tenTokenOutboxUrlExclusionRegex = ctx.getCfg('services.CoAuthoring.token.outbox.urlExclusionRegex', cfgTokenOutboxUrlExclusionRegex);
|
||||
if (tenTokenEnableRequestOutbox) {
|
||||
@ -1023,7 +986,7 @@ exports.canIncludeOutboxAuthorization = function (ctx, url) {
|
||||
/*
|
||||
Code samples taken from here: https://gist.github.com/btxtiger/e8eaee70d6e46729d127f1e384e755d6
|
||||
*/
|
||||
exports.encryptPassword = async function (ctx, password) {
|
||||
export const encryptPassword = async function (ctx, password) {
|
||||
const pbkdf2Promise = util.promisify(crypto.pbkdf2);
|
||||
const tenSecret = ctx.getCfg('aesEncrypt.secret', cfgSecret);
|
||||
const tenAESConfig = ctx.getCfg('aesEncrypt.config', cfgAESConfig) ?? {};
|
||||
@ -1053,7 +1016,7 @@ exports.encryptPassword = async function (ctx, password) {
|
||||
|
||||
return `${predicate}:${data}`;
|
||||
};
|
||||
exports.decryptPassword = async function (ctx, password) {
|
||||
export const decryptPassword = async function (ctx, password) {
|
||||
const pbkdf2Promise = util.promisify(crypto.pbkdf2);
|
||||
const tenSecret = ctx.getCfg('aesEncrypt.secret', cfgSecret);
|
||||
const tenAESConfig = ctx.getCfg('aesEncrypt.config', cfgAESConfig) ?? {};
|
||||
@ -1092,10 +1055,10 @@ exports.decryptPassword = async function (ctx, password) {
|
||||
|
||||
return Buffer.concat([decipher.update(encryptedData, 'binary'), decipher.final()]).toString();
|
||||
};
|
||||
exports.getDateTimeTicks = function(date) {
|
||||
export const getDateTimeTicks = function(date) {
|
||||
return BigInt(date.getTime() * 10000) + 621355968000000000n;
|
||||
};
|
||||
exports.convertLicenseInfoToFileParams = function(licenseInfo) {
|
||||
export const convertLicenseInfoToFileParams = function(licenseInfo) {
|
||||
// todo
|
||||
// {
|
||||
// user_quota = 0;
|
||||
@ -1123,7 +1086,7 @@ exports.convertLicenseInfoToFileParams = function(licenseInfo) {
|
||||
license.multitenancy = licenseInfo.multitenancy;
|
||||
return license;
|
||||
};
|
||||
exports.convertLicenseInfoToServerParams = function(licenseInfo) {
|
||||
export const convertLicenseInfoToServerParams = function(licenseInfo) {
|
||||
let license = {};
|
||||
license.workersCount = licenseInfo.count;
|
||||
license.resultType = licenseInfo.type;
|
||||
@ -1133,12 +1096,12 @@ exports.convertLicenseInfoToServerParams = function(licenseInfo) {
|
||||
license.buildNumber = commonDefines.buildNumber;
|
||||
return license;
|
||||
};
|
||||
exports.checkBaseUrl = function(ctx, baseUrl, opt_storageCfg) {
|
||||
export const checkBaseUrl = function(ctx, baseUrl, opt_storageCfg) {
|
||||
let storageExternalHost = opt_storageCfg ? opt_storageCfg.externalHost : cfgStorageExternalHost
|
||||
const tenStorageExternalHost = ctx.getCfg('storage.externalHost', storageExternalHost);
|
||||
return tenStorageExternalHost ? tenStorageExternalHost : baseUrl;
|
||||
};
|
||||
exports.resolvePath = function(object, path, defaultValue) {
|
||||
export const resolvePath = function(object, path, defaultValue) {
|
||||
return path.split('.').reduce((o, p) => o ? o[p] : defaultValue, object);
|
||||
};
|
||||
Date.isLeapYear = function (year) {
|
||||
@ -1164,14 +1127,13 @@ Date.prototype.addMonths = function (value) {
|
||||
this.setUTCDate(Math.min(n, this.getDaysInMonth()));
|
||||
return this;
|
||||
};
|
||||
function getMonthDiff(d1, d2) {
|
||||
export function getMonthDiff(d1, d2) {
|
||||
var months;
|
||||
months = (d2.getUTCFullYear() - d1.getUTCFullYear()) * 12;
|
||||
months -= d1.getUTCMonth();
|
||||
months += d2.getUTCMonth();
|
||||
return months;
|
||||
}
|
||||
exports.getMonthDiff = getMonthDiff;
|
||||
|
||||
/**
|
||||
* A Transform stream that limits the size of data passing through it.
|
||||
@ -1213,7 +1175,7 @@ class SizeLimitStream extends Transform {
|
||||
callback(null, chunk);
|
||||
}
|
||||
}
|
||||
exports.getLicensePeriod = function(startDate, now) {
|
||||
export const getLicensePeriod = function(startDate, now) {
|
||||
startDate = new Date(startDate.getTime());//clone
|
||||
startDate.addMonths(getMonthDiff(startDate, now));
|
||||
if (startDate > now) {
|
||||
@ -1223,10 +1185,10 @@ exports.getLicensePeriod = function(startDate, now) {
|
||||
return startDate.getTime();
|
||||
};
|
||||
|
||||
exports.removeIllegalCharacters = function(filename) {
|
||||
export const removeIllegalCharacters = function(filename) {
|
||||
return filename?.replace(/[/\\?%*:|"<>]/g, '-') || filename;
|
||||
}
|
||||
exports.getFunctionArguments = function(func) {
|
||||
export const getFunctionArguments = function(func) {
|
||||
return func.toString().
|
||||
replace(/[\r\n\s]+/g, ' ').
|
||||
match(/(?:function\s*\w*)?\s*(?:\((.*?)\)|([^\s]+))/).
|
||||
@ -1234,13 +1196,13 @@ exports.getFunctionArguments = function(func) {
|
||||
join('').
|
||||
split(/\s*,\s*/);
|
||||
};
|
||||
exports.isUselesSfc = function(row, cmd) {
|
||||
export const isUselesSfc = function(row, cmd) {
|
||||
return !(row && commonDefines.FileStatus.SaveVersion === row.status && cmd.getStatusInfoIn() === row.status_info);
|
||||
};
|
||||
exports.getChangesFileHeader = function() {
|
||||
export const getChangesFileHeader = function() {
|
||||
return `CHANGES\t${commonDefines.buildVersion}\n`;
|
||||
};
|
||||
exports.checksumFile = function(hashName, path) {
|
||||
export const checksumFile = function(hashName, path) {
|
||||
//https://stackoverflow.com/a/44643479
|
||||
return new Promise((resolve, reject) => {
|
||||
const hash = crypto.createHash(hashName);
|
||||
@ -1251,11 +1213,11 @@ exports.checksumFile = function(hashName, path) {
|
||||
});
|
||||
};
|
||||
|
||||
function isObject(item) {
|
||||
export function isObject(item) {
|
||||
return (item && typeof item === 'object' && !Array.isArray(item));
|
||||
}
|
||||
|
||||
function deepMergeObjects(target, ...sources) {
|
||||
export function deepMergeObjects(target, ...sources) {
|
||||
if (!sources.length) {
|
||||
return target;
|
||||
}
|
||||
@ -1277,5 +1239,3 @@ function deepMergeObjects(target, ...sources) {
|
||||
|
||||
return deepMergeObjects(target, ...sources);
|
||||
}
|
||||
exports.isObject = isObject;
|
||||
exports.deepMergeObjects = deepMergeObjects;
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"version": "1.0.1",
|
||||
"homepage": "https://www.onlyoffice.com",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"bin": {
|
||||
"docservice": "sources/server.js",
|
||||
"gc": "sources/gc.js",
|
||||
|
||||
@ -72,43 +72,46 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const { Server } = require("socket.io");
|
||||
const _ = require('underscore');
|
||||
const url = require('url');
|
||||
const os = require('os');
|
||||
const cluster = require('cluster');
|
||||
const crypto = require('crypto');
|
||||
const pathModule = require('path');
|
||||
const { isDeepStrictEqual } = require('util');
|
||||
const co = require('co');
|
||||
const jwt = require('jsonwebtoken');
|
||||
const ms = require('ms');
|
||||
const bytes = require('bytes');
|
||||
const storage = require('./../../Common/sources/storage/storage-base');
|
||||
const constants = require('./../../Common/sources/constants');
|
||||
const utils = require('./../../Common/sources/utils');
|
||||
const utilsDocService = require('./utilsDocService');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
const statsDClient = require('./../../Common/sources/statsdclient');
|
||||
const config = require('config');
|
||||
const sqlBase = require('./databaseConnectors/baseConnector');
|
||||
const canvasService = require('./canvasservice');
|
||||
const converterService = require('./converterservice');
|
||||
const taskResult = require('./taskresult');
|
||||
const gc = require('./gc');
|
||||
const shutdown = require('./shutdown');
|
||||
const pubsubService = require('./pubsubRabbitMQ');
|
||||
const wopiClient = require('./wopiClient');
|
||||
const queueService = require('./../../Common/sources/taskqueueRabbitMQ');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
const tenantManager = require('./../../Common/sources/tenantManager');
|
||||
const { notificationTypes, ...notificationService } = require('../../Common/sources/notificationService');
|
||||
import { Server } from "socket.io";
|
||||
import _ from 'underscore';
|
||||
import url from 'url';
|
||||
import os from 'os';
|
||||
import cluster from 'cluster';
|
||||
import crypto from 'crypto';
|
||||
import pathModule from 'path';
|
||||
import { isDeepStrictEqual } from 'util';
|
||||
import co from 'co';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import ms from 'ms';
|
||||
import bytes from 'bytes';
|
||||
import * as storage from '../../Common/sources/storage/storage-base.js';
|
||||
import * as constants from '../../Common/sources/constants.js';
|
||||
import * as utils from '../../Common/sources/utils.js';
|
||||
import * as utilsDocService from './utilsDocService.js';
|
||||
import * as commonDefines from '../../Common/sources/commondefines.js';
|
||||
import * as statsDClient from '../../Common/sources/statsdclient.js';
|
||||
import config from 'config';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as canvasService from './canvasservice.js';
|
||||
import * as converterService from './converterservice.js';
|
||||
import * as taskResult from './taskresult.js';
|
||||
import * as gc from './gc.js';
|
||||
import * as shutdownModule from './shutdown.js';
|
||||
import pubsubService from './pubsubRabbitMQ.js';
|
||||
import * as wopiClient from './wopiClient.js';
|
||||
import queueService from '../../Common/sources/taskqueueRabbitMQ.js';
|
||||
import * as operationContext from '../../Common/sources/operationContext.js';
|
||||
import * as tenantManager from '../../Common/sources/tenantManager.js';
|
||||
import * as notificationModule from '../../Common/sources/notificationService.js';
|
||||
import * as editorDataStorage from './editorDataMemory.js';
|
||||
import * as cfgEditorStatStorageModule from './editorDataRedis.js';
|
||||
const { notificationTypes, ...notificationService } = notificationModule;
|
||||
|
||||
const cfgEditorDataStorage = config.get('services.CoAuthoring.server.editorDataStorage');
|
||||
const cfgEditorStatStorage = config.get('services.CoAuthoring.server.editorStatStorage');
|
||||
const editorDataStorage = require('./' + cfgEditorDataStorage);
|
||||
const editorStatStorage = require('./' + (cfgEditorStatStorage || cfgEditorDataStorage));
|
||||
const util = require("util");
|
||||
|
||||
let editorStatStorage = cfgEditorStatStorage? cfgEditorStatStorageModule: cfgEditorDataStorage ? editorDataStorage: null;
|
||||
import util from "util";
|
||||
|
||||
const cfgEditSingleton = config.get('services.CoAuthoring.server.edit_singleton');
|
||||
const cfgEditor = config.get('services.CoAuthoring.editor');
|
||||
@ -163,8 +166,8 @@ const EditorTypes = {
|
||||
|
||||
const defaultHttpPort = 80, defaultHttpsPort = 443; // Default ports (for http and https)
|
||||
//todo remove editorDataStorage constructor usage after 8.1
|
||||
const editorData = editorDataStorage.EditorData ? new editorDataStorage.EditorData() : new editorDataStorage();
|
||||
const editorStat = editorStatStorage.EditorStat ? new editorStatStorage.EditorStat() : new editorDataStorage();
|
||||
export const editorData = new editorDataStorage.EditorData();
|
||||
export const editorStat = new editorStatStorage.EditorStat();
|
||||
const clientStatsD = statsDClient.getClient();
|
||||
let connections = []; // Active connections
|
||||
let lockDocumentsTimerId = {};//to drop connection that can't unlockDocument
|
||||
@ -181,7 +184,7 @@ const PRECISION = [{name: 'hour', val: ms('1h')}, {name: 'day', val: ms('1d')},
|
||||
{name: 'month', val: ms('31d')},
|
||||
];
|
||||
|
||||
function getIsShutdown() {
|
||||
export function getIsShutdown() {
|
||||
return shutdownFlag;
|
||||
}
|
||||
|
||||
@ -222,7 +225,7 @@ DocumentChanges.prototype.concat = function(item) {
|
||||
this.arrChanges = this.arrChanges.concat(item);
|
||||
};
|
||||
|
||||
const c_oAscServerStatus = {
|
||||
export const c_oAscServerStatus = {
|
||||
NotFound: 0,
|
||||
Editing: 1,
|
||||
MustSave: 2,
|
||||
@ -498,14 +501,14 @@ function removePresence(ctx, conn) {
|
||||
});
|
||||
}
|
||||
|
||||
let changeConnectionInfo = co.wrap(function*(ctx, conn, cmd) {
|
||||
export let changeConnectionInfo = co.wrap(function*(ctx, conn, cmd) {
|
||||
if (!conn.denyChangeName && conn.user) {
|
||||
yield publish(ctx, {type: commonDefines.c_oPublishType.changeConnecitonInfo, ctx: ctx, docId: conn.docId, useridoriginal: conn.user.idOriginal, cmd: cmd});
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
function signToken(ctx, payload, algorithm, expiresIn, secretElem) {
|
||||
export function signToken(ctx, payload, algorithm, expiresIn, secretElem) {
|
||||
return co(function*() {
|
||||
var options = {algorithm: algorithm, expiresIn: expiresIn};
|
||||
let secret = yield tenantManager.getTenantSecret(ctx, secretElem);
|
||||
@ -548,7 +551,7 @@ function fillJwtByConnection(ctx, conn) {
|
||||
});
|
||||
}
|
||||
|
||||
function sendData(ctx, conn, data) {
|
||||
export function sendData(ctx, conn, data) {
|
||||
conn.emit('message', data);
|
||||
const type = data ? data.type : null;
|
||||
ctx.logger.debug('sendData: type = %s', type);
|
||||
@ -595,7 +598,7 @@ function sendReleaseLock(ctx, conn, userLocks) {
|
||||
};
|
||||
})});
|
||||
}
|
||||
function modifyConnectionForPassword(ctx, conn, isEnterCorrectPassword) {
|
||||
export function modifyConnectionForPassword(ctx, conn, isEnterCorrectPassword) {
|
||||
return co(function*() {
|
||||
const tenTokenEnableBrowser = ctx.getCfg('services.CoAuthoring.token.enable.browser', cfgTokenEnableBrowser);
|
||||
if (isEnterCorrectPassword) {
|
||||
@ -659,7 +662,7 @@ function* getEditorsCount(ctx, docId, opt_hvals) {
|
||||
}
|
||||
return editorsCount;
|
||||
}
|
||||
function* hasEditors(ctx, docId, opt_hvals) {
|
||||
export function* hasEditors(ctx, docId, opt_hvals) {
|
||||
let editorsCount = yield* getEditorsCount(ctx, docId, opt_hvals);
|
||||
return editorsCount > 0;
|
||||
}
|
||||
@ -676,7 +679,7 @@ function* isUserReconnect(ctx, docId, userId, connectionId) {
|
||||
}
|
||||
|
||||
let pubsubOnMessage = null;//todo move function
|
||||
async function publish(ctx, data, optDocId, optUserId, opt_pubsub) {
|
||||
export async function publish(ctx, data, optDocId, optUserId, opt_pubsub) {
|
||||
var needPublish = true;
|
||||
let hvals;
|
||||
if (optDocId && optUserId) {
|
||||
@ -704,7 +707,7 @@ async function publish(ctx, data, optDocId, optUserId, opt_pubsub) {
|
||||
}
|
||||
return needPublish;
|
||||
}
|
||||
function* addTask(data, priority, opt_queue, opt_expiration) {
|
||||
export function* addTask(data, priority, opt_queue, opt_expiration) {
|
||||
var realQueue = opt_queue ? opt_queue : queue;
|
||||
yield realQueue.addTask(data, priority, opt_expiration);
|
||||
}
|
||||
@ -712,11 +715,11 @@ function* addResponse(data, opt_queue) {
|
||||
var realQueue = opt_queue ? opt_queue : queue;
|
||||
yield realQueue.addResponse(data);
|
||||
}
|
||||
function* addDelayed(data, ttl, opt_queue) {
|
||||
export function* addDelayed(data, ttl, opt_queue) {
|
||||
var realQueue = opt_queue ? opt_queue : queue;
|
||||
yield realQueue.addDelayed(data, ttl);
|
||||
}
|
||||
function* removeResponse(data) {
|
||||
export function* removeResponse(data) {
|
||||
yield queue.removeResponse(data);
|
||||
}
|
||||
|
||||
@ -735,7 +738,7 @@ async function getOriginalParticipantsId(ctx, docId) {
|
||||
return result;
|
||||
}
|
||||
|
||||
async function sendServerRequest(ctx, uri, dataObject, opt_checkAndFixAuthorizationLength) {
|
||||
export async function sendServerRequest(ctx, uri, dataObject, opt_checkAndFixAuthorizationLength) {
|
||||
const tenCallbackRequestTimeout = ctx.getCfg('services.CoAuthoring.server.callbackRequestTimeout', cfgCallbackRequestTimeout);
|
||||
const tenTokenEnableRequestInbox = ctx.getCfg('services.CoAuthoring.token.enable.request.inbox', cfgTokenEnableRequestInbox);
|
||||
|
||||
@ -759,7 +762,7 @@ async function sendServerRequest(ctx, uri, dataObject, opt_checkAndFixAuthorizat
|
||||
return postRes.body;
|
||||
}
|
||||
|
||||
function parseUrl(ctx, callbackUrl) {
|
||||
export function parseUrl(ctx, callbackUrl) {
|
||||
var result = null;
|
||||
try {
|
||||
//no need to do decodeURIComponent http://expressjs.com/en/4x/api.html#app.settings.table
|
||||
@ -786,7 +789,7 @@ function parseUrl(ctx, callbackUrl) {
|
||||
return result;
|
||||
}
|
||||
|
||||
async function getCallback(ctx, id, opt_userIndex) {
|
||||
export async function getCallback(ctx, id, opt_userIndex) {
|
||||
var callbackUrl = null;
|
||||
var baseUrl = null;
|
||||
let wopiParams = null;
|
||||
@ -816,7 +819,7 @@ function* getChangesIndex(ctx, docId) {
|
||||
return res;
|
||||
}
|
||||
|
||||
const hasChanges = co.wrap(function*(ctx, docId) {
|
||||
export const hasChanges = co.wrap(function*(ctx, docId) {
|
||||
//todo check editorData.getForceSave in case of "undo all changes"
|
||||
let puckerIndex = yield* getChangesIndex(ctx, docId);
|
||||
if (0 === puckerIndex) {
|
||||
@ -828,7 +831,7 @@ const hasChanges = co.wrap(function*(ctx, docId) {
|
||||
}
|
||||
return true;
|
||||
});
|
||||
function* setForceSave(ctx, docId, forceSave, cmd, success, url) {
|
||||
export function* setForceSave(ctx, docId, forceSave, cmd, success, url) {
|
||||
let forceSaveType = forceSave.getType();
|
||||
let end = success;
|
||||
if (commonDefines.c_oAscForceSaveTypes.Form === forceSaveType || commonDefines.c_oAscForceSaveTypes.Internal === forceSaveType) {
|
||||
@ -933,7 +936,7 @@ async function applyForceSaveCache(ctx, docId, forceSave, type, opt_userConnecti
|
||||
}
|
||||
return res;
|
||||
}
|
||||
async function startForceSave(ctx, docId, type, opt_userdata, opt_formdata, opt_userId, opt_userConnectionId,
|
||||
export async function startForceSave(ctx, docId, type, opt_userdata, opt_formdata, opt_userId, opt_userConnectionId,
|
||||
opt_userConnectionDocId, opt_userIndex, opt_responseKey, opt_baseUrl,
|
||||
opt_queue, opt_pubsub, opt_conn, opt_initShardKey, opt_jsonParams, opt_changeInfo,
|
||||
opt_prevTime) {
|
||||
@ -1019,10 +1022,10 @@ async function startForceSave(ctx, docId, type, opt_userdata, opt_formdata, opt_
|
||||
ctx.logger.debug('startForceSave end');
|
||||
return res;
|
||||
}
|
||||
function getExternalChangeInfo(user, date, lang) {
|
||||
export function getExternalChangeInfo(user, date, lang) {
|
||||
return {user_id: user.id, user_id_original: user.idOriginal, user_name: user.username, lang, change_date: date};
|
||||
}
|
||||
let resetForceSaveAfterChanges = co.wrap(function*(ctx, docId, newChangesLastTime, puckerIndex, baseUrl, changeInfo) {
|
||||
export let resetForceSaveAfterChanges = co.wrap(function*(ctx, docId, newChangesLastTime, puckerIndex, baseUrl, changeInfo) {
|
||||
const tenForceSaveEnable = ctx.getCfg('services.CoAuthoring.autoAssembly.enable', cfgForceSaveEnable);
|
||||
const tenForceSaveInterval = ms(ctx.getCfg('services.CoAuthoring.autoAssembly.interval', cfgForceSaveInterval));
|
||||
//last save
|
||||
@ -1233,7 +1236,7 @@ async function sendStatusDocument(ctx, docId, bChangeBase, opt_userAction, opt_u
|
||||
await onReplySendStatusDocument(ctx, docId, replyData);
|
||||
return sendData;
|
||||
}
|
||||
function parseReplyData(ctx, replyData) {
|
||||
export function parseReplyData(ctx, replyData) {
|
||||
var res = null;
|
||||
if (replyData) {
|
||||
try {
|
||||
@ -1331,7 +1334,7 @@ function* bindEvents(ctx, docId, callback, baseUrl, opt_userAction, opt_userData
|
||||
}
|
||||
return null;
|
||||
}
|
||||
let unlockWopiDoc = co.wrap(function*(ctx, docId, opt_userIndex) {
|
||||
export let unlockWopiDoc = co.wrap(function*(ctx, docId, opt_userIndex) {
|
||||
//wopi unlock
|
||||
var getRes = yield getCallback(ctx, docId, opt_userIndex);
|
||||
if (getRes && getRes.wopiParams && getRes.wopiParams.userAuth && 'view' !== getRes.wopiParams.userAuth.mode) {
|
||||
@ -1365,7 +1368,7 @@ function* cleanDocumentOnExitNoChanges(ctx, docId, opt_userId, opt_userIndex, op
|
||||
yield* cleanDocumentOnExit(ctx, docId, false, opt_userIndex);
|
||||
}
|
||||
|
||||
function createSaveTimer(ctx, docId, opt_userId, opt_userIndex, opt_userLcid, opt_queue, opt_noDelay, opt_initShardKey) {
|
||||
export function createSaveTimer(ctx, docId, opt_userId, opt_userIndex, opt_userLcid, opt_queue, opt_noDelay, opt_initShardKey) {
|
||||
return co(function*(){
|
||||
const tenAscSaveTimeOutDelay = ctx.getCfg('services.CoAuthoring.server.savetimeoutdelay', cfgAscSaveTimeOutDelay);
|
||||
|
||||
@ -1396,7 +1399,7 @@ function createSaveTimer(ctx, docId, opt_userId, opt_userIndex, opt_userLcid, op
|
||||
});
|
||||
}
|
||||
|
||||
function checkJwt(ctx, token, type) {
|
||||
export function checkJwt(ctx, token, type) {
|
||||
return co(function*() {
|
||||
const tenTokenVerifyOptions = ctx.getCfg('services.CoAuthoring.token.verifyOptions', cfgTokenVerifyOptions);
|
||||
|
||||
@ -1421,7 +1424,7 @@ function checkJwt(ctx, token, type) {
|
||||
return res;
|
||||
});
|
||||
}
|
||||
function checkJwtHeader(ctx, req, opt_header, opt_prefix, opt_secretType) {
|
||||
export function checkJwtHeader(ctx, req, opt_header, opt_prefix, opt_secretType) {
|
||||
return co(function*() {
|
||||
const tenTokenInboxHeader = ctx.getCfg('services.CoAuthoring.token.inbox.header', cfgTokenInboxHeader);
|
||||
const tenTokenInboxPrefix = ctx.getCfg('services.CoAuthoring.token.inbox.prefix', cfgTokenInboxPrefix);
|
||||
@ -1437,7 +1440,7 @@ function checkJwtHeader(ctx, req, opt_header, opt_prefix, opt_secretType) {
|
||||
return null;
|
||||
});
|
||||
}
|
||||
function getRequestParams(ctx, req, opt_isNotInBody) {
|
||||
export function getRequestParams(ctx, req, opt_isNotInBody) {
|
||||
return co(function*(){
|
||||
const tenTokenEnableRequestInbox = ctx.getCfg('services.CoAuthoring.token.enable.request.inbox', cfgTokenEnableRequestInbox);
|
||||
const tenTokenRequiredParams = ctx.getCfg('services.CoAuthoring.server.tokenRequiredParams', cfgTokenRequiredParams);
|
||||
@ -1507,7 +1510,7 @@ let getParticipantMap = co.wrap(function*(ctx, docId, opt_hvals) {
|
||||
return participantsMap;
|
||||
});
|
||||
|
||||
function getOpenFormatByEditor(editorType) {
|
||||
export function getOpenFormatByEditor(editorType) {
|
||||
let res;
|
||||
switch (editorType) {
|
||||
case EditorTypes.spreadsheet:
|
||||
@ -1546,38 +1549,11 @@ async function isSchemaCompatible([tableName, tableSchema]) {
|
||||
return true;
|
||||
}
|
||||
|
||||
exports.c_oAscServerStatus = c_oAscServerStatus;
|
||||
exports.editorData = editorData;
|
||||
exports.editorStat = editorStat;
|
||||
exports.sendData = sendData;
|
||||
exports.modifyConnectionForPassword = modifyConnectionForPassword;
|
||||
exports.parseUrl = parseUrl;
|
||||
exports.parseReplyData = parseReplyData;
|
||||
exports.sendServerRequest = sendServerRequest;
|
||||
exports.createSaveTimer = createSaveTimer;
|
||||
exports.changeConnectionInfo = changeConnectionInfo;
|
||||
exports.signToken = signToken;
|
||||
exports.publish = publish;
|
||||
exports.addTask = addTask;
|
||||
exports.addDelayed = addDelayed;
|
||||
exports.removeResponse = removeResponse;
|
||||
exports.hasEditors = hasEditors;
|
||||
exports.getEditorsCountPromise = co.wrap(getEditorsCount);
|
||||
exports.getCallback = getCallback;
|
||||
exports.getIsShutdown = getIsShutdown;
|
||||
exports.hasChanges = hasChanges;
|
||||
exports.cleanDocumentOnExitPromise = co.wrap(cleanDocumentOnExit);
|
||||
exports.cleanDocumentOnExitNoChangesPromise = co.wrap(cleanDocumentOnExitNoChanges);
|
||||
exports.unlockWopiDoc = unlockWopiDoc;
|
||||
exports.setForceSave = setForceSave;
|
||||
exports.startForceSave = startForceSave;
|
||||
exports.resetForceSaveAfterChanges = resetForceSaveAfterChanges;
|
||||
exports.getExternalChangeInfo = getExternalChangeInfo;
|
||||
exports.checkJwt = checkJwt;
|
||||
exports.getRequestParams = getRequestParams;
|
||||
exports.checkJwtHeader = checkJwtHeader;
|
||||
export const getEditorsCountPromise = co.wrap(getEditorsCount);
|
||||
export const cleanDocumentOnExitPromise = co.wrap(cleanDocumentOnExit);
|
||||
export const cleanDocumentOnExitNoChangesPromise = co.wrap(cleanDocumentOnExitNoChanges);
|
||||
|
||||
async function encryptPasswordParams(ctx, data) {
|
||||
export async function encryptPasswordParams(ctx, data) {
|
||||
let dataWithPassword;
|
||||
if (data.type === 'openDocument' && data.message) {
|
||||
dataWithPassword = data.message;
|
||||
@ -1603,9 +1579,7 @@ async function encryptPasswordParams(ctx, data) {
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.encryptPasswordParams = encryptPasswordParams;
|
||||
exports.getOpenFormatByEditor = getOpenFormatByEditor;
|
||||
exports.install = function(server, callbackFunction) {
|
||||
export const install = function(server, callbackFunction) {
|
||||
const io = new Server(server, cfgSocketIoConnection);
|
||||
|
||||
io.use((socket, next) => {
|
||||
@ -2583,11 +2557,11 @@ exports.install = function(server, callbackFunction) {
|
||||
//todo update additional in commandOpenStartPromise
|
||||
if ((upsertRes.isInsert || (wopiParams && 2 === curIndexUser)) && (undefined !== data.timezoneOffset || data.headingsColor || ctx.shardKey || ctx.wopiSrc)) {
|
||||
//todo insert in commandOpenStartPromise. insert here for database compatibility
|
||||
if (false === canvasService.hasAdditionalCol) {
|
||||
if (false === canvasService.hasAdditionalCol()) {
|
||||
let selectRes = yield taskResult.select(ctx, docId);
|
||||
canvasService.hasAdditionalCol = selectRes.length > 0 && undefined !== selectRes[0].additional;
|
||||
canvasService.setHasAdditionalCol(selectRes.length > 0 && undefined !== selectRes[0].additional);
|
||||
}
|
||||
if (canvasService.hasAdditionalCol) {
|
||||
if (canvasService.hasAdditionalCol()) {
|
||||
let task = new taskResult.TaskResultData();
|
||||
task.tenant = ctx.tenant;
|
||||
task.key = docId;
|
||||
@ -3935,7 +3909,7 @@ exports.install = function(server, callbackFunction) {
|
||||
});
|
||||
});
|
||||
};
|
||||
exports.setLicenseInfo = async function(globalCtx, data, original) {
|
||||
export const setLicenseInfo = async function(globalCtx, data, original) {
|
||||
tenantManager.setDefLicense(data, original);
|
||||
|
||||
await utilsDocService.notifyLicenseExpiration(globalCtx, data.endDate);
|
||||
@ -3950,7 +3924,7 @@ exports.setLicenseInfo = async function(globalCtx, data, original) {
|
||||
await utilsDocService.notifyLicenseExpiration(ctx, licenseInfo.endDate);
|
||||
}
|
||||
};
|
||||
exports.healthCheck = function(req, res) {
|
||||
export const healthCheck = function(req, res) {
|
||||
return co(function*() {
|
||||
let output = false;
|
||||
let ctx = new operationContext.Context();
|
||||
@ -4005,7 +3979,7 @@ exports.healthCheck = function(req, res) {
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.licenseInfo = function(req, res) {
|
||||
export const licenseInfo = function(req, res) {
|
||||
return co(function*() {
|
||||
let isError = false;
|
||||
let serverDate = new Date();
|
||||
@ -4355,7 +4329,7 @@ function* commandHandle(ctx, params, req, output) {
|
||||
}
|
||||
|
||||
// Command from the server (specifically teamlab)
|
||||
exports.commandFromServer = function (req, res) {
|
||||
export const commandFromServer = function (req, res) {
|
||||
return co(function* () {
|
||||
const output = { key: 'commandFromServer', error: commonDefines.c_oAscServerCommandErrors.NoError, version: undefined, users: undefined};
|
||||
const ctx = new operationContext.Context();
|
||||
@ -4395,7 +4369,7 @@ exports.commandFromServer = function (req, res) {
|
||||
});
|
||||
};
|
||||
|
||||
exports.shutdown = function(req, res) {
|
||||
export function shutdown(req, res) {
|
||||
return co(function*() {
|
||||
let output = false;
|
||||
let ctx = new operationContext.Context();
|
||||
@ -4403,7 +4377,7 @@ exports.shutdown = function(req, res) {
|
||||
ctx.initFromRequest(req);
|
||||
yield ctx.initTenantCache();
|
||||
ctx.logger.info('shutdown start');
|
||||
output = yield shutdown.shutdown(ctx, editorStat, req.method === 'PUT');
|
||||
output = yield shutdownModule.shutdown(ctx, editorStat, req.method === 'PUT');
|
||||
} catch (err) {
|
||||
ctx.logger.error('shutdown error %s', err.stack);
|
||||
} finally {
|
||||
@ -4413,7 +4387,7 @@ exports.shutdown = function(req, res) {
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.getEditorConnectionsCount = function (req, res) {
|
||||
export const getEditorConnectionsCount = function (req, res) {
|
||||
let ctx = new operationContext.Context();
|
||||
let count = 0;
|
||||
try {
|
||||
|
||||
@ -31,31 +31,31 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const crypto = require('crypto');
|
||||
var pathModule = require('path');
|
||||
var urlModule = require('url');
|
||||
const { pipeline } = require('node:stream/promises');
|
||||
const { buffer } = require('node:stream/consumers');
|
||||
var co = require('co');
|
||||
const ms = require('ms');
|
||||
const retry = require('retry');
|
||||
const MultiRange = require('multi-integer-range').MultiRange;
|
||||
var sqlBase = require('./databaseConnectors/baseConnector');
|
||||
const utilsDocService = require('./utilsDocService');
|
||||
var docsCoServer = require('./DocsCoServer');
|
||||
var taskResult = require('./taskresult');
|
||||
var wopiClient = require('./wopiClient');
|
||||
var logger = require('./../../Common/sources/logger');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var commonDefines = require('./../../Common/sources/commondefines');
|
||||
var storage = require('./../../Common/sources/storage/storage-base');
|
||||
var formatChecker = require('./../../Common/sources/formatchecker');
|
||||
var statsDClient = require('./../../Common/sources/statsdclient');
|
||||
var operationContext = require('./../../Common/sources/operationContext');
|
||||
var tenantManager = require('./../../Common/sources/tenantManager');
|
||||
var config = require('config');
|
||||
const path = require("path");
|
||||
import crypto from 'crypto';
|
||||
import pathModule from 'path';
|
||||
import urlModule from 'url';
|
||||
import { pipeline } from 'node:stream/promises';
|
||||
import { buffer } from 'node:stream/consumers';
|
||||
import co from 'co';
|
||||
import ms from 'ms';
|
||||
import retry from 'retry';
|
||||
import * as MultiRange from 'multi-integer-range';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as utilsDocService from './utilsDocService.js';
|
||||
import * as docsCoServer from './DocsCoServer.js';
|
||||
import * as taskResult from './taskresult.js';
|
||||
import * as wopiClient from './wopiClient.js';
|
||||
import * as logger from './../../Common/sources/logger.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as storage from './../../Common/sources/storage/storage-base.js';
|
||||
import * as formatChecker from './../../Common/sources/formatchecker.js';
|
||||
import * as statsDClient from './../../Common/sources/statsdclient.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
import config from 'config';
|
||||
import path from 'path';
|
||||
|
||||
const cfgTypesUpload = config.get('services.CoAuthoring.utils.limits_image_types_upload');
|
||||
const cfgImageSize = config.get('services.CoAuthoring.server.limits_image_size');
|
||||
@ -83,7 +83,11 @@ var SAVE_TYPE_COMPLETE_ALL = 3;
|
||||
var clientStatsD = statsDClient.getClient();
|
||||
var redisKeyShutdown = cfgRedisPrefix + constants.REDIS_KEY_SHUTDOWN;
|
||||
let hasPasswordCol = false;//stub on upgradev630.sql update failure
|
||||
exports.hasAdditionalCol = false;//stub on upgradev710.sql update failure
|
||||
let _hasAdditionalCol = false;//stub on upgradev710.sql update failure
|
||||
export const hasAdditionalCol = () => _hasAdditionalCol;
|
||||
export const setHasAdditionalCol = (value) => {
|
||||
_hasAdditionalCol = value;
|
||||
};
|
||||
|
||||
function OutputDataWrap(type, data) {
|
||||
this['type'] = type;
|
||||
@ -1179,7 +1183,7 @@ const commandSfcCallback = co.wrap(function*(ctx, cmd, isSfcm, isEncrypted) {
|
||||
}
|
||||
} catch (err) {
|
||||
ctx.logger.error('sendServerRequest error: url = %s;data = %j %s', uri, outputSfc, err.stack);
|
||||
const retryHttpStatus = new MultiRange(tenCallbackBackoffOptions.httpStatus);
|
||||
const retryHttpStatus = new MultiRange.MultiRange(tenCallbackBackoffOptions.httpStatus);
|
||||
if (!isEncrypted && !docsCoServer.getIsShutdown() && (!err.statusCode || retryHttpStatus.has(err.statusCode.toString()))) {
|
||||
let attempt = cmd.getAttempt() || 0;
|
||||
if (attempt < tenCallbackBackoffOptions.retries) {
|
||||
@ -1359,7 +1363,7 @@ function* commandSendMMCallback(ctx, cmd) {
|
||||
ctx.logger.debug('End commandSendMMCallback');
|
||||
}
|
||||
|
||||
exports.openDocument = function(ctx, conn, cmd, opt_upsertRes, opt_bIsRestore) {
|
||||
export const openDocument = function(ctx, conn, cmd, opt_upsertRes, opt_bIsRestore) {
|
||||
return co(function* () {
|
||||
var outputData;
|
||||
try {
|
||||
@ -1421,7 +1425,7 @@ exports.openDocument = function(ctx, conn, cmd, opt_upsertRes, opt_bIsRestore) {
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.downloadAs = function(req, res) {
|
||||
export const downloadAs = function(req, res) {
|
||||
return co(function* () {
|
||||
var docId = 'null';
|
||||
let ctx = new operationContext.Context();
|
||||
@ -1511,7 +1515,7 @@ exports.downloadAs = function(req, res) {
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.saveFile = function(req, res) {
|
||||
export const saveFile = function(req, res) {
|
||||
return co(function*() {
|
||||
let docId = 'null';
|
||||
let ctx = new operationContext.Context();
|
||||
@ -1598,8 +1602,8 @@ function getPrintFileUrl(ctx, docId, baseUrl, filename) {
|
||||
return res;
|
||||
});
|
||||
}
|
||||
exports.getPrintFileUrl = getPrintFileUrl;
|
||||
exports.printFile = function(req, res) {
|
||||
export { getPrintFileUrl };
|
||||
export const printFile = function(req, res) {
|
||||
return co(function*() {
|
||||
let docId = 'null';
|
||||
let ctx = new operationContext.Context();
|
||||
@ -1652,7 +1656,7 @@ exports.printFile = function(req, res) {
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.downloadFile = function(req, res) {
|
||||
export const downloadFile = function(req, res) {
|
||||
return co(function*() {
|
||||
let ctx = new operationContext.Context();
|
||||
try {
|
||||
@ -1790,7 +1794,7 @@ exports.downloadFile = function(req, res) {
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.saveFromChanges = function(ctx, docId, statusInfo, optFormat, opt_userId, opt_userIndex, opt_userLcid, opt_queue, opt_initShardKey) {
|
||||
export const saveFromChanges = function(ctx, docId, statusInfo, optFormat, opt_userId, opt_userIndex, opt_userLcid, opt_queue, opt_initShardKey) {
|
||||
return co(function* () {
|
||||
try {
|
||||
var startDate = null;
|
||||
@ -1860,7 +1864,7 @@ async function processWopiSaveAs(ctx, cmd) {
|
||||
}
|
||||
return {res: res, wopiParams: info?.wopiParams};
|
||||
}
|
||||
exports.receiveTask = function(data, ack) {
|
||||
export const receiveTask = function(data, ack) {
|
||||
return co(function* () {
|
||||
let ctx = new operationContext.Context();
|
||||
try {
|
||||
@ -1939,13 +1943,15 @@ exports.receiveTask = function(data, ack) {
|
||||
});
|
||||
};
|
||||
|
||||
exports.cleanupCache = cleanupCache;
|
||||
exports.cleanupCacheIf = cleanupCacheIf;
|
||||
exports.cleanupErrToReload = cleanupErrToReload;
|
||||
exports.getOpenedAt = getOpenedAt;
|
||||
exports.commandSfctByCmd = commandSfctByCmd;
|
||||
exports.commandOpenStartPromise = commandOpenStartPromise;
|
||||
exports.commandPathUrls = commandPathUrls;
|
||||
exports.commandSfcCallback = commandSfcCallback;
|
||||
exports.OutputDataWrap = OutputDataWrap;
|
||||
exports.OutputData = OutputData;
|
||||
export {
|
||||
cleanupCache,
|
||||
cleanupCacheIf,
|
||||
cleanupErrToReload,
|
||||
getOpenedAt,
|
||||
commandSfctByCmd,
|
||||
commandOpenStartPromise,
|
||||
commandPathUrls,
|
||||
commandSfcCallback,
|
||||
OutputDataWrap,
|
||||
OutputData
|
||||
}
|
||||
|
||||
@ -31,22 +31,25 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var config = require('config');
|
||||
var configCoAuthoring = config.get('services.CoAuthoring');
|
||||
var co = require('co');
|
||||
var pubsubService = require('./pubsubRabbitMQ');
|
||||
var commonDefines = require('./../../Common/sources/commondefines');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
const storage = require('./../../Common/sources/storage/storage-base');
|
||||
const queueService = require('./../../Common/sources/taskqueueRabbitMQ');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
const sqlBase = require('./databaseConnectors/baseConnector');
|
||||
const docsCoServer = require('./DocsCoServer');
|
||||
const taskResult = require('./taskresult');
|
||||
import config from 'config';
|
||||
import co from 'co';
|
||||
import pubsubService from './pubsubRabbitMQ.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as storage from './../../Common/sources/storage/storage-base.js';
|
||||
import queueService from './../../Common/sources/taskqueueRabbitMQ.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as docsCoServer from './DocsCoServer.js';
|
||||
import * as taskResult from './taskresult.js';
|
||||
import cfgEditorDataStorageModule from './editorDataMemory.js';
|
||||
import cfgEditorStatStorageModule from './editorDataRedis.js';
|
||||
|
||||
const configCoAuthoring = config.get('services.CoAuthoring');
|
||||
const cfgEditorDataStorage = config.get('services.CoAuthoring.server.editorDataStorage');
|
||||
const cfgEditorStatStorage = config.get('services.CoAuthoring.server.editorStatStorage');
|
||||
const editorStatStorage = require('./' + (cfgEditorStatStorage || cfgEditorDataStorage));
|
||||
const editorStatStorage = cfgEditorStatStorage? cfgEditorStatStorageModule: cfgEditorDataStorage ? cfgEditorDataStorageModule: null;
|
||||
|
||||
const cfgForgottenFiles = config.get('services.CoAuthoring.server.forgottenfiles');
|
||||
const cfgTableResult = config.get('services.CoAuthoring.sql.tableResult');
|
||||
@ -58,7 +61,7 @@ var WAIT_TIMEOUT = 30000;
|
||||
var LOOP_TIMEOUT = 1000;
|
||||
var EXEC_TIMEOUT = WAIT_TIMEOUT + utils.getConvertionTimeout(undefined);
|
||||
|
||||
let addSqlParam = sqlBase.addSqlParameter;
|
||||
let addSqlParam = sqlBase.dbInstance.addSqlParameter;
|
||||
|
||||
function updateDoc(ctx, docId, status, callback) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
@ -68,7 +71,7 @@ function updateDoc(ctx, docId, status, callback) {
|
||||
let p3 = addSqlParam(ctx.tenant, values);
|
||||
let p4 = addSqlParam(docId, values);
|
||||
let sqlCommand = `UPDATE ${cfgTableResult} SET status=${p1},callback=${p2} WHERE tenant=${p3} AND id=${p4};`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -184,5 +187,6 @@ function shutdown() {
|
||||
return res;
|
||||
});
|
||||
};
|
||||
exports.shutdown = shutdown;
|
||||
shutdown();
|
||||
export {
|
||||
shutdown
|
||||
}
|
||||
|
||||
@ -32,27 +32,24 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
var config = require('config');
|
||||
var co = require('co');
|
||||
let mime;
|
||||
import('mime').then(module => {
|
||||
mime = module.default;
|
||||
})
|
||||
var taskResult = require('./taskresult');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var commonDefines = require('./../../Common/sources/commondefines');
|
||||
var docsCoServer = require('./DocsCoServer');
|
||||
var canvasService = require('./canvasservice');
|
||||
var wopiClient = require('./wopiClient');
|
||||
var storage = require('./../../Common/sources/storage/storage-base');
|
||||
var formatChecker = require('./../../Common/sources/formatchecker');
|
||||
var statsDClient = require('./../../Common/sources/statsdclient');
|
||||
var storageBase = require('./../../Common/sources/storage/storage-base');
|
||||
var operationContext = require('./../../Common/sources/operationContext');
|
||||
const sqlBase = require('./databaseConnectors/baseConnector');
|
||||
const utilsDocService = require("./utilsDocService");
|
||||
import path from 'path';
|
||||
import config from 'config';
|
||||
import co from 'co';
|
||||
import * as taskResult from './taskresult.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as docsCoServer from './DocsCoServer.js';
|
||||
import * as canvasService from './canvasservice.js';
|
||||
import * as wopiClient from './wopiClient.js';
|
||||
import * as storage from './../../Common/sources/storage/storage-base.js';
|
||||
import * as formatChecker from './../../Common/sources/formatchecker.js';
|
||||
import * as statsDClient from './../../Common/sources/statsdclient.js';
|
||||
import * as storageBase from './../../Common/sources/storage/storage-base.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as utilsDocService from './utilsDocService.js';
|
||||
import mime from 'mime';
|
||||
|
||||
const cfgTokenEnableBrowser = config.get('services.CoAuthoring.token.enable.browser');
|
||||
|
||||
@ -720,10 +717,12 @@ function getConverterHtmlHandler(req, res) {
|
||||
}
|
||||
});
|
||||
}
|
||||
exports.convertFromChanges = convertFromChanges;
|
||||
exports.convertJson = convertRequestJson;
|
||||
exports.convertXml = convertRequestXml;
|
||||
exports.convertTo = convertTo;
|
||||
exports.convertAndEdit = convertAndEdit;
|
||||
exports.getConverterHtmlHandler = getConverterHtmlHandler;
|
||||
exports.builder = builderRequest;
|
||||
export {
|
||||
convertFromChanges,
|
||||
convertRequestJson as convertJson,
|
||||
convertRequestXml as convertXml,
|
||||
convertTo,
|
||||
convertAndEdit,
|
||||
getConverterHtmlHandler,
|
||||
builderRequest as builder
|
||||
};
|
||||
|
||||
@ -1,127 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2024
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var mongoDB = require('mongodb');
|
||||
var config = require('./config.json');
|
||||
var _errorConnection = true;
|
||||
|
||||
var logger = require('./../../Common/sources/logger');
|
||||
|
||||
function CreateDbClient(){
|
||||
return new mongoDB.Db(config['mongodb']['database'], new mongoDB.Server(config['mongodb']['host'], config['mongodb']['port'], {auto_reconnect: true}), {safe:false});
|
||||
}
|
||||
exports.insert = function (_collectionName, _newElement) {
|
||||
var _db = CreateDbClient();
|
||||
if (!_db) {
|
||||
logger.error ("Error _db");
|
||||
return;
|
||||
}
|
||||
|
||||
_db.open (function (err, db) {
|
||||
if (!err) {
|
||||
// open collection. If it doesn't exist, it will be created
|
||||
db.collection(_collectionName, function(err, collection) {
|
||||
if (!err) {
|
||||
collection.insert (_newElement);
|
||||
} else {
|
||||
logger.error ("Error collection");
|
||||
return;
|
||||
}
|
||||
|
||||
db.close();
|
||||
});
|
||||
} else {
|
||||
logger.error ("Error open database");
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.remove = function (_collectionName, _removeElements) {
|
||||
var _db = CreateDbClient();
|
||||
if (!_db) {
|
||||
logger.error ("Error _db");
|
||||
return;
|
||||
}
|
||||
|
||||
// Opening the database
|
||||
_db.open (function (err, db) {
|
||||
if (!err) {
|
||||
// open collection. If it doesn't exist, it will be created
|
||||
db.collection(_collectionName, function(err, collection) {
|
||||
if (!err) {
|
||||
collection.remove (_removeElements, function(err, collection) {
|
||||
logger.info ("All elements remove");
|
||||
});
|
||||
} else {
|
||||
logger.error ("Error collection");
|
||||
return;
|
||||
}
|
||||
|
||||
db.close();
|
||||
});
|
||||
} else {
|
||||
logger.error ("Error open database");
|
||||
}
|
||||
});
|
||||
};
|
||||
exports.load = function (_collectionName, callbackFunction) {
|
||||
var _db = CreateDbClient();
|
||||
if (!_db) {
|
||||
logger.error ("Error _db");
|
||||
return callbackFunction (null);
|
||||
}
|
||||
|
||||
var result = [];
|
||||
|
||||
// opening database
|
||||
_db.open (function (err, db) {
|
||||
// open collection. If it doesn't exist, it will be created
|
||||
db.collection(_collectionName, function(err, collection) {
|
||||
// Get all elements of a collection with find()
|
||||
collection.find(function(err, cursor) {
|
||||
cursor.each(function(err, item) {
|
||||
// Null denotes the last element
|
||||
if (item != null) {
|
||||
if (!result.hasOwnProperty (item.docid))
|
||||
result[item.docid] = [item];
|
||||
else
|
||||
result[item.docid].push(item);
|
||||
} else
|
||||
callbackFunction (result);
|
||||
});
|
||||
|
||||
db.close();
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
@ -41,10 +41,15 @@ const sqlDataBaseType = {
|
||||
oracle : 'oracle'
|
||||
};
|
||||
|
||||
const connectorUtilities = require('./connectorUtilities');
|
||||
const utils = require('../../../Common/sources/utils');
|
||||
const bottleneck = require('bottleneck');
|
||||
const config = require('config');
|
||||
import * as connectorUtilities from './connectorUtilities.js';
|
||||
import * as utils from '../../../Common/sources/utils.js';
|
||||
import bottleneck from 'bottleneck';
|
||||
import config from 'config';
|
||||
import * as mysqlConnector from './mysqlConnector.js';
|
||||
import * as mssqlConnector from './mssqlConnector.js';
|
||||
import * as damengConnector from './damengConnector.js';
|
||||
import * as oracleConnector from './oracleConnector.js';
|
||||
import * as postgreConnector from './postgreConnector.js';
|
||||
|
||||
const configSql = config.get('services.CoAuthoring.sql');
|
||||
const cfgTableResult = configSql.get('tableResult');
|
||||
@ -61,24 +66,24 @@ let dbInstance;
|
||||
switch (dbType) {
|
||||
case sqlDataBaseType.mySql:
|
||||
case sqlDataBaseType.mariaDB:
|
||||
dbInstance = require('./mysqlConnector');
|
||||
dbInstance = mysqlConnector;
|
||||
break;
|
||||
case sqlDataBaseType.msSql:
|
||||
dbInstance = require('./mssqlConnector');
|
||||
dbInstance = mssqlConnector;
|
||||
break;
|
||||
case sqlDataBaseType.dameng:
|
||||
dbInstance = require('./damengConnector');
|
||||
dbInstance = damengConnector;
|
||||
break;
|
||||
case sqlDataBaseType.oracle:
|
||||
dbInstance = require('./oracleConnector');
|
||||
dbInstance = oracleConnector;
|
||||
break;
|
||||
default:
|
||||
dbInstance = require('./postgreConnector');
|
||||
dbInstance = postgreConnector;
|
||||
break;
|
||||
}
|
||||
|
||||
let isSupportFastInsert = !!dbInstance.insertChanges;
|
||||
const addSqlParameter = dbInstance.addSqlParameter;
|
||||
let addSqlParameter = dbInstance.addSqlParameter;
|
||||
|
||||
|
||||
function getChangesSize(changes) {
|
||||
return changes.reduce((accumulator, currentValue) => accumulator + currentValue.change_data.length, 0);
|
||||
@ -383,7 +388,7 @@ function getTableColumns(ctx, tableName) {
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
insertChangesPromise,
|
||||
deleteChangesPromise,
|
||||
deleteChanges,
|
||||
@ -396,7 +401,9 @@ module.exports = {
|
||||
healthCheck,
|
||||
getEmptyCallbacks,
|
||||
getTableColumns,
|
||||
getDateTime: _getDateTime2,
|
||||
...connectorUtilities,
|
||||
...dbInstance
|
||||
};
|
||||
_getDateTime2 as getDateTime,
|
||||
dbInstance
|
||||
};
|
||||
export const UserCallback = connectorUtilities.UserCallback;
|
||||
export const DocumentPassword = connectorUtilities.DocumentPassword;
|
||||
export const DocumentAdditional = connectorUtilities.DocumentAdditional;
|
||||
@ -30,7 +30,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
const constants = require('../../../Common/sources/constants');
|
||||
import * as constants from '../../../Common/sources/constants.js';
|
||||
|
||||
function UserCallback() {
|
||||
this.userIndex = undefined;
|
||||
@ -228,7 +228,7 @@ DocumentAdditional.prototype.getWopiSrc = function(str) {
|
||||
return res;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
UserCallback,
|
||||
DocumentPassword,
|
||||
DocumentAdditional
|
||||
|
||||
@ -32,9 +32,9 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const connectorUtilities = require('./connectorUtilities');
|
||||
const db = require('dmdb');
|
||||
const config = require('config');
|
||||
import * as connectorUtilities from './connectorUtilities.js';
|
||||
import db from 'dmdb';
|
||||
import config from 'config';
|
||||
|
||||
const configSql = config.get('services.CoAuthoring.sql');
|
||||
const cfgDbHost = configSql.get('dbHost');
|
||||
@ -215,7 +215,7 @@ async function upsert(ctx, task) {
|
||||
return out;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
sqlQuery,
|
||||
closePool,
|
||||
addSqlParameter,
|
||||
|
||||
@ -32,10 +32,10 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const sql = require('mssql');
|
||||
const config = require('config');
|
||||
const connectorUtilities = require('./connectorUtilities');
|
||||
const utils = require('../../../Common/sources/utils');
|
||||
import sql from 'mssql';
|
||||
import config from 'config';
|
||||
import * as connectorUtilities from './connectorUtilities.js';
|
||||
import * as utils from '../../../Common/sources/utils.js';
|
||||
|
||||
const configSql = config.get('services.CoAuthoring.sql');
|
||||
const cfgTableResult = configSql.get('tableResult');
|
||||
@ -333,7 +333,7 @@ async function insertChangesAsync(ctx, tableChanges, startIndex, objChanges, doc
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
sqlQuery,
|
||||
closePool,
|
||||
addSqlParameter,
|
||||
|
||||
@ -32,9 +32,9 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const mysql = require('mysql2/promise');
|
||||
const connectorUtilities = require('./connectorUtilities');
|
||||
const config = require('config');
|
||||
import mysql from 'mysql2/promise';
|
||||
import * as connectorUtilities from './connectorUtilities.js';
|
||||
import config from 'config';
|
||||
|
||||
const configSql = config.get('services.CoAuthoring.sql');
|
||||
const cfgTableResult = configSql.get('tableResult');
|
||||
@ -166,8 +166,10 @@ async function upsert(ctx, task) {
|
||||
return { isInsert, insertId };
|
||||
}
|
||||
|
||||
module.exports.sqlQuery = sqlQuery;
|
||||
module.exports.closePool = closePool;
|
||||
module.exports.addSqlParameter = addSqlParameter;
|
||||
module.exports.concatParams = concatParams;
|
||||
module.exports.upsert = upsert;
|
||||
export {
|
||||
sqlQuery,
|
||||
closePool,
|
||||
addSqlParameter,
|
||||
concatParams,
|
||||
upsert
|
||||
};
|
||||
|
||||
@ -32,10 +32,10 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const oracledb = require('oracledb');
|
||||
const config = require('config');
|
||||
const connectorUtilities = require('./connectorUtilities');
|
||||
const utils = require('../../../Common/sources/utils');
|
||||
import oracledb from 'oracledb';
|
||||
import config from 'config';
|
||||
import * as connectorUtilities from './connectorUtilities.js';
|
||||
import * as utils from '../../../Common/sources/utils.js';
|
||||
|
||||
const configSql = config.get('services.CoAuthoring.sql');
|
||||
const cfgTableResult = configSql.get('tableResult');
|
||||
@ -346,7 +346,7 @@ async function insertChangesAsync(ctx, tableChanges, startIndex, objChanges, doc
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
sqlQuery,
|
||||
closePool,
|
||||
healthCheck,
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var pg = require('pg');
|
||||
var co = require('co');
|
||||
var types = require('pg').types;
|
||||
const connectorUtilities = require('./connectorUtilities');
|
||||
const operationContext = require('../../../Common/sources/operationContext');
|
||||
const config = require('config');
|
||||
import pg from 'pg';
|
||||
import co from 'co';
|
||||
import {types} from 'pg';
|
||||
import * as connectorUtilities from './connectorUtilities.js';
|
||||
import * as operationContext from '../../../Common/sources/operationContext.js';
|
||||
import config from 'config';
|
||||
var configSql = config.get('services.CoAuthoring.sql');
|
||||
const cfgTableResult = config.get('services.CoAuthoring.sql.tableResult');
|
||||
var pgPoolExtraOptions = config.util.cloneDeep(configSql.get('pgPoolExtraOptions'));
|
||||
@ -236,7 +236,7 @@ function insertChanges(ctx, tableChanges, startIndex, objChanges, docId, index,
|
||||
}, undefined, undefined, values);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
sqlQuery,
|
||||
closePool,
|
||||
addSqlParameter,
|
||||
|
||||
@ -31,11 +31,11 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const config = require('config');
|
||||
const ms = require('ms');
|
||||
const utils = require('./../../Common/sources/utils');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
const tenantManager = require('./../../Common/sources/tenantManager');
|
||||
import config from 'config';
|
||||
import ms from 'ms';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
|
||||
const cfgExpMonthUniqueUsers = ms(config.get('services.CoAuthoring.expire.monthUniqueUsers'));
|
||||
|
||||
@ -502,7 +502,7 @@ EditorStat.prototype.lockNotification = async function(ctx, notificationType, tt
|
||||
return this._checkAndLock(ctx, notificationType, notificationType, NaN, ttl);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
EditorData,
|
||||
EditorStat
|
||||
}
|
||||
|
||||
1
DocService/sources/editorDataRedis.js
Normal file
1
DocService/sources/editorDataRedis.js
Normal file
@ -0,0 +1 @@
|
||||
export default null;
|
||||
@ -31,18 +31,18 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const crypto = require('crypto');
|
||||
var multiparty = require('multiparty');
|
||||
var co = require('co');
|
||||
const utilsDocService = require('./utilsDocService');
|
||||
var docsCoServer = require('./DocsCoServer');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var storageBase = require('./../../Common/sources/storage/storage-base');
|
||||
var formatChecker = require('./../../Common/sources/formatchecker');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
var config = require('config');
|
||||
import crypto from 'crypto';
|
||||
import multiparty from 'multiparty';
|
||||
import co from 'co';
|
||||
import * as utilsDocService from './utilsDocService.js';
|
||||
import * as docsCoServer from './DocsCoServer.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as storageBase from './../../Common/sources/storage/storage-base.js';
|
||||
import * as formatChecker from './../../Common/sources/formatchecker.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import config from 'config';
|
||||
|
||||
const cfgImageSize = config.get('services.CoAuthoring.server.limits_image_size');
|
||||
const cfgTypesUpload = config.get('services.CoAuthoring.utils.limits_image_types_upload');
|
||||
@ -75,7 +75,7 @@ function checkJwtUploadTransformRes(ctx, errorName, checkJwtRes){
|
||||
}
|
||||
return res;
|
||||
}
|
||||
exports.uploadImageFile = function(req, res) {
|
||||
export const uploadImageFile = function(req, res) {
|
||||
return co(function* () {
|
||||
let httpStatus = 200;
|
||||
var docId = 'null';
|
||||
|
||||
@ -32,22 +32,22 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const config = require('config');
|
||||
var co = require('co');
|
||||
var cron = require('cron');
|
||||
var ms = require('ms');
|
||||
var taskResult = require('./taskresult');
|
||||
var docsCoServer = require('./DocsCoServer');
|
||||
var canvasService = require('./canvasservice');
|
||||
var storage = require('./../../Common/sources/storage/storage-base');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
var logger = require('./../../Common/sources/logger');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var commondefines = require('./../../Common/sources/commondefines');
|
||||
var queueService = require('./../../Common/sources/taskqueueRabbitMQ');
|
||||
var operationContext = require('./../../Common/sources/operationContext');
|
||||
var pubsubService = require('./pubsubRabbitMQ');
|
||||
const sqlBase = require("./databaseConnectors/baseConnector");
|
||||
import config from 'config';
|
||||
import co from 'co';
|
||||
import cron from 'cron';
|
||||
import ms from 'ms';
|
||||
import * as taskResult from './taskresult.js';
|
||||
import * as docsCoServer from './DocsCoServer.js';
|
||||
import * as canvasService from './canvasservice.js';
|
||||
import * as storage from './../../Common/sources/storage/storage-base.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as logger from './../../Common/sources/logger.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import queueService from './../../Common/sources/taskqueueRabbitMQ.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import pubsubService from './pubsubRabbitMQ.js';
|
||||
import * as sqlBase from "./databaseConnectors/baseConnector.js";
|
||||
|
||||
var cfgExpFilesCron = config.get('services.CoAuthoring.expire.filesCron');
|
||||
var cfgExpDocumentsCron = config.get('services.CoAuthoring.expire.documentsCron');
|
||||
@ -55,7 +55,7 @@ var cfgExpFiles = config.get('services.CoAuthoring.expire.files');
|
||||
var cfgExpFilesRemovedAtOnce = config.get('services.CoAuthoring.expire.filesremovedatonce');
|
||||
var cfgForceSaveStep = ms(config.get('services.CoAuthoring.autoAssembly.step'));
|
||||
|
||||
function getCronStep(cronTime){
|
||||
export function getCronStep(cronTime){
|
||||
let cronJob = new cron.CronJob(cronTime, function(){});
|
||||
let dates = cronJob.nextDates(2);
|
||||
return dates[1] - dates[0];
|
||||
@ -63,7 +63,7 @@ function getCronStep(cronTime){
|
||||
let expFilesStep = getCronStep(cfgExpFilesCron);
|
||||
let expDocumentsStep = getCronStep(cfgExpDocumentsCron);
|
||||
|
||||
var checkFileExpire = function(expireSeconds) {
|
||||
export var checkFileExpire = function(expireSeconds) {
|
||||
return co(function* () {
|
||||
let ctx = new operationContext.Context();
|
||||
try {
|
||||
@ -203,10 +203,8 @@ let forceSaveTimeout = function() {
|
||||
});
|
||||
};
|
||||
|
||||
exports.startGC = function() {
|
||||
export const startGC = function() {
|
||||
setTimeout(checkDocumentExpire, expDocumentsStep);
|
||||
setTimeout(checkFileExpire, expFilesStep);
|
||||
setTimeout(forceSaveTimeout, cfgForceSaveStep);
|
||||
};
|
||||
exports.getCronStep = getCronStep;
|
||||
exports.checkFileExpire = checkFileExpire;
|
||||
};
|
||||
@ -31,15 +31,15 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var config = require('config');
|
||||
var events = require('events');
|
||||
var util = require('util');
|
||||
var co = require('co');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
var rabbitMQCore = require('./../../Common/sources/rabbitMQCore');
|
||||
var activeMQCore = require('./../../Common/sources/activeMQCore');
|
||||
import config from 'config';
|
||||
import events from 'events';
|
||||
import util from 'util';
|
||||
import co from 'co';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as rabbitMQCore from './../../Common/sources/rabbitMQCore.js';
|
||||
import * as activeMQCore from './../../Common/sources/activeMQCore.js';
|
||||
|
||||
const cfgQueueType = config.get('queue.type');
|
||||
const cfgRabbitExchangePubSub = config.util.cloneDeep(config.get('rabbitmq.exchangepubsub'));
|
||||
@ -260,4 +260,4 @@ PubsubRabbitMQ.prototype.healthCheck = function() {
|
||||
return healthCheck(this);
|
||||
};
|
||||
|
||||
module.exports = PubsubRabbitMQ;
|
||||
export default PubsubRabbitMQ;
|
||||
|
||||
@ -31,17 +31,14 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const express = require('express');
|
||||
const config = require('config');
|
||||
const operationContext = require('./../../../Common/sources/operationContext');
|
||||
const utils = require('./../../../Common/sources/utils');
|
||||
const storage = require('./../../../Common/sources/storage/storage-base');
|
||||
const urlModule = require("url");
|
||||
const path = require("path");
|
||||
let mime;
|
||||
import('mime').then(module => {
|
||||
mime = module.default;
|
||||
})
|
||||
import express from 'express';
|
||||
import config from 'config';
|
||||
import * as operationContext from './../../../Common/sources/operationContext.js';
|
||||
import * as utils from './../../../Common/sources/utils.js';
|
||||
import * as storage from './../../../Common/sources/storage/storage-base.js';
|
||||
import urlModule from 'url';
|
||||
import path from 'path';
|
||||
import mime from 'mime';
|
||||
|
||||
const cfgStaticContent = config.has('services.CoAuthoring.server.static_content') ? config.util.cloneDeep(config.get('services.CoAuthoring.server.static_content')) : {};
|
||||
const cfgCacheStorage = config.get('storage');
|
||||
@ -104,4 +101,4 @@ if (storage.needServeStatic(cfgForgottenFiles)) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = router;
|
||||
export default router;
|
||||
|
||||
@ -32,32 +32,33 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const config = require('config');
|
||||
import config from 'config';
|
||||
//process.env.NODE_ENV = config.get('services.CoAuthoring.server.mode');
|
||||
const logger = require('./../../Common/sources/logger');
|
||||
const co = require('co');
|
||||
const license = require('./../../Common/sources/license');
|
||||
const fs = require('fs');
|
||||
import * as logger from './../../Common/sources/logger.js';
|
||||
import co from 'co';
|
||||
import * as license from './../../Common/sources/license.js';
|
||||
import fs from 'fs';
|
||||
|
||||
const express = require('express');
|
||||
const http = require('http');
|
||||
const urlModule = require('url');
|
||||
const path = require('path');
|
||||
const bodyParser = require("body-parser");
|
||||
const multer = require('multer');
|
||||
const apicache = require('apicache');
|
||||
const docsCoServer = require('./DocsCoServer');
|
||||
const canvasService = require('./canvasservice');
|
||||
const converterService = require('./converterservice');
|
||||
const fileUploaderService = require('./fileuploaderservice');
|
||||
const wopiClient = require('./wopiClient');
|
||||
const constants = require('./../../Common/sources/constants');
|
||||
const utils = require('./../../Common/sources/utils');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
const tenantManager = require('./../../Common/sources/tenantManager');
|
||||
const staticRouter = require('./routes/static');
|
||||
const ms = require('ms');
|
||||
import express from 'express';
|
||||
import http from 'http';
|
||||
import urlModule from 'url';
|
||||
import path from 'path';
|
||||
import bodyParser from "body-parser";
|
||||
import multer from 'multer';
|
||||
import mime from 'mime';
|
||||
import apicache from 'apicache';
|
||||
import * as docsCoServer from './DocsCoServer.js';
|
||||
import * as canvasService from './canvasservice.js';
|
||||
import * as converterService from './converterservice.js';
|
||||
import * as fileUploaderService from './fileuploaderservice.js';
|
||||
import * as wopiClient from './wopiClient.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
import staticRouter from './routes/static.js';
|
||||
import ms from 'ms';
|
||||
|
||||
const cfgWopiEnable = config.get('wopi.enable');
|
||||
const cfgWopiDummyEnable = config.get('wopi.dummy.enable');
|
||||
@ -68,24 +69,24 @@ const cfgTokenEnableRequestOutbox = config.get('services.CoAuthoring.token.enabl
|
||||
const cfgLicenseFile = config.get('license.license_file');
|
||||
const cfgDownloadMaxBytes = config.get('FileConverter.converter.maxDownloadBytes');
|
||||
|
||||
if (false) {
|
||||
var cluster = require('cluster');
|
||||
cluster.schedulingPolicy = cluster.SCHED_RR
|
||||
if (cluster.isMaster) {
|
||||
let workersCount = 2;
|
||||
logger.warn('start cluster with %s workers %s', workersCount, cluster.schedulingPolicy);
|
||||
for (let nIndexWorker = 0; nIndexWorker < workersCount; ++nIndexWorker) {
|
||||
var worker = cluster.fork().process;
|
||||
logger.warn('worker %s started.', worker.pid);
|
||||
}
|
||||
// if (false) {
|
||||
// var cluster = require('cluster');
|
||||
// cluster.schedulingPolicy = cluster.SCHED_RR
|
||||
// if (cluster.isMaster) {
|
||||
// let workersCount = 2;
|
||||
// logger.warn('start cluster with %s workers %s', workersCount, cluster.schedulingPolicy);
|
||||
// for (let nIndexWorker = 0; nIndexWorker < workersCount; ++nIndexWorker) {
|
||||
// var worker = cluster.fork().process;
|
||||
// logger.warn('worker %s started.', worker.pid);
|
||||
// }
|
||||
|
||||
cluster.on('exit', function (worker) {
|
||||
logger.warn('worker %s died. restart...', worker.process.pid);
|
||||
cluster.fork();
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
// cluster.on('exit', function (worker) {
|
||||
// logger.warn('worker %s died. restart...', worker.process.pid);
|
||||
// cluster.fork();
|
||||
// });
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
|
||||
const app = express();
|
||||
app.disable('x-powered-by');
|
||||
@ -414,4 +415,4 @@ process.on('uncaughtException', (err) => {
|
||||
logger.shutdown(() => {
|
||||
process.exit(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -31,16 +31,16 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var config = require('config');
|
||||
var configCoAuthoring = config.get('services.CoAuthoring');
|
||||
var co = require('co');
|
||||
var logger = require('./../../Common/sources/logger');
|
||||
var pubsubService = require('./pubsubRabbitMQ');
|
||||
const sqlBase = require('./databaseConnectors/baseConnector');
|
||||
var commonDefines = require('./../../Common/sources/commondefines');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
import config from 'config';
|
||||
import co from 'co';
|
||||
import * as logger from './../../Common/sources/logger.js';
|
||||
import pubsubService from './pubsubRabbitMQ.js';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
|
||||
var configCoAuthoring = config.get('services.CoAuthoring');
|
||||
var cfgRedisPrefix = configCoAuthoring.get('redis.prefix');
|
||||
var redisKeyShutdown = cfgRedisPrefix + constants.REDIS_KEY_SHUTDOWN;
|
||||
|
||||
@ -48,7 +48,7 @@ var WAIT_TIMEOUT = 30000;
|
||||
var LOOP_TIMEOUT = 1000;
|
||||
var EXEC_TIMEOUT = WAIT_TIMEOUT + utils.getConvertionTimeout(undefined);
|
||||
|
||||
exports.shutdown = function(ctx, editorStat, status) {
|
||||
export const shutdown = function(ctx, editorStat, status) {
|
||||
return co(function*() {
|
||||
var res = true;
|
||||
try {
|
||||
|
||||
@ -32,17 +32,17 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const crypto = require('crypto');
|
||||
var sqlBase = require('./databaseConnectors/baseConnector');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var commonDefines = require('./../../Common/sources/commondefines');
|
||||
var tenantManager = require('./../../Common/sources/tenantManager');
|
||||
var config = require('config');
|
||||
import crypto from 'crypto';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
import config from 'config';
|
||||
|
||||
const cfgTableResult = config.get('services.CoAuthoring.sql.tableResult');
|
||||
|
||||
let addSqlParam = sqlBase.addSqlParameter;
|
||||
let concatParams = sqlBase.concatParams;
|
||||
let addSqlParam = sqlBase.dbInstance.addSqlParameter;
|
||||
let concatParams = sqlBase.dbInstance.concatParams;
|
||||
|
||||
var RANDOM_KEY_MAX = 10000;
|
||||
|
||||
@ -96,7 +96,7 @@ TaskResultData.prototype.completeDefaults = function() {
|
||||
};
|
||||
|
||||
function upsert(ctx, task) {
|
||||
return sqlBase.upsert(ctx, task);
|
||||
return sqlBase.dbInstance.upsert(ctx, task);
|
||||
}
|
||||
|
||||
function select(ctx, docId) {
|
||||
@ -105,7 +105,7 @@ function select(ctx, docId) {
|
||||
let p1 = addSqlParam(ctx.tenant, values);
|
||||
let p2 = addSqlParam(docId, values);
|
||||
let sqlCommand = `SELECT * FROM ${cfgTableResult} WHERE tenant=${p1} AND id=${p2};`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -174,7 +174,7 @@ function update(ctx, task, setPassword) {
|
||||
let p1 = addSqlParam(task.tenant, values);
|
||||
let p2 = addSqlParam(task.key, values);
|
||||
let sqlCommand = `UPDATE ${cfgTableResult} SET ${sqlSet} WHERE tenant=${p1} AND id=${p2};`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -194,7 +194,7 @@ function updateIf(ctx, task, mask) {
|
||||
let sqlSet = commandArg.join(', ');
|
||||
let sqlWhere = commandArgMask.join(' AND ');
|
||||
let sqlCommand = `UPDATE ${cfgTableResult} SET ${sqlSet} WHERE ${sqlWhere};`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -245,7 +245,7 @@ function addRandomKey(ctx, task, key, opt_prefix, opt_size) {
|
||||
let p8 = addSqlParam(task.baseurl, values);
|
||||
let sqlCommand = `INSERT INTO ${cfgTableResult} (tenant, id, status, status_info, last_open_date, user_index, change_id, callback, baseurl)` +
|
||||
` VALUES (${p0}, ${p1}, ${p2}, ${p3}, ${p4}, ${p5}, ${p6}, ${p7}, ${p8});`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -286,7 +286,7 @@ function remove(ctx, docId) {
|
||||
let p1 = addSqlParam(ctx.tenant, values);
|
||||
let p2 = addSqlParam(docId, values);
|
||||
const sqlCommand = `DELETE FROM ${cfgTableResult} WHERE tenant=${p1} AND id=${p2};`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -303,7 +303,7 @@ function removeIf(ctx, mask) {
|
||||
commandArgMask.push('id=' + addSqlParam(mask.key, values));
|
||||
let sqlWhere = commandArgMask.join(' AND ');
|
||||
const sqlCommand = `DELETE FROM ${cfgTableResult} WHERE ${sqlWhere};`;
|
||||
sqlBase.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
sqlBase.dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
@ -313,13 +313,16 @@ function removeIf(ctx, mask) {
|
||||
});
|
||||
}
|
||||
|
||||
exports.TaskResultData = TaskResultData;
|
||||
exports.upsert = upsert;
|
||||
exports.select = select;
|
||||
exports.update = update;
|
||||
exports.updateIf = updateIf;
|
||||
exports.restoreInitialPassword = restoreInitialPassword;
|
||||
exports.addRandomKeyTask = addRandomKeyTask;
|
||||
exports.remove = remove;
|
||||
exports.removeIf = removeIf;
|
||||
exports.getExpired = sqlBase.getExpired;
|
||||
export {
|
||||
TaskResultData,
|
||||
upsert,
|
||||
select,
|
||||
update,
|
||||
updateIf,
|
||||
restoreInitialPassword,
|
||||
addRandomKeyTask,
|
||||
remove,
|
||||
removeIf,
|
||||
}
|
||||
|
||||
export const getExpired = sqlBase.getExpired
|
||||
|
||||
@ -32,19 +32,20 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const util = require("util");
|
||||
const config = require('config');
|
||||
const exifParser = require('exif-parser');
|
||||
import util from 'util';
|
||||
import config from 'config';
|
||||
import exifParser from 'exif-parser';
|
||||
//set global window to fix issue https://github.com/photopea/UTIF.js/issues/130
|
||||
if (!global.window) {
|
||||
global.window = global;
|
||||
}
|
||||
const Jimp = require('jimp');
|
||||
const locale = require('windows-locale');
|
||||
const ms = require('ms');
|
||||
import * as Jimp from 'jimp';
|
||||
import locale from 'windows-locale' with { type: "json" };
|
||||
import ms from 'ms';
|
||||
|
||||
const tenantManager = require('../../Common/sources/tenantManager');
|
||||
const { notificationTypes, ...notificationService } = require('../../Common/sources/notificationService');
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
import * as notificationModule from './../../Common/sources/notificationService.js';
|
||||
const { notificationTypes, ...notificationService } = notificationModule;
|
||||
|
||||
const cfgStartNotifyFrom = ms(config.get('license.warning_license_expiration'));
|
||||
const cfgNotificationRuleLicenseExpirationWarning = config.get('notification.rules.licenseExpirationWarning.template');
|
||||
@ -151,7 +152,9 @@ async function notifyLicenseExpiration(ctx, endDate) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.fixImageExifRotation = fixImageExifRotation;
|
||||
module.exports.convertImageToPng = convertImageToPng;
|
||||
module.exports.localeToLCID = localeToLCID;
|
||||
module.exports.notifyLicenseExpiration = notifyLicenseExpiration;
|
||||
export {
|
||||
fixImageExifRotation,
|
||||
convertImageToPng,
|
||||
localeToLCID,
|
||||
notifyLicenseExpiration,
|
||||
}
|
||||
|
||||
@ -32,35 +32,32 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
const { pipeline } = require('node:stream/promises');
|
||||
const crypto = require('crypto');
|
||||
let util = require('util');
|
||||
const {URL} = require('url');
|
||||
const co = require('co');
|
||||
const jwt = require('jsonwebtoken');
|
||||
const config = require('config');
|
||||
const { createReadStream } = require('fs');
|
||||
const { stat, lstat, readdir } = require('fs/promises');
|
||||
const utf7 = require('utf7');
|
||||
const mimeDB = require('mime-db');
|
||||
const xmlbuilder2 = require('xmlbuilder2');
|
||||
const logger = require('./../../Common/sources/logger');
|
||||
const utils = require('./../../Common/sources/utils');
|
||||
const constants = require('./../../Common/sources/constants');
|
||||
const commonDefines = require('./../../Common/sources/commondefines');
|
||||
const formatChecker = require('./../../Common/sources/formatchecker');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
const tenantManager = require('./../../Common/sources/tenantManager');
|
||||
const sqlBase = require('./databaseConnectors/baseConnector');
|
||||
const taskResult = require('./taskresult');
|
||||
const canvasService = require('./canvasservice');
|
||||
const converterService = require('./converterservice');
|
||||
let mime;
|
||||
import('mime').then(module => {
|
||||
mime = module.default;
|
||||
})
|
||||
const license = require('./../../Common/sources/license');
|
||||
import path from 'path';
|
||||
import { pipeline } from 'node:stream/promises';
|
||||
import crypto from 'crypto';
|
||||
import util from 'util';
|
||||
import {URL} from 'url';
|
||||
import co from 'co';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import config from 'config';
|
||||
import { createReadStream } from 'fs';
|
||||
import { stat, lstat, readdir } from 'fs/promises';
|
||||
import utf7 from 'utf7';
|
||||
import mimeDB from 'mime-db';
|
||||
import xmlbuilder2 from 'xmlbuilder2';
|
||||
import * as logger from './../../Common/sources/logger.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as formatChecker from './../../Common/sources/formatchecker.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
import * as sqlBase from './databaseConnectors/baseConnector.js';
|
||||
import * as taskResult from './taskresult.js';
|
||||
import * as canvasService from './canvasservice.js';
|
||||
import * as converterService from './converterservice.js';
|
||||
import mime from 'mime';
|
||||
import * as license from './../../Common/sources/license.js';
|
||||
|
||||
const cfgTokenOutboxAlgorithm = config.get('services.CoAuthoring.token.outbox.algorithm');
|
||||
const cfgTokenOutboxExpires = config.get('services.CoAuthoring.token.outbox.expires');
|
||||
@ -1159,26 +1156,28 @@ function dummyOk(req, res) {
|
||||
res.sendStatus(200);
|
||||
}
|
||||
|
||||
exports.checkIpFilter = checkIpFilter;
|
||||
exports.discovery = discovery;
|
||||
exports.collaboraCapabilities = collaboraCapabilities;
|
||||
exports.parseWopiCallback = parseWopiCallback;
|
||||
exports.getEditorHtml = getEditorHtml;
|
||||
exports.getConverterHtml = getConverterHtml;
|
||||
exports.putFile = putFile;
|
||||
exports.parsePutFileResponse = parsePutFileResponse;
|
||||
exports.putRelativeFile = putRelativeFile;
|
||||
exports.renameFile = renameFile;
|
||||
exports.refreshFile = refreshFile;
|
||||
exports.lock = lock;
|
||||
exports.unlock = unlock;
|
||||
exports.fillStandardHeaders = fillStandardHeaders;
|
||||
exports.getWopiUnlockMarker = getWopiUnlockMarker;
|
||||
exports.getWopiModifiedMarker = getWopiModifiedMarker;
|
||||
exports.getFileTypeByInfo = getFileTypeByInfo;
|
||||
exports.getWopiFileUrl = getWopiFileUrl;
|
||||
exports.isWopiJwtToken = isWopiJwtToken;
|
||||
exports.setIsShutdown = setIsShutdown;
|
||||
exports.dummyCheckFileInfo = dummyCheckFileInfo;
|
||||
exports.dummyGetFile = dummyGetFile;
|
||||
exports.dummyOk = dummyOk;
|
||||
export {
|
||||
checkIpFilter,
|
||||
discovery,
|
||||
collaboraCapabilities,
|
||||
parseWopiCallback,
|
||||
getEditorHtml,
|
||||
getConverterHtml,
|
||||
putFile,
|
||||
parsePutFileResponse,
|
||||
putRelativeFile,
|
||||
renameFile,
|
||||
refreshFile,
|
||||
lock,
|
||||
unlock,
|
||||
fillStandardHeaders,
|
||||
getWopiUnlockMarker,
|
||||
getWopiModifiedMarker,
|
||||
getFileTypeByInfo,
|
||||
getWopiFileUrl,
|
||||
isWopiJwtToken,
|
||||
setIsShutdown,
|
||||
dummyCheckFileInfo,
|
||||
dummyGetFile,
|
||||
dummyOk,
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
"homepage": "https://www.onlyoffice.com",
|
||||
"private": true,
|
||||
"bin": "sources/convertermaster.js",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@expo/spawn-async": "1.7.2",
|
||||
"bytes": "3.1.2",
|
||||
|
||||
@ -31,32 +31,29 @@
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
var os = require('os');
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var url = require('url');
|
||||
var co = require('co');
|
||||
var config = require('config');
|
||||
var spawnAsync = require('@expo/spawn-async');
|
||||
const bytes = require('bytes');
|
||||
let lcid;
|
||||
import('lcid').then(module => {
|
||||
lcid = module.default;
|
||||
})
|
||||
const ms = require('ms');
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import url from 'url';
|
||||
import co from 'co';
|
||||
import config from 'config';
|
||||
import spawnAsync from '@expo/spawn-async';
|
||||
import bytes from 'bytes';
|
||||
import ms from 'ms';
|
||||
import lcid from 'lcid';
|
||||
|
||||
var commonDefines = require('./../../Common/sources/commondefines');
|
||||
var storage = require('./../../Common/sources/storage/storage-base');
|
||||
var utils = require('./../../Common/sources/utils');
|
||||
var constants = require('./../../Common/sources/constants');
|
||||
var baseConnector = require('../../DocService/sources/databaseConnectors/baseConnector');
|
||||
const wopiClient = require('./../../DocService/sources/wopiClient');
|
||||
const taskResult = require('./../../DocService/sources/taskresult');
|
||||
var statsDClient = require('./../../Common/sources/statsdclient');
|
||||
var queueService = require('./../../Common/sources/taskqueueRabbitMQ');
|
||||
const formatChecker = require('./../../Common/sources/formatchecker');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
const tenantManager = require('./../../Common/sources/tenantManager');
|
||||
import * as commonDefines from './../../Common/sources/commondefines.js';
|
||||
import * as storage from './../../Common/sources/storage/storage-base.js';
|
||||
import * as utils from './../../Common/sources/utils.js';
|
||||
import * as constants from './../../Common/sources/constants.js';
|
||||
import * as baseConnector from '../../DocService/sources/databaseConnectors/baseConnector.js';
|
||||
import * as wopiClient from './../../DocService/sources/wopiClient.js';
|
||||
import * as taskResult from './../../DocService/sources/taskresult.js';
|
||||
import * as statsDClient from './../../Common/sources/statsdclient.js';
|
||||
import queueService from './../../Common/sources/taskqueueRabbitMQ.js';
|
||||
import * as formatChecker from './../../Common/sources/formatchecker.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import * as tenantManager from './../../Common/sources/tenantManager.js';
|
||||
|
||||
const cfgMaxDownloadBytes = config.get('FileConverter.converter.maxDownloadBytes');
|
||||
const cfgDownloadTimeout = config.get('FileConverter.converter.downloadTimeout');
|
||||
@ -1250,4 +1247,15 @@ function run() {
|
||||
}
|
||||
});
|
||||
}
|
||||
exports.run = run;
|
||||
export {
|
||||
TaskQueueDataConvert,
|
||||
getTempDir,
|
||||
changeFormatToExtendedPdf,
|
||||
writeProcessOutputToLog,
|
||||
ackTask,
|
||||
receiveTaskSetTimeout,
|
||||
receiveTask,
|
||||
createErrorResponse,
|
||||
simulateErrorResponse,
|
||||
run
|
||||
};
|
||||
|
||||
@ -32,21 +32,21 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const cluster = require('cluster');
|
||||
const logger = require('./../../Common/sources/logger');
|
||||
const operationContext = require('./../../Common/sources/operationContext');
|
||||
import cluster from 'cluster';
|
||||
import * as logger from './../../Common/sources/logger.js';
|
||||
import * as operationContext from './../../Common/sources/operationContext.js';
|
||||
import fs from 'fs';
|
||||
import co from 'co';
|
||||
import os from 'os';
|
||||
import config from 'config';
|
||||
import * as license from './../../Common/sources/license.js';
|
||||
import * as converter from './converter.js';
|
||||
|
||||
if (cluster.isMaster) {
|
||||
const fs = require('fs');
|
||||
const co = require('co');
|
||||
const os = require('os');
|
||||
const config = require('config');
|
||||
const license = require('./../../Common/sources/license');
|
||||
|
||||
const cfgLicenseFile = config.get('license.license_file');
|
||||
const cfgMaxProcessCount = config.get('FileConverter.converter.maxprocesscount');
|
||||
|
||||
var workersCount = 0;
|
||||
let workersCount = 0;
|
||||
const readLicense = async function () {
|
||||
const numCPUs = os.cpus().length;
|
||||
const availableParallelism = os.availableParallelism?.();
|
||||
@ -57,7 +57,7 @@ if (cluster.isMaster) {
|
||||
//todo send license to workers for multi-tenancy
|
||||
};
|
||||
const updateWorkers = () => {
|
||||
var i;
|
||||
let i;
|
||||
const arrKeyWorkers = Object.keys(cluster.workers);
|
||||
if (arrKeyWorkers.length < workersCount) {
|
||||
for (i = arrKeyWorkers.length; i < workersCount; ++i) {
|
||||
@ -93,7 +93,6 @@ if (cluster.isMaster) {
|
||||
fs.watchFile(cfgLicenseFile, updateLicense);
|
||||
setInterval(updateLicense, 86400000);
|
||||
} else {
|
||||
const converter = require('./converter');
|
||||
converter.run();
|
||||
}
|
||||
|
||||
|
||||
1420
bundle/package-lock.json
generated
Normal file
1420
bundle/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
16
bundle/package.json
Normal file
16
bundle/package.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "your-project",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@azure/app-configuration": "^1.9.0",
|
||||
"@azure/identity": "^4.9.1",
|
||||
"@azure/keyvault-secrets": "^4.9.0",
|
||||
"@azure/storage-blob": "12.27.0",
|
||||
"oci-common": "^2.107.2",
|
||||
"oci-objectstorage": "^2.107.2",
|
||||
"oci-secrets": "^2.107.2",
|
||||
"oracledb": "^6.8.0",
|
||||
"snappy": "^7.2.2",
|
||||
"win-ca": "^3.5.1"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user