From e583338a0cb96c477429a27dc1028cf064dd9fe8 Mon Sep 17 00:00:00 2001 From: Denis Protassoff Date: Thu, 19 Dec 2024 21:56:49 +0300 Subject: [PATCH] Add SourceGuardian extension --- .../extensions/sourceguardian.js | 55 +++++++++++++++++++ .../magento-scripts-php-extensions/index.js | 4 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 build-packages/magento-scripts-php-extensions/extensions/sourceguardian.js diff --git a/build-packages/magento-scripts-php-extensions/extensions/sourceguardian.js b/build-packages/magento-scripts-php-extensions/extensions/sourceguardian.js new file mode 100644 index 00000000..a088faa7 --- /dev/null +++ b/build-packages/magento-scripts-php-extensions/extensions/sourceguardian.js @@ -0,0 +1,55 @@ +const path = require('path') + +const archivesByArch = { + x64: 'https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz', + arm64: 'https://www.sourceguardian.com/loaders/download/loaders.macosx-arm64.tar.gz' +} + +/** + * @param {import('@scandipwa/magento-scripts/typings/context').ListrContext['arch']} arch + * @returns link to archive by arch + */ +const getDownloadLink = (arch) => { + switch (arch) { + case 'x64': + case 'arm64': { + return archivesByArch[arch] + } + default: { + throw new Error(`Architecture ${process.arch} is not supported`) + } + } +} + +/** @type {import('@scandipwa/magento-scripts').PHPExtensionInstallationInstruction['command']} */ +const sourceguardianExtensionCommand = async ({ ctx }) => { + const phpExtensionsDirectory = '/usr/sourceguardian' + const phpVersionMatch = ctx.phpVersion.match(/^(\d)\.(\d)/i) + + if (phpVersionMatch) { + const phpMajorVersion = phpVersionMatch[1] + const phpMinorVersion = phpVersionMatch[2] + const fileName = `ixed.${phpMajorVersion}.${phpMinorVersion}.lin`; + const extensionPath = path.join( + phpExtensionsDirectory, + fileName + ); + + return `mkdir /usr/sourceguardian; \ +curl ${getDownloadLink(ctx.arch)} --output sourceguardian-loaders.tar.gz; \ +tar -zxf ./sourceguardian-loaders.tar.gz --directory /usr/sourceguardian/ ${fileName}; \ +echo 'extension=${extensionPath}' | tee /usr/local/etc/php/conf.d/00-sourceguardian.ini` + } + + throw new Error('cannot parse php version from context!') +} + +/** @type {import('@scandipwa/magento-scripts').PHPExtensionInstallationInstruction} */ +const sourceguardianExtension = { + name: 'sourceguardian', + alternativeName: ['SourceGuardian'], + command: sourceguardianExtensionCommand, + dependencies: ['eudev-dev'] // libudev.so +} + +module.exports = sourceguardianExtension diff --git a/build-packages/magento-scripts-php-extensions/index.js b/build-packages/magento-scripts-php-extensions/index.js index 69a7bf8b..9e9dfb61 100644 --- a/build-packages/magento-scripts-php-extensions/index.js +++ b/build-packages/magento-scripts-php-extensions/index.js @@ -4,11 +4,13 @@ const sqlsrv = require('./extensions/sqlsrv') const ioncube = require('./extensions/ioncube') const memcached = require('./extensions/memcached') const imagick = require('./extensions/imagick') +const sourceguardian = require('./extensions/sourceguardian') module.exports = { sqlsrv, pdo_sqlsrv, ioncube, memcached, - imagick + imagick, + sourceguardian }