Added php-selector support

devel
Alexey Berezhok 8 months ago
parent cce8d44f91
commit 3a964e54b1

@ -0,0 +1,56 @@
#!/bin/bash
# info: Change php selector state
# options: STATUS
# STATUS can be yes or no
# example: v-change-selector-state yes
status=$1
# Includes
# shellcheck source=/etc/hestiacp/hestia.conf
source /etc/hestiacp/hestia.conf
# shellcheck source=/usr/local/hestia/func/main.sh
source $HESTIA/func/main.sh
# load config file
source_conf "$HESTIA/conf/hestia.conf"
#----------------------------------------------------------#
# Variables & Functions #
#----------------------------------------------------------#
check_args '1' "$#" 'STATUS'
if [ -f /etc/redhat-release ]; then
:
else
log_event "$OK" "$ARGUMENTS"
exit 0
fi
# Perform verification if read-only mode is enabled
check_hestia_demo_mode
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
if [ "$status" == "yes" ]; then
update-alternatives --set php /usr/bin/hestiacp-php-selector
if [ $? -ne 0 ]; then
update-alternatives --install /usr/bin/php php /usr/bin/hestiacp-php-selector 1
update-alternatives --set php /usr/bin/hestiacp-php-selector
fi
change_sys_value "PHP_SELECTOR" "yes"
else
/usr/local/hestia_php_selector/hestiacp_php_selector_installer off
change_sys_value "PHP_SELECTOR" "no"
fi
#----------------------------------------------------------#
# Hestia #
#----------------------------------------------------------#
log_event "$OK" "$ARGUMENTS"

@ -83,6 +83,11 @@ if [ -f '/etc/redhat-release' ]; then
fi
update-alternatives --set php /usr/bin/php$version
if [ $? -eq 0 ]; then
update-alternatives --install /usr/bin/php php /usr/bin/php$version 1
update-alternatives --set php /usr/bin/php$version
fi
/usr/bin/hestiacp-php-admin system $version
#----------------------------------------------------------#
# Hestia #

@ -44,6 +44,7 @@ check_hestia_demo_mode
# Reading user values
source $USER_DATA/user.conf
versions=$($BIN/v-list-sys-php plain)
support=0
for v in $versions; do
@ -57,27 +58,35 @@ if [ "$support" = 0 ]; then
exit 2
fi
# Create .bash_aliases is not exsists
if [ ! -f "$FILE" ]; then
if [ -f /etc/redhat-release ];then
mkdir -p $HOMEDIR/$user/.bashrc.d
chown -R $user:$user $HOMEDIR/$user/.bashrc.d
if [ "$PHP_SELECTOR" == "yes" ]; then
/usr/bin/hestiacp-php-admin set $user $version
if grep -q "alias php='env php" "$FILE"; then
sed -i "/alias php='env/d" $FILE
fi
touch $FILE
chown $user:$user $FILE
fi
else
if grep -q "alias php='env php$version'" "$FILE"; then
echo "PHP CLI Already defined"
exit
fi
# Create .bash_aliases is not exsists
if [ ! -f "$FILE" ]; then
if [ -f /etc/redhat-release ];then
mkdir -p $HOMEDIR/$user/.bashrc.d
chown -R $user:$user $HOMEDIR/$user/.bashrc.d
fi
touch $FILE
chown $user:$user $FILE
fi
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
if grep -q "alias php='env php$version'" "$FILE"; then
echo "PHP CLI Already defined"
exit
fi
sed -i "/alias php='env/d" $FILE
echo "alias php='env php$version'" >> $FILE
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
sed -i "/alias php='env/d" $FILE
echo "alias php='env php$version'" >> $FILE
fi
update_user_value "$user" '$PHPCLI' "$version"
#----------------------------------------------------------#

