Add support for SourceGuardian Loader (#442)
parent
872d4e5302
commit
f9cf2dedc3
|
@ -82,6 +82,7 @@ snuffleupagus 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
||||||
soap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
soap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
||||||
sockets 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
sockets 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
||||||
solr 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
solr 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
||||||
|
sourceguardian 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
|
||||||
spx 5.6 7.0 7.1 7.2 7.3 7.4 8.0
|
spx 5.6 7.0 7.1 7.2 7.3 7.4 8.0
|
||||||
sqlsrv 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
sqlsrv 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
||||||
ssh2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
ssh2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1
|
||||||
|
|
|
@ -70,11 +70,16 @@ setDistro() {
|
||||||
|
|
||||||
# Set:
|
# Set:
|
||||||
# - PHP_MAJMIN_VERSION: Major-Minor version, format MMmm (example 800 for PHP 8.0.1)
|
# - PHP_MAJMIN_VERSION: Major-Minor version, format MMmm (example 800 for PHP 8.0.1)
|
||||||
|
# - PHP_MAJDOTMIN_VERSION: Major-Minor version, format M.m (example 8.0 for PHP 8.0.1)
|
||||||
# - PHP_MAJMINPAT_VERSION: Major-Minor-Patch version, format MMmmpp (example 80001 for PHP 8.0.1) variables containing integers value
|
# - PHP_MAJMINPAT_VERSION: Major-Minor-Patch version, format MMmmpp (example 80001 for PHP 8.0.1) variables containing integers value
|
||||||
|
# - PHP_MAJDOTMINDOTPAT_VERSION: Major-Minor-Patch version, format M.m.p (example 8.0.1 for PHP 8.0.1)
|
||||||
|
# - PHP_THREADSAFE: 1 if PHP is thread-safe (TS), 0 if not thread-safe (NTS)
|
||||||
setPHPVersionVariables() {
|
setPHPVersionVariables() {
|
||||||
setPHPVersionVariables_textual="$(php-config --version)"
|
PHP_MAJDOTMINDOTPAT_VERSION="$(php-config --version)"
|
||||||
PHP_MAJMIN_VERSION=$(printf '%s' "$setPHPVersionVariables_textual" | awk -F. '{print $1*100+$2}')
|
PHP_MAJMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*100+$2}')
|
||||||
PHP_MAJMINPAT_VERSION=$(printf '%s' "$setPHPVersionVariables_textual" | awk -F. '{print $1*10000+$2*100+$3}')
|
PHP_MAJDOTMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | cut -d. -f1-2)
|
||||||
|
PHP_MAJMINPAT_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*10000+$2*100+$3}')
|
||||||
|
PHP_THREADSAFE=$(php -r 'echo ZEND_THREAD_SAFE ? 1 : 0;')
|
||||||
}
|
}
|
||||||
|
|
||||||
# Fix apt-get being very slow on Debian Jessie
|
# Fix apt-get being very slow on Debian Jessie
|
||||||
|
@ -1452,6 +1457,38 @@ actuallyInstallComposer() {
|
||||||
rm -- "$actuallyInstallComposer_installer"
|
rm -- "$actuallyInstallComposer_installer"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Install SourceGuardian Loader
|
||||||
|
installSourceGuardian() {
|
||||||
|
case $(uname -m) in
|
||||||
|
i386 | i686 | x86)
|
||||||
|
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-i386.tar.gz
|
||||||
|
;;
|
||||||
|
aarch64 | arm64 | armv8)
|
||||||
|
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-aarch64.tar.gz
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
printf 'Downloading SourceGuardian... '
|
||||||
|
installSourceGuardian_dir="$(getPackageSource $installSourceGuardian_url)"
|
||||||
|
printf 'done (version: %s)\n' "$(cat "$installSourceGuardian_dir/version")"
|
||||||
|
for installSourceGuardian_phpv in $PHP_MAJDOTMINDOTPAT_VERSION $PHP_MAJDOTMIN_VERSION; do
|
||||||
|
installSourceGuardian_file="$installSourceGuardian_dir/ixed.$PHP_MAJDOTMIN_VERSION"
|
||||||
|
if test $PHP_THREADSAFE -eq 1; then
|
||||||
|
installSourceGuardian_file="${installSourceGuardian_file}ts"
|
||||||
|
fi
|
||||||
|
installSourceGuardian_file="${installSourceGuardian_file}.lin"
|
||||||
|
if test -f "$installSourceGuardian_file"; then
|
||||||
|
mv "$installSourceGuardian_file" "$(getPHPExtensionsDir)/sourceguardian.so"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf 'Unable to find a SourceGuardian compatible with PHP %s or PHP %s.\nAvailable SourceGuardian versions:\n' "$PHP_MAJDOTMINDOTPAT_VERSION" "$PHP_MAJDOTMIN_VERSION" >&2
|
||||||
|
ls -1 "$installSourceGuardian_dir" | grep -E '^ixed\..*\.lin$' | sed -E 's/^[^0-9]+([0-9]+(\.[0-9]+)*).*$/\1/' | sort | uniq >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# Install a bundled PHP module given its handle
|
# Install a bundled PHP module given its handle
|
||||||
#
|
#
|
||||||
# Arguments:
|
# Arguments:
|
||||||
|
@ -2185,6 +2222,10 @@ installRemoteModule() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
sourceguardian)
|
||||||
|
installSourceGuardian
|
||||||
|
installRemoteModule_manuallyInstalled=1
|
||||||
|
;;
|
||||||
spx)
|
spx)
|
||||||
if test -z "$installRemoteModule_version"; then
|
if test -z "$installRemoteModule_version"; then
|
||||||
installRemoteModule_version=1367cbc70194d18888ec9cfe9b06c0a5b4426dff
|
installRemoteModule_version=1367cbc70194d18888ec9cfe9b06c0a5b4426dff
|
||||||
|
@ -2581,7 +2622,7 @@ installRemoteModule() {
|
||||||
# event must be loaded after sockets
|
# event must be loaded after sockets
|
||||||
docker-php-ext-enable --ini-name "xx-php-ext-$installRemoteModule_module.ini" "$installRemoteModule_module"
|
docker-php-ext-enable --ini-name "xx-php-ext-$installRemoteModule_module.ini" "$installRemoteModule_module"
|
||||||
;;
|
;;
|
||||||
ioncube_loader)
|
ioncube_loader | sourceguardian)
|
||||||
# On PHP 5.5, docker-php-ext-enable fails to detect that ionCube Loader is a Zend Extension
|
# On PHP 5.5, docker-php-ext-enable fails to detect that ionCube Loader is a Zend Extension
|
||||||
if test $PHP_MAJMIN_VERSION -le 505; then
|
if test $PHP_MAJMIN_VERSION -le 505; then
|
||||||
printf 'zend_extension=%s/%s.so\n' "$(getPHPExtensionsDir)" "$installRemoteModule_module" >"$PHP_INI_DIR/conf.d/docker-php-ext-$installRemoteModule_module.ini"
|
printf 'zend_extension=%s/%s.so\n' "$(getPHPExtensionsDir)" "$installRemoteModule_module" >"$PHP_INI_DIR/conf.d/docker-php-ext-$installRemoteModule_module.ini"
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
set_error_handler(
|
||||||
|
static function ($errno, $errstr, $errfile, $errline) {
|
||||||
|
$msg = "Error {$errno}: {$errstr}\n";
|
||||||
|
if ($errfile) {
|
||||||
|
$msg .= "File: {$errfile}\n";
|
||||||
|
if ($errline) {
|
||||||
|
$msg .= "Line: {$errline}\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fwrite(STDERR, $msg);
|
||||||
|
exit(1);
|
||||||
|
},
|
||||||
|
-1
|
||||||
|
);
|
||||||
|
|
||||||
|
$rc = 0;
|
||||||
|
foreach ([false => 'PHP module', true => 'Zend extension'] as $type => $typeName) {
|
||||||
|
$extensions = get_loaded_extensions($type);
|
||||||
|
$extensionsLowerCase = array_map('strtolower', $extensions);
|
||||||
|
if (in_array('sourceguardian', $extensionsLowerCase, true)) {
|
||||||
|
fwrite(STDOUT, "The SourceGuardian {$typeName} is loaded.\n");
|
||||||
|
} else {
|
||||||
|
fwrite(STDERR, "The SourceGuardian {$typeName} is not loaded.\nLoaded extensions are: \n- " . implode("\n- ", $extensions));
|
||||||
|
$rc = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit($rc);
|
Loading…
Reference in New Issue