ÿØÿà JFIF    ÿÛ „ ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ    ÿÄ H   !1AQaq"‘¡2B±ÁÑð#R“ÒTbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡*….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±bLô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ.ÿØÿà JFIF    ÿÛ „ ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ    ÿÄ H   !1AQaq"‘¡2B±ÁÑð#R“ÒTbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡*….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±bLô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ.#!/bin/bash ####################################### # Timed-out wrapper around wp-cli # Arguments: # $1 - Path to PHP binary, full filesystem path # $2 - Path to Wordpress installation, full filesystem path # All the rest arguments ($@) are treated as WP-CLI command # Outputs: # Writes result to stdout ####################################### PATH_TO_PHP="$1" PATH_TO_WP="$2" shift 2; CODE=0 # WPOS wp-cli WP_CLI="/usr/share/imunify360/wp-plugins/wp-cli" # Defaults for PHP PHP_EXTRA_OPTIONS="-d memory_limit=-1 -d open_basedir=none" PHP_DEFAULT_EXTENSIONS="phar" # pick other extensions based on PHP version PHP_VERSION_PARTS=($($PATH_TO_PHP -v | head -n1 | sed -n -e 's/^.* \([0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p' | tr '.' ' ')) PHP_VERSION_ID=$((PHP_VERSION_PARTS[0] * 10000 + PHP_VERSION_PARTS[1] * 100 + PHP_VERSION_PARTS[2])) # PHP 8.0 and above have json extension enabled by default if (( PHP_VERSION_ID < 80000 )); then PHP_DEFAULT_EXTENSIONS+=" json" fi # for PHP 8.2 and above mysqlnd must be loaded before mysqli if (( PHP_VERSION_ID >= 80200 )); then PHP_DEFAULT_EXTENSIONS+=" mysqlnd" fi PHP_DEFAULT_EXTENSIONS+=" mysqli" # explicitly drop PHP disable_functions directive in order to avoid errors like # 'Error: Cannot do 'launch': The PHP functions `proc_open()` and/or `proc_close()` are disabled' # during plugin manipulations PHP_DEFAULT_FUNCTIONS="-d disable_functions= -d display_errors=0 -d error_log=/dev/null" # Defaults for WP-CLI WP_CLI_DEFAULT_OPTS=("--skip-themes") # Must be first [0] # Passed via ENVVAR if [ -n "${SKIP_PLUGINS_LOADING}" ]; then WP_CLI_DEFAULT_OPTS+=("--skip-plugins") fi # Find wp-config.php WP_CONFIG_PATH="${PATH_TO_WP}/wp-config.php" if [ ! -e "${WP_CONFIG_PATH}" ]; then # It's ok for wp-config.php to be in a subdirectory PARENT_PATH=$(dirname "${PATH_TO_WP}") WP_CONFIG_PATH="${PARENT_PATH}/wp-config.php" fi # Define constants WP_CLI_DEFAULT_OPTS+=("--exec=define('WP_DEBUG', true);") WP_CLI_DEFAULT_OPTS+=("--exec=define('WP_DEBUG_DISPLAY', false);") WP_CLI_DEFAULT_OPTS+=("--exec=define('DISABLE_WP_CRON', true);") # Default timeout, formatted as for timeout command (GNU coreutils) # 2 minutes (120 seconds) TIMEOUT="2m" # Construct PHP extensions to include EXTS="" for ext in $PHP_DEFAULT_EXTENSIONS do if ! $PATH_TO_PHP -m | grep -i "$ext" 1>/dev/null; then EXTS+=" -d extension=$ext.so" fi done # change current working directory # we need this because if php code has relative imports # it looks for scripts inside current directory first # e.g. some providers add require('wp-salt.php') to config # https://stackoverflow.com/questions/75823716/ # the overall approach of relative import is not correct, # but we still need patch for this cd "${PATH_TO_WP}" if [[ "$1" == "help" ]]; then exec timeout $TIMEOUT \ $PATH_TO_PHP $EXTS $PHP_EXTRA_OPTIONS $PHP_DEFAULT_FUNCTIONS \ $WP_CLI --path=$PATH_TO_WP "${WP_CLI_DEFAULT_OPTS[@]}" "$@" | cat else WP_CLI_RESULT=$(exec timeout $TIMEOUT \ $PATH_TO_PHP $EXTS $PHP_EXTRA_OPTIONS $PHP_DEFAULT_FUNCTIONS \ $WP_CLI --path=$PATH_TO_WP "${WP_CLI_DEFAULT_OPTS[@]}" "$@") WP_CLI_CODE=$? # Not 0 and not 1 because WP-CLI has commands that return status as the result of the command execution # For example plugin is-active, exit status 0 if active, otherwise 1 # Calling an error at the php level will return 255 # Let's try to run the command without --skip-themes if [ "$WP_CLI_CODE" -ne 0 ] && [ "$WP_CLI_CODE" -ne 1 ]; then echo "Retry without --skip-themes" >&2 unset WP_CLI_DEFAULT_OPTS[0] WP_CLI_RESULT=$(exec timeout $TIMEOUT \ $PATH_TO_PHP $EXTS $PHP_EXTRA_OPTIONS $PHP_DEFAULT_FUNCTIONS \ $WP_CLI --path=$PATH_TO_WP "${WP_CLI_DEFAULT_OPTS[@]}" "$@") WP_CLI_CODE=$? fi printf '%s' "$WP_CLI_RESULT" CODE=$WP_CLI_CODE fi exit $CODE