@ -112,7 +112,8 @@ json_list() {
"APP_NAME": "'$APP_NAME'",
"TITLE": "'$TITLE'",
"SUBJECT_EMAIL": "'$SUBJECT_EMAIL'",
"HIDE_DOCS": "'$HIDE_DOCS'"
"HIDE_DOCS": "'$HIDE_DOCS'",
"PHP_SELECTOR": "'$PHP_SELECTOR'"
}
}'
}
@ -226,10 +227,19 @@ shell_list() {
echo "Hide System Administator: $POLICY_SYSTEM_HIDE_ADMIN"
echo "Updates: Notify by email: $UPGRADE_SEND_EMAIL"
echo "Updates: Email install log: $UPGRADE_SEND_EMAIL_LOG"
if [ -n "$PHP_SELECTOR" ]; then
echo "PHP cli selector: $PHP_SELECTOR"
else
echo "PHP cli selector: no"
fi
}
# PLAIN list function
plain_list() {
T_PHP_SELECTOR="no"
if [ -n "$PHP_SELECTOR" ]; then
T_PHP_SELECTOR="$PHP_SELECTOR"
fi
echo -ne "$WEB_SYSTEM\t$WEB_RGROUPS\t$WEB_PORT\t$WEB_SSL\t"
echo -ne "$WEB_SSL_PORT\t$WEB_BACKEND\t$PROXY_SYSTEM\t$PROXY_PORT\t"
echo -ne "$PROXY_SSL_PORT\t$FTP_SYSTEM\t$MAIL_SYSTEM\t$IMAP_SYSTEM\t"
@ -239,8 +249,9 @@ plain_list() {
echo -ne "$FILE_MANAGER\t$REPOSITORY\t$VERSION\t$DEMO_MODE\t$RELEASE_BRANCH\t"
echo -ne "$SMTP_RELAY_HOST\t$SMTP_RELAY_PORT\t$SMTP_RELAY_USER\t"
echo -ne "$UPGRADE_SEND_EMAIL\t$UPGRADE_SEND_EMAIL_LOG\t$THEME\t$LANGUAGE\t$BACKUP_GZIP\t"
echo -ne "$BACKUP\t$WEBMAIL_ALIAS\t$DB_PMA_URL\t$DB_PGA_URL\t\t$DEBUG_MODE\t$API\t$API_ALLOWED_IP"
echo -e "$POLICY_SYSTEM_PROTECTED_ADMIN\t$POLICY_SYSTEM_HIDE_ADMIN"
echo -ne "$BACKUP\t$WEBMAIL_ALIAS\t$DB_PMA_URL\t$DB_PGA_URL\t$DEBUG_MODE\t$API\t$API_ALLOWED_IP\t"
echo -ne "$POLICY_SYSTEM_PROTECTED_ADMIN\t$POLICY_SYSTEM_HIDE_ADMIN\t"
echo -e "$T_PHP_SELECTOR"
}
# CSV list
@ -257,7 +268,8 @@ csv_list() {
echo -n "'UPGRADE_SEND_EMAIL','UPGRADE_SEND_EMAIL_LOG',"
echo -n "'THEME', 'LANGUAGE','BACKUP_GZIP','BACKUP','WEBMAIL_ALIAS',"
echo -n "'DB_PMA_ALIAS','DB_PGA_ALIAS','DEBUG_MODE','API','API_ALLOWED_IP',"
echo -n "'POLICY_SYSTEM_PROTECTED_ADMIN',POLICY_SYSTEM_HIDE_ADMIN'"
echo -n "'POLICY_SYSTEM_PROTECTED_ADMIN',POLICY_SYSTEM_HIDE_ADMIN',"
echo -n "'PHP_SELECTOR'"
echo
echo -n "'$WEB_SYSTEM','$WEB_RGROUPS','$WEB_PORT','$WEB_SSL',"
echo -n "'$WEB_SSL_PORT','$WEB_BACKEND','$PROXY_SYSTEM','$PROXY_PORT',"
@ -268,8 +280,9 @@ csv_list() {
echo -n "'$REPOSITORY', '$VERSION','$DEMO_MODE','$RELEASE_BRANCH',"
echo -n "'$SMTP_RELAY','$SMTP_RELAY_HOST','$SMTP_RELAY_PORT','$SMTP_RELAY_USER',"
echo -n "'$UPGRADE_SEND_EMAIL','$UPGRADE_SEND_EMAIL_LOG','$THEME','$LANGUAGE',"
echo -n "'$BACKUP_GZIP','$BACKUP','$WEBMAIL_ALIAS','$DB_PMA_URL','$DB_PGA_URL'"
echo -n "'$DEBUG_MODE','$API','$API_ALLOWED_IP','$POLICY_SYSTEM_PROTECTED_ADMIN,$POLICY_SYSTEM_HIDE_ADMIN"
echo -n "'$BACKUP_GZIP','$BACKUP','$WEBMAIL_ALIAS','$DB_PMA_URL','$DB_PGA_URL',"
echo -n "'$DEBUG_MODE','$API','$API_ALLOWED_IP','$POLICY_SYSTEM_PROTECTED_ADMIN,$POLICY_SYSTEM_HIDE_ADMIN',"
echo -n "'$PHP_SELECTOR'"
echo
}
@ -289,7 +302,7 @@ fi
# Listing data
case $format in
json) json_list ;;
plain) shell_list ;;
plain) plain_list ;;
csv) csv_list ;;
shell) shell_list ;;
esac

