HEX
Server: nginx/1.18.0
System: Linux hqnl0246134.online-vm.com 5.4.0-135-generic #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: phpinfo,disk_free_space,disk_total_space,diskfreespace,dl,exec,opcache_get_configuration,opcache_get_status,passthru,pclose,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_waitpid,pcntl_wait,pcntl_wexitstatus,pcntl_wifcontinued,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,popen,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,show_source,system,exec,passthru,shell_exec,system,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Upload Files
File: /var/lib/dpkg/info/imunify360-php-i360.postinst
#!/bin/bash

set -e

I360_PREFIX=/usr/share/i360-php

is_cloudways()
{
    CW_REGEXP=".*\.cloudways(apps|stagingapps).com$"
    APM_BIN=/usr/local/sbin/apm

    HOSTNAME=$(hostname -f | sed 's/.*/\L&/g')
    if [[ ${HOSTNAME} =~ ${CW_REGEXP} ]]; then
        return 0
    fi

    if [ -f ${APM_BIN} ];  then
        if ${APM_BIN} info | grep -q "Cloudways"; then
            return 0
        fi
    fi

    return 1
}

case "$1" in
    triggered)
        declare -a altphps
        altphps=(`cat "/usr/share/i360-php/altphps.txt"`)

        if ! is_cloudways; then
            for value in "${altphps[@]}"; do
                # if alt-php is installed and i360.ini is missing in php.d, then copy i360.ini to php.d
                if [ -e "/opt/alt/${value}/etc/php.ini" ] && [ -e "${I360_PREFIX}/${value}/etc/php.d.all/i360.ini" ] && ! [ -f "/opt/alt/${value}/etc/php.d/i360.ini" ]; then
                    mkdir -p "/opt/alt/${value}/etc/php.d/"
                    cp ${I360_PREFIX}/${value}/etc/php.d.all/i360.ini /opt/alt/${value}/etc/php.d/i360.ini
                fi
            done
        else
            for path in ${2}; do
                # basename of triggered path, i.e. /etc/php/8.2 -> 8.2
                version=${path##*/}
                php_bin="/usr/bin/php${version}"
                if [[ -n $version ]] && [[ -e ${php_bin} ]]; then
                    if [[ -z  "$(${php_bin} -i | grep "i360 pkg ver")" ]]; then
                        /usr/share/i360-php/native-php/install-clean.sh --install-i360 "${php_bin}"
                    fi
                fi
            done
        fi
        ;;
    configure)
        declare -a altphps
        altphps=(`cat "/usr/share/i360-php/altphps.txt"`)
        LIBS=""
        if [ "$(uname -m)" == "x86_64" ]; then
            LIBS="/x86_64-linux-gnu"
        fi

        IS_CLOUDWAYS=0
        if ! is_cloudways; then
            for value in "${altphps[@]}"; do
                if [ -f ${I360_PREFIX}/${value}/etc/php.d.all/i360.ini ]; then
                    mkdir -p /opt/alt/${value}/etc/php.d.all
                    if [ ! -f /opt/alt/${value}/etc/php.d.all/i360.ini ]; then
                        cp -f ${I360_PREFIX}/${value}/etc/php.d.all/i360.ini /opt/alt/${value}/etc/php.d.all/i360.ini
                    fi
                fi
                # update i360.so
                if [ -f ${I360_PREFIX}/${value}/usr/lib${LIBS}/php/modules/i360.so ]; then
                    mkdir -p /opt/alt/${value}/usr/lib${LIBS}/php/modules
                    cp -f ${I360_PREFIX}/${value}/usr/lib${LIBS}/php/modules/i360.so /opt/alt/${value}/usr/lib${LIBS}/php/modules/i360.so
                fi
                # if alt-php is installed and i360.ini is missing in php.d, then copy i360.ini to php.d
                if [ -e "/opt/alt/${value}/etc/php.ini" ] && [ -e "${I360_PREFIX}/${value}/etc/php.d.all/i360.ini" ] && ! [ -f "/opt/alt/${value}/etc/php.d/i360.ini" ]; then
                    mkdir -p "/opt/alt/${value}/etc/php.d/"
                    cp ${I360_PREFIX}/${value}/etc/php.d.all/i360.ini /opt/alt/${value}/etc/php.d/i360.ini
                fi
            done
        else
            IS_CLOUDWAYS=1
        fi

        if [ ! -e /usr/share/i360-php-opts/.i360-lock ]; then
            touch /usr/share/i360-php-opts/.i360-lock
            chmod 644 /usr/share/i360-php-opts/.i360-lock
        else
            chmod 644 /usr/share/i360-php-opts/.i360-lock
        fi

        #detect native php if exists for Plesk
        if [ -e /usr/local/psa/version ]; then
            if [ -e /usr/bin/php ]; then
                VERS=$(/usr/bin/php --version | head -n1 | cut -d' ' -f2 | cut -c 1,3)
                EXT_DIR=$(/usr/bin/php -i | grep -e "^extension_dir" | cut -d"=" -f2 | tr ">" " " | sed 's/^ *//;s/ *$//')
                INI_EXISTS=$(/usr/bin/php -i | grep "Scan this dir for additional .ini files" | cut -d"=" -f2 | tr ">" " " | sed 's/^ *//;s/ *$//')
                if [ -e "/opt/alt/php${VERS}/usr/lib${LIBS}/php/modules/" -a -n "$INI_EXISTS" -a -e "$INI_EXISTS" ]; then
                  if [ -e /opt/alt/php${VERS}/usr/lib${LIBS}/php/modules/ -a -e "${EXT_DIR}" ]; then
                    if [ -e /opt/alt/php${VERS}/usr/lib${LIBS}/php/modules/i360.so ]; then
                      rm -f "${EXT_DIR}/i360.so"
                    fi
                    cp /opt/alt/php${VERS}/usr/lib${LIBS}/php/modules/i360.so "${EXT_DIR}"
                  fi
                  INI_PATH=$(dirname $(dirname $(/usr/bin/php -i | grep "Scan this dir for additional .ini files" | cut -d"=" -f2 | tr ">" " " | sed 's/^ *//;s/ *$//')))
                  if [ -e /opt/alt/php${VERS}/etc/php.d.all/i360.ini -a -e ${INI_PATH}/mods-available -a -e /usr/sbin/phpenmod ]; then
                    cp /opt/alt/php${VERS}/etc/php.d.all/i360.ini ${INI_PATH}/mods-available
                    /usr/sbin/phpenmod i360
                  fi
                fi
            fi
        fi

        # detect if native php exists for DA
        if [ -e /usr/local/directadmin/custombuild ]; then
          if [ -x /usr/share/i360-php/easyapache3/native_da.hook ]; then
            /usr/share/i360-php/easyapache3/native_da.hook --install-i360
          fi

          for unit in $(systemctl list-units --state=running "php-fpm*" | grep "loaded active" | awk '{ print $1 }')
          do
            systemctl restart $unit
          done
        fi

        if [ ${IS_CLOUDWAYS} -eq 1 ]; then
            if [ -x /usr/share/i360-php/native-php/install-clean.sh ]; then
              /usr/share/i360-php/native-php/install-clean.sh --install-i360

              for unit in $(systemctl list-units --state=running | grep "php.*-fpm\.service" | awk '{ print $1 }')
              do
                systemctl restart $unit
              done
            fi

            # Remove cpanel, plesk php configs
            rm -rf /opt/cpanel /opt/plesk /usr/share/cagefs/.cpanel.multiphp
        fi

        #
        # When imunify360-php-i360 and imunify360-php-i360-rules are installed
        # in one transaction, it comes out, that /usr/bin/i360-storage
        # is not yet available in %post for imunify360-php-i360-rules.
        #
        # That is why we repeat this step in %post for imunify360-php-i360
        #
        /usr/bin/i360-storage.immunity mkdump /usr/share/i360-php-opts/.rules /usr/share/i360-php-opts/.rulesdump

        # Generate .rules and .rulesdump
        # from /var/imunify360/files/static/proactive/rules/[version]
        if [ ${IS_CLOUDWAYS} -eq 0 ]; then
            /usr/bin/i360-storage-new --silent-on-noop
        else
            # skip v1 compilation on cloudways when v2 is available
            /usr/bin/i360-storage-new --silent-on-noop --optimize
        fi

        if [ -e /usr/bin/i360-exclcomp ]; then
          if [ -e /etc/sysconfig/imunify360/malware-filters-admin-conf/pd-combined.txt ]; then
            if [ ! -e /usr/share/i360-php-opts/pd-combined-compiled ]; then
              /usr/bin/i360-exclcomp
            fi
          fi
        fi
        #on install or upgrade check if exists autorules.yaml and recreate rules
        if [ -e /usr/share/i360-php-opts/autorules.yaml ] && [ -e /etc/sysconfig/imunify360/imunify360-merged.config ]; then
          IS_PHP_IM_ENABLED=$(awk 'BEGIN {found=0;}{if(/PROACTIVE_DEFENCE/){found=1;}else if($found && /php_immunity/ && /true/){print "true";}}' /etc/sysconfig/imunify360/imunify360-merged.config)
          if [ -n "$IS_PHP_IM_ENABLED" ]; then
            if [ -e /usr/bin/i360-storage-mkcustom ]; then
              /usr/bin/i360-storage-mkcustom /usr/share/i360-php-opts/autorules.yaml
            fi
          fi
        fi

        # restore important values from old config file
        JIT_COMPATIBLE_MODE=$(grep jit_compatible_mode /usr/share/i360-php-opts/module.ini.old) || echo ""
        if [ -n "${JIT_COMPATIBLE_MODE}" ]; then
          sed -i '/jit_compatible_mode/d' /usr/share/i360-php-opts/module.ini
          echo -e "\n${JIT_COMPATIBLE_MODE}" >> /usr/share/i360-php-opts/module.ini
          rm /usr/share/i360-php-opts/module.ini.old
        fi

        /bin/systemctl daemon-reload >/dev/null 2>&1 || :
        /bin/systemctl reset-failed >/dev/null 2>&1 || :
        ;;

    abort-upgrade|abort-remove|abort-deconfigure)
        ;;
    *)
        echo "postinst called with unknown argument \`$1'" >22
        exit 1
        ;;
esac

exit 0