From 86721ea9db4603439241a7d686507da4dd878be9 Mon Sep 17 00:00:00 2001 From: Alexander Hofbauer Date: Fri, 17 Apr 2020 23:03:53 +0200 Subject: [PATCH] Update for 5.5.1.76 --- Dockerfile | 38 ++++++++++------- README.md | 3 +- license.patch | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++ license.py | 87 --------------------------------------- run-oo.sh | 10 ----- 5 files changed, 134 insertions(+), 114 deletions(-) create mode 100644 license.patch delete mode 100644 license.py delete mode 100644 run-oo.sh diff --git a/Dockerfile b/Dockerfile index 880b047..07c72a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ -ARG oo_version=5.5.0.165 +ARG oo_version=5.5.1.76 FROM onlyoffice/documentserver:$oo_version +ARG oo_version=5.5.1.76 RUN sed -is \ @@ -15,23 +16,30 @@ RUN sed -is \ /var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/mobile/app.js +# source patching and compilation RUN apt-get update && apt-get install -y \ - python3-pip \ - && rm -rf /var/lib/apt/lists/* \ - && pip3 install pycryptodome - - -COPY license.py /tmp/ -RUN python3 /tmp/license.py - -RUN pip3 uninstall -y pycryptodome \ - && apt-get purge -y python3-pip \ - && apt-get purge -y --autoremove \ + git \ + curl \ + && curl -sL https://deb.nodesource.com/setup_10.x | bash - \ + && apt install -y nodejs \ && rm -rf /var/lib/apt/lists/* -COPY run-oo.sh /usr/local/bin/run-oo.sh -RUN chmod a+x /usr/local/bin/run-oo.sh +RUN mkdir /build +WORKDIR /build + +RUN git clone --branch v$oo_version --depth 1 https://github.com/ONLYOFFICE/server.git . + +COPY license.patch /build/ +RUN patch -p1 < license.patch -ENTRYPOINT [ "/usr/local/bin/run-oo.sh" ] +RUN npm install pkg grunt-cli \ + && make \ + && node_modules/.bin/pkg --targets=linux build/server/FileConverter \ + && node_modules/.bin/pkg --targets=linux build/server/DocService \ + && cp fileconverter /var/www/onlyoffice/documentserver/server/FileConverter/converter \ + && cp coauthoring /var/www/onlyoffice/documentserver/server/DocService/docservice + +WORKDIR / +RUN rm -rf /build diff --git a/README.md b/README.md index ffd3533..50f0ef3 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ docker build \ docker run \ --name=onlyoffice \ --detach \ - --volume=$(pwd)/ooData:/var/www/onlyoffice/Data onlyoffice-patched \ onlyoffice-patched ``` @@ -32,5 +31,5 @@ advertising itself and their product as open source . ## Thanks -This repo is heavily inspired by the works of +This repo was heavily inspired by the works of [Zegorax/OnlyOffice-Unlimited](https://github.com/Zegorax/OnlyOffice-Unlimited). diff --git a/license.patch b/license.patch new file mode 100644 index 0000000..1672fbe --- /dev/null +++ b/license.patch @@ -0,0 +1,110 @@ +diff --git a/Common/sources/commondefines.js b/Common/sources/commondefines.js +index 4518ac8..34ab4e2 100644 +--- a/Common/sources/commondefines.js ++++ b/Common/sources/commondefines.js +@@ -970,8 +970,8 @@ const c_oAscQueueType = { + activemq: 'activemq' + }; + +-const buildVersion = '4.1.2'; +-const buildNumber = 37; ++const buildVersion = '5.5.1'; ++const buildNumber = 76; + + exports.TaskQueueData = TaskQueueData; + exports.CMailMergeSendData = CMailMergeSendData; +diff --git a/Common/sources/license.js b/Common/sources/license.js +index 290d85d..c136956 100644 +--- a/Common/sources/license.js ++++ b/Common/sources/license.js +@@ -32,53 +32,26 @@ + + 'use strict'; + +-const config = require('config'); +-const configL = config.get('license'); + const constants = require('./constants'); +-const logger = require('./logger'); +-const editorDataStorage = require('./../../DocService/sources/' + config.get('services.CoAuthoring.server.editorDataStorage')); +- + const buildDate = '6/29/2016'; + const oBuildDate = new Date(buildDate); +-const oPackageType = configL.get('packageType'); +- +-const cfgRedisPrefix = config.get('services.CoAuthoring.redis.prefix'); +-const redisKeyLicense = cfgRedisPrefix + constants.REDIS_KEY_LICENSE; +- +-let editorData = new editorDataStorage(); + + exports.readLicense = function*() { +- const c_LR = constants.LICENSE_RESULT; +- const res = { ++ return { + count: 1, +- type: c_LR.Error, ++ type: constants.LICENSE_RESULT.Success, + light: false, +- packageType: oPackageType, ++ packageType: constants.PACKAGE_TYPE_I, + mode: constants.LICENSE_MODE.None, + branding: false, +- connections: constants.LICENSE_CONNECTIONS, ++ connections: 9999, + customization: false, +- usersCount: 0, +- usersExpire: constants.LICENSE_EXPIRE_USERS_ONE_DAY, +- hasLicense: false, ++ usersCount: 9999, ++ usersExpire: 99999, ++ hasLicense: true, + plugins: false, + buildDate: oBuildDate, +- endDate: null ++ endDate: "2099-01-01T23:59:59.000Z" + }; +- +- if (yield* _getFileState()) { +- res.type = c_LR.ExpiredTrial; +- } +- +- if (res.type === c_LR.Expired || res.type === c_LR.ExpiredTrial) { +- res.count = 1; +- logger.error('License: License Expired!!!'); +- } +- +- return res; + }; +-exports.packageType = oPackageType; +- +-function* _getFileState() { +- return yield editorData.getLicense(redisKeyLicense); +-} ++exports.packageType = constants.PACKAGE_TYPE_I; +diff --git a/Makefile b/Makefile +index 40bf93e..7109dbd 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,4 +1,4 @@ +-GRUNT = grunt ++GRUNT = ./node_modules/.bin/grunt + GRUNT_FLAGS = --no-color -v + + GRUNT_FILES = Gruntfile.js.out +@@ -46,7 +46,7 @@ endif + + TARGET := $(PLATFORM)_$(ARCHITECTURE) + +-OUTPUT = ../build_tools/out/$(TARGET)/onlyoffice/documentserver/server ++OUTPUT = build/out/$(TARGET)/onlyoffice/documentserver/server + + SPELLCHECKER_DICTIONARIES := $(OUTPUT)/SpellChecker/dictionaries + SPELLCHECKER_DICTIONARY_FILES += ../dictionaries/*_* +@@ -83,7 +83,7 @@ DEBUG = $(BRANDING_DIR)/debug.js + .PHONY: all clean install uninstall build-date + + .NOTPARALLEL: +-all: $(SPELLCHECKER_DICTIONARIES) $(TOOLS) $(SCHEMA) $(CORE_FONTS) $(LICENSE) $(WELCOME) $(INFO) build-date ++all: build-date + + build-date: $(GRUNT_FILES) + sed "s|\(const buildVersion = \).*|\1'${PRODUCT_VERSION}';|" -i $(COMMON_DEFINES_JS) diff --git a/license.py b/license.py deleted file mode 100644 index 18dc0d3..0000000 --- a/license.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python3 - -from Crypto.Hash import SHA, SHA256 -from Crypto.Signature import PKCS1_v1_5 -from Crypto.PublicKey import RSA -from shutil import copyfile -import json -import codecs - - - -def gen_keys(): - privKey = RSA.generate(1024) - publKey = privKey.publickey().exportKey('PEM') - - f = open("/var/www/onlyoffice/license_key.pub", "w+") - f.write(publKey.decode('utf-8')) - f.close() - - return publKey, privKey - - - -def write_license(publKey, privKey): - license = { - "branding": False, - "connections": 9999, - "customization": False, - "end_date": "2099-01-01T23:59:59.000Z", - "light": "False", - "mode": "", - "portal_count": "0", - "process": 2, - "ssbranding": False, - "test": "False", - "trial": "False", - "user_quota": "0", - "users_count": 9999, - "users_expire": 99999, - "whiteLabel": False, - "customer_id": "customerID", - "start_date": "2020-01-01T00:00:00.000Z", - "users": [], - "version": 2 - } - - jsonData = codecs.encode(json.dumps(license, separators=(',', ':')), encoding='utf-8') - - digest = SHA.new(jsonData) - signer = PKCS1_v1_5.new(privKey) - signature = signer.sign(digest) - finalSignature = signature.hex() - - license['signature'] = finalSignature - - f = open("/var/www/onlyoffice/license.lic", "w+") - f.write(json.dumps(license)) - f.close - - - -def patch_files(): - basePath = "/var/www/onlyoffice/documentserver/server/" - files = ["DocService/docservice", "FileConverter/converter"] - - for file in files: - f = open(basePath + file, 'rb') - data = f.read() - f.close() - - replacedData = data.replace(b"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRhGF7X4A0ZVlEg594WmODVVUI\niiPQs04aLmvfg8SborHss5gQXu0aIdUT6nb5rTh5hD2yfpF2WIW6M8z0WxRhwicg\nXwi80H1aLPf6lEPPLvN29EhQNjBpkFkAJUbS8uuhJEeKw0cE49g80eBBF4BCqSL6\nPFQbP9/rByxdxEoAIQIDAQAB\n-----END PUBLIC KEY-----", bytes(publKey)) - - f = open(basePath + file, 'wb') - f.write(replacedData) - f.close() - - - - -print("Generating and exporting key pair...") -publKey, privKey = gen_keys() - -print("Writing license file...") -write_license(publKey, privKey) - -print("Patching document server and converter...") -patch_files() diff --git a/run-oo.sh b/run-oo.sh deleted file mode 100644 index ed5ad6b..0000000 --- a/run-oo.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -set -e - - -echo "Providing license" -cp -f /var/www/onlyoffice/license.lic /var/www/onlyoffice/Data/license.lic - -echo "Starting server" -/app/ds/run-document-server.sh -