mirror of
https://github.com/joglomedia/LEMPer.git
synced 2026-04-04 19:58:18 +00:00
472 lines
16 KiB
Bash
Executable File
472 lines
16 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# PHP Loader Installer
|
|
# Min. Requirement : GNU/Linux Ubuntu 16.04 & 16.04
|
|
# Last Build : 03/04/2021
|
|
# Author : MasEDI.Net (me@masedi.net)
|
|
# Since Version : 1.3.0
|
|
|
|
# Include helper functions.
|
|
if [ "$(type -t run)" != "function" ]; then
|
|
BASEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
|
|
# shellcheck disable=SC1091
|
|
. "${BASEDIR}/helper.sh"
|
|
fi
|
|
|
|
# Make sure only root can run this installer script.
|
|
requires_root
|
|
|
|
##
|
|
# Install ionCube Loader.
|
|
#
|
|
function install_ioncube() {
|
|
echo "Installing ionCube PHP loader..."
|
|
|
|
# Delete old loaders file.
|
|
if [ -d /usr/lib/php/loaders/ioncube ]; then
|
|
echo "Removing old/existing ionCube PHP loader..."
|
|
run rm -fr /usr/lib/php/loaders/ioncube
|
|
fi
|
|
|
|
local CURRENT_DIR && CURRENT_DIR=$(pwd)
|
|
run cd "${BUILD_DIR}" || return 1
|
|
|
|
echo "Download latest ionCube PHP loader..."
|
|
|
|
ARCH=${ARCH:-$(uname -p)}
|
|
if [[ "${ARCH}" == "x86_64" ]]; then
|
|
run wget -q "https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"
|
|
run tar -xzf ioncube_loaders_lin_x86-64.tar.gz
|
|
run rm -f ioncube_loaders_lin_x86-64.tar.gz
|
|
else
|
|
run wget -q "https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz"
|
|
run tar -xzf ioncube_loaders_lin_x86.tar.gz
|
|
run rm -f ioncube_loaders_lin_x86.tar.gz
|
|
fi
|
|
|
|
run mv -f ioncube /usr/lib/php/loaders/
|
|
run cd "${CURRENT_DIR}" || return 1
|
|
}
|
|
|
|
##
|
|
# Enable ionCube Loader.
|
|
#
|
|
function enable_ioncube() {
|
|
# PHP version.
|
|
local PHPv="${1}"
|
|
if [ -z "${PHPv}" ]; then
|
|
PHPv=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
echo "Enable ionCube PHP ${PHPv} loader"
|
|
|
|
if "${DRYRUN}"; then
|
|
info "ionCube PHP ${PHPv} enabled in dryrun mode."
|
|
else
|
|
if [[ -f "/usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so" && -n $(command -v "php${PHPv}") ]]; then
|
|
cat > "/etc/php/${PHPv}/mods-available/ioncube.ini" <<EOL
|
|
[ioncube]
|
|
zend_extension=/usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so
|
|
EOL
|
|
|
|
if [ ! -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" ]; then
|
|
run ln -s "/etc/php/${PHPv}/mods-available/ioncube.ini" \
|
|
"/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
|
|
fi
|
|
if [ ! -f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]; then
|
|
run ln -s "/etc/php/${PHPv}/mods-available/ioncube.ini" \
|
|
"/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
|
|
fi
|
|
|
|
# Restart PHP-fpm server.
|
|
if "${DRYRUN}"; then
|
|
info "php${PHPv}-fpm reloaded in dry run mode."
|
|
else
|
|
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
|
|
run systemctl reload "php${PHPv}-fpm"
|
|
success "php${PHPv}-fpm reloaded successfully."
|
|
elif [[ -n $(command -v "php${PHPv}") ]]; then
|
|
run systemctl start "php${PHPv}-fpm"
|
|
|
|
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
|
|
success "php${PHPv}-fpm started successfully."
|
|
else
|
|
error "Something goes wrong with PHP ${PHPv} & FPM installation."
|
|
fi
|
|
fi
|
|
fi
|
|
else
|
|
error "PHP ${PHPv} or ionCube loader not found."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
##
|
|
# Disable ionCube Loader.
|
|
#
|
|
function disable_ioncube() {
|
|
# PHP version.
|
|
local PHPv="${1}"
|
|
if [ -z "${PHPv}" ]; then
|
|
PHPv=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
echo "Disabling ionCube PHP ${PHPv} loader"
|
|
|
|
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
|
|
run unlink "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
|
|
}
|
|
|
|
##
|
|
# Remove ionCube Loader.
|
|
#
|
|
function remove_ioncube() {
|
|
# PHP version.
|
|
local PHPv="${1}"
|
|
if [ -z "${PHPv}" ]; then
|
|
PHPv=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
echo "Uninstalling ionCube PHP ${PHPv} loader..."
|
|
|
|
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" || \
|
|
-f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]]; then
|
|
disable_ioncube "${PHPv}"
|
|
fi
|
|
|
|
if [ -d /usr/lib/php/loaders/ioncube ]; then
|
|
run rm -fr /usr/lib/php/loaders/ioncube
|
|
success "ionCube PHP ${PHPv} loader has been removed."
|
|
else
|
|
info "ionCube PHP ${PHPv} loader couldn't be found."
|
|
fi
|
|
}
|
|
|
|
##
|
|
# Install SourceGuardian Loader.
|
|
#
|
|
function install_sourceguardian() {
|
|
echo "Installing SourceGuardian PHP loader..."
|
|
|
|
# Delete old loaders file.
|
|
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
|
|
echo "Remove old/existing loader..."
|
|
run rm -fr /usr/lib/php/loaders/sourceguardian
|
|
fi
|
|
|
|
if [ ! -d "${BUILD_DIR}/sourceguardian" ]; then
|
|
run mkdir -p "${BUILD_DIR}/sourceguardian"
|
|
fi
|
|
|
|
local CURRENT_DIR && CURRENT_DIR=$(pwd)
|
|
run cd "${BUILD_DIR}/sourceguardian" || return 1
|
|
|
|
echo "Download latest SourceGuardian PHP loader..."
|
|
|
|
ARCH=${ARCH:-$(uname -p)}
|
|
if [[ "${ARCH}" == "x86_64" ]]; then
|
|
run wget -q "https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz"
|
|
run tar -xzf loaders.linux-x86_64.tar.gz
|
|
run rm -f loaders.linux-x86_64.tar.gz
|
|
else
|
|
run wget -q "https://www.sourceguardian.com/loaders/download/loaders.linux-x86.tar.gz"
|
|
run tar -xzf loaders.linux-x86.tar.gz
|
|
run rm -f loaders.linux-x86.tar.gz
|
|
fi
|
|
|
|
run cd "${CURRENT_DIR}" || return 1
|
|
run mv -f "${BUILD_DIR}/sourceguardian" /usr/lib/php/loaders/
|
|
}
|
|
|
|
##
|
|
# Enable SourceGuardian Loader.
|
|
#
|
|
function enable_sourceguardian() {
|
|
# PHP version.
|
|
local PHPv="${1}"
|
|
if [ -z "${PHPv}" ]; then
|
|
PHPv=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
echo "Enable SourceGuardian PHP ${PHPv} loader..."
|
|
|
|
if "${DRYRUN}"; then
|
|
info "SourceGuardian PHP ${PHPv} enabled in dryrun mode."
|
|
else
|
|
if [[ -f "/usr/lib/php/loaders/sourceguardian/ixed.${PHPv}.lin" && -n $(command -v "php${PHPv}") ]]; then
|
|
cat > "/etc/php/${PHPv}/mods-available/sourceguardian.ini" <<EOL
|
|
[sourceguardian]
|
|
zend_extension=/usr/lib/php/loaders/sourceguardian/ixed.${PHPv}.lin
|
|
EOL
|
|
|
|
if [ ! -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" ]; then
|
|
run ln -s "/etc/php/${PHPv}/mods-available/sourceguardian.ini" \
|
|
"/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
|
|
fi
|
|
|
|
if [ ! -f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]; then
|
|
run ln -s "/etc/php/${PHPv}/mods-available/sourceguardian.ini" \
|
|
"/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
|
|
fi
|
|
|
|
# Restart PHP-fpm server.
|
|
if "${DRYRUN}"; then
|
|
info "php${PHPv}-fpm reloaded in dry run mode."
|
|
else
|
|
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
|
|
run systemctl reload "php${PHPv}-fpm"
|
|
success "php${PHPv}-fpm reloaded successfully."
|
|
elif [[ -n $(command -v "php${PHPv}") ]]; then
|
|
run systemctl start "php${PHPv}-fpm"
|
|
|
|
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
|
|
success "php${PHPv}-fpm started successfully."
|
|
else
|
|
error "Something goes wrong with PHP ${PHPv} & FPM installation."
|
|
fi
|
|
fi
|
|
fi
|
|
else
|
|
error "PHP ${PHPv} or SourceGuardian loader not found."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
##
|
|
# Disable SourceGuardian Loader.
|
|
#
|
|
function disable_sourceguardian() {
|
|
# PHP version.
|
|
local PHPv="${1}"
|
|
if [ -z "${PHPv}" ]; then
|
|
PHPv=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
echo "Disabling SourceGuardian PHP ${PHPv} loader"
|
|
|
|
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
|
|
run unlink "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
|
|
}
|
|
|
|
##
|
|
# Remove SourceGuardian Loader.
|
|
#
|
|
function remove_sourceguardian() {
|
|
# PHP version.
|
|
local PHPv="${1}"
|
|
if [ -z "${PHPv}" ]; then
|
|
PHPv=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
echo "Uninstalling SourceGuardian PHP ${PHPv} loader..."
|
|
|
|
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" || \
|
|
-f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]]; then
|
|
disable_sourceguardian "${PHPv}"
|
|
fi
|
|
|
|
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
|
|
run rm -fr /usr/lib/php/loaders/sourceguardian
|
|
success "SourceGuardian PHP ${PHPv} loader has been removed."
|
|
else
|
|
info "SourceGuardian PHP ${PHPv} loader couldn't be found."
|
|
fi
|
|
}
|
|
|
|
|
|
##
|
|
# Initialize PHP Loader Installation.
|
|
#
|
|
function init_phploader_install() {
|
|
local SELECTED_PHP_LOADER=""
|
|
|
|
OPTS=$(getopt -o p:l:ir \
|
|
-l php-version:,php-loader:,install,remove \
|
|
-n "init_phploader_install" -- "$@")
|
|
|
|
eval set -- "${OPTS}"
|
|
|
|
while true
|
|
do
|
|
case "${1}" in
|
|
-p|--php-version) shift
|
|
OPT_PHP_VERSION="${1}"
|
|
shift
|
|
;;
|
|
-l|--php-loader) shift
|
|
OPT_PHP_LOADER="${1}"
|
|
shift
|
|
;;
|
|
-i|--install) shift
|
|
#ACTION="install"
|
|
;;
|
|
-r|--remove) shift
|
|
#ACTION="remove"
|
|
;;
|
|
--) shift
|
|
break
|
|
;;
|
|
*)
|
|
fail "Invalid argument: ${1}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -n "${OPT_PHP_VERSION}" ]; then
|
|
PHP_VERSION=${OPT_PHP_VERSION}
|
|
else
|
|
PHP_VERSION=${PHP_VERSION:-"7.4"}
|
|
fi
|
|
|
|
if [ -n "${OPT_PHP_LOADER}" ]; then
|
|
PHP_LOADER=${OPT_PHP_LOADER}
|
|
else
|
|
PHP_LOADER=${PHP_LOADER:-""}
|
|
fi
|
|
|
|
# Install PHP loader.
|
|
if [[ "${PHPv}" != "unsupported" && ! $(version_older_than "${PHPv}" "5.6") ]]; then
|
|
if "${AUTO_INSTALL}"; then
|
|
# PHP Loader.
|
|
if [ -z "${SELECTED_PHP_LOADER}" ]; then
|
|
SELECTED_PHP_LOADER=${PHP_LOADER:-""}
|
|
fi
|
|
|
|
if [[ -z "${SELECTED_PHP_LOADER}" || "${SELECTED_PHP_LOADER}" == "none" ]]; then
|
|
DO_INSTALL_PHP_LOADER="n"
|
|
else
|
|
DO_INSTALL_PHP_LOADER="y"
|
|
fi
|
|
else
|
|
while [[ "${DO_INSTALL_PHP_LOADER}" != "y" && "${DO_INSTALL_PHP_LOADER}" != "n" ]]; do
|
|
read -rp "Do you want to install PHP Loader? [y/n]: " -i n -e DO_INSTALL_PHP_LOADER
|
|
done
|
|
fi
|
|
|
|
if [[ ${DO_INSTALL_PHP_LOADER} == y* && ${INSTALL_PHP_LOADER} == true ]]; then
|
|
if ! "${AUTO_INSTALL}"; then
|
|
echo ""
|
|
echo "Available PHP Loaders:"
|
|
echo " 1). ionCube Loader (latest stable)"
|
|
echo " 2). SourceGuardian (latest stable)"
|
|
echo " 3). All loaders (ionCube, SourceGuardian)"
|
|
echo "--------------------------------------------"
|
|
|
|
while [[ ${SELECTED_PHP_LOADER} != "1" && ${SELECTED_PHP_LOADER} != "2" && \
|
|
${SELECTED_PHP_LOADER} != "3" && ${SELECTED_PHP_LOADER} != "ioncube" && \
|
|
${SELECTED_PHP_LOADER} != "sg" && ${SELECTED_PHP_LOADER} != "ic" && \
|
|
${SELECTED_PHP_LOADER} != "sourceguardian" && ${SELECTED_PHP_LOADER} != "all" ]]; do
|
|
read -rp "Select an option [1-3]: " -i "${PHP_LOADER}" -e SELECTED_PHP_LOADER
|
|
done
|
|
fi
|
|
|
|
# Create loaders directory
|
|
if [ ! -d /usr/lib/php/loaders ]; then
|
|
run mkdir -p /usr/lib/php/loaders
|
|
fi
|
|
|
|
case ${SELECTED_PHP_LOADER} in
|
|
1|"ic"|"ioncube")
|
|
install_ioncube
|
|
|
|
if [ "${PHPv}" != "all" ]; then
|
|
enable_ioncube "${PHPv}"
|
|
|
|
# Required for LEMPer default PHP.
|
|
if [[ "${PHPv}" != "7.4" && -n $(command -v php7.4) ]]; then
|
|
enable_ioncube "7.4"
|
|
fi
|
|
else
|
|
# Install all PHP version (except EOL & Beta).
|
|
#enable_ioncube "5.6"
|
|
#enable_ioncube "7.0"
|
|
#enable_ioncube "7.1"
|
|
#enable_ioncube "7.2"
|
|
#enable_ioncube "7.3"
|
|
#enable_ioncube "7.4"
|
|
|
|
for PHPver in 5.6 7.0 7.1 7.2 7.3 7.4 8.0; do
|
|
enable_ioncube "${PHPver}"
|
|
done
|
|
fi
|
|
;;
|
|
2|"sg"|"sourceguardian")
|
|
install_sourceguardian
|
|
|
|
if [ "${PHPv}" != "all" ]; then
|
|
enable_sourceguardian "${PHPv}"
|
|
|
|
# Required for LEMPer default PHP.
|
|
if [[ "${PHPv}" != "7.4" && -n $(command -v php7.4) ]]; then
|
|
enable_sourceguardian "7.4"
|
|
fi
|
|
else
|
|
# Install all PHP version (except EOL & Beta).
|
|
#enable_sourceguardian "5.6"
|
|
#enable_sourceguardian "7.0"
|
|
#enable_sourceguardian "7.1"
|
|
#enable_sourceguardian "7.2"
|
|
#enable_sourceguardian "7.3"
|
|
#enable_sourceguardian "7.4"
|
|
|
|
Versions="5.6 7.0 7.1 7.2 7.3 7.4 8.0"
|
|
for PHPver in ${Versions}; do
|
|
enable_sourceguardian "${PHPver}"
|
|
done
|
|
fi
|
|
;;
|
|
"all")
|
|
install_ioncube
|
|
install_sourceguardian
|
|
|
|
if [ "${PHPv}" != "all" ]; then
|
|
enable_ioncube "${PHPv}"
|
|
enable_sourceguardian "${PHPv}"
|
|
|
|
# Required for LEMPer default PHP
|
|
if [[ "${PHPv}" != "7.4" && -n $(command -v php7.4) ]]; then
|
|
enable_ioncube "7.4"
|
|
enable_sourceguardian "7.4"
|
|
fi
|
|
else
|
|
# Install all PHP version (except EOL & Beta).
|
|
#enable_ioncube "5.6"
|
|
#enable_ioncube "7.0"
|
|
#enable_ioncube "7.1"
|
|
#enable_ioncube "7.2"
|
|
#enable_ioncube "7.3"
|
|
#enable_ioncube "7.4"
|
|
#enable_ioncube "8.0"
|
|
|
|
#enable_sourceguardian "5.6"
|
|
#enable_sourceguardian "7.0"
|
|
#enable_sourceguardian "7.1"
|
|
#enable_sourceguardian "7.2"
|
|
#enable_sourceguardian "7.3"
|
|
#enable_sourceguardian "7.4"
|
|
#enable_sourceguardian "8.0"
|
|
|
|
Versions="5.6 7.0 7.1 7.2 7.3 7.4 8.0"
|
|
for PHPver in ${Versions}; do
|
|
enable_ioncube "${PHPver}"
|
|
enable_sourceguardian "${PHPver}"
|
|
done
|
|
fi
|
|
;;
|
|
*)
|
|
info "Your selected PHP loader ${SELECTED_PHP_LOADER} is not supported yet."
|
|
;;
|
|
esac
|
|
else
|
|
info "${SELECTED_PHP_LOADER^} PHP ${PHPv} loader installation skipped."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
echo "[PHP Loaders Installation]"
|
|
|
|
# Start running things from a call at the end so if this script is executed
|
|
# after a partial download it doesn't do anything.
|
|
init_phploader_install "$@"
|