@ -108,6 +108,12 @@ $v_php_versions = array_map(function ($php_version) use ($backend_templates, $ba
return $phpinfo;
}, $v_php_versions);
if (!empty($_SESSION["PHP_SELECTOR"])) {
$v_php_selector = $_SESSION["PHP_SELECTOR"];
} else {
$v_php_selector = "";
}
// List languages
exec(HESTIA_CMD . "v-list-sys-languages json", $output, $return_var);
$language = json_decode(implode("", $output), true);
@ -363,6 +369,23 @@ if (!empty($_POST["save"])) {
//force reload
$require_refresh = true;
}
//Check php selector
$t_v_php_selector = $_POST["v_use_php_selector"] == "on"?"yes":"no";
if ($_POST["v_use_php_selector"] != $v_php_selector){
$v_set_flag = "no";
if ($_POST["v_use_php_selector"] == "on"){
$v_set_flag = "yes";
}
exec(
HESTIA_CMD .
"v-change-selector-state " .
$v_set_flag,
$output,
$return_var,
);
check_return_code($return_var, $output);
unset($output);
}
}
}

@ -19,7 +19,14 @@ try {
define("HESTIA_DIR_BIN", "/usr/local/hestia/bin/");
define("HESTIA_CMD", "/usr/bin/sudo /usr/local/hestia/bin/");
define("DEFAULT_PHP_VERSION", "php-" . exec('php -r "echo substr(phpversion(),0,3);"'));
exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var);
$is_rhel_detect = str_contains(implode("", $output), "+");
unset($output);
if ($is_rhel_detect) {
define("DEFAULT_PHP_VERSION", "php-" . exec('php -r "echo str_replace(\'.\', \'\', substr(phpversion(),0,3));"'));
} else {
define("DEFAULT_PHP_VERSION", "php-" . exec('php -r "echo substr(phpversion(),0,3);"'));
}
// Load Hestia Config directly
load_hestia_config();

@ -293,7 +293,7 @@
<?php } ?>
<?php } ?>
<?php if (!empty($_SESSION["WEB_BACKEND"])) { ?>
<div class="u-mt10">
<div class="u-mt20">
<label for="v_php_default_version" class="form-label">
<?= _("System PHP Version") ?>
</label>
@ -310,6 +310,18 @@
<?php } ?>
</select>
</div>
<div class="form-check u-mb5 u-mt10">
<input
class="form-check-input"
type="checkbox"
name="v_use_php_selector"
id="v_use_php_selector"
<?= $_SESSION["PHP_SELECTOR"] == "yes" ? "checked" : "" ?>
>
<label for="v_use_php_selector">
<?= _("Use PHP cli selector") ?>
</label>
</div>
<?php } ?>
</div>
</details>

Loading…
Cancel
Save