Compare commits

..

21 Commits

Author SHA1 Message Date
Alexey Berezhok
e991cf4797 Fixed changelog 2025-02-04 23:41:46 +03:00
Alexey Berezhok
66bb1323a9 Added support some webapp applications. Part 2 2025-02-04 23:35:17 +03:00
Alexey Berezhok
e4624d9398 Added support some webapp applications 2025-02-04 23:34:14 +03:00
Alexey Berezhok
b7e404e18c Update composer for new version of fm and brepo/phpquoteshellarg 2025-02-04 21:53:22 +03:00
Alexey Berezhok
316ca0e292 Added alternative php. Part 14 2025-02-02 23:48:28 +03:00
Alexey Berezhok
6e7af9ea42 Added alternative php. Part 13 2025-02-02 22:07:18 +03:00
Alexey Berezhok
06fa9cb9c2 Added alternative php. Part 12 2025-02-01 23:48:29 +03:00
Alexey Berezhok
93ccae3f18 Added alternative php. Part 11 2025-01-31 23:41:28 +03:00
Alexey Berezhok
14af530339 Added alternative php. Part 10 2025-01-31 00:10:16 +03:00
Alexey Berezhok
57594e1a76 Added alternative php. Part 9 2025-01-22 23:29:41 +03:00
Alexey Berezhok
c25c8d8f64 Added alternative php. Part 8 2025-01-22 23:10:51 +03:00
Alexey Berezhok
b29a369515 Added alternative php. Part 7 2025-01-19 23:52:30 +03:00
Alexey Berezhok
7f3b5fdd27 Added alternative php. Part 5 2025-01-19 22:17:36 +03:00
Alexey Berezhok
221fe29cf0 Added alternative php. Part 4 2025-01-19 22:11:40 +03:00
Alexey Berezhok
f3b9d33016 Use local php. Part 3 2025-01-18 15:55:12 +03:00
Alexey Berezhok
2f91eee76d Use local php. Part 2 2025-01-17 21:33:34 +03:00
Alexey Berezhok
66e574dd33 Use local php. Part 1 2025-01-13 23:21:50 +03:00
Alexey Berezhok
8e2a9e1f42 Added quota 2025-01-10 22:45:19 +03:00
Alexey Berezhok
f01015c05d quota fix. Part 1 2025-01-09 23:49:05 +03:00
Alexey Berezhok
60eac545d6 Remove debian and ubuntu installer 2025-01-08 23:01:10 +03:00
Alexey Berezhok
95a0e87271 Added sha-512 authorization fix 2025-01-07 15:27:17 +03:00
70 changed files with 9391 additions and 15272 deletions

View File

@@ -2,7 +2,17 @@
All notable changes to this project will be documented in this file.
## [1.9.2.rpm] - Alpha release
## [1.9.5.rpm] - Release
- Added support installation of alternative php not only remi
- Fixed separate edition of php.ini in multiphp mode
## [1.9.4.rpm] - Release
- Fixed sha-512 auth in hestiacp
- Added quota support for rpm based os
## [1.9.2.rpm] - Release
- Forked from 1.8.6 alpha and reworked for rpm based systems support
- Added passenger support (https://hestiadocs.brepo.ru/docs/extensions/extended-modules.html#passenger-manager)

View File

@@ -1,110 +1,102 @@
<h1 align="center">Hestia Control Panel</h1>
<h1 align="center">Hestia Control Panel (RPM Edition)</h1>
<h2 align="center">Lightweight and powerful control panel for the modern web</h2>
<p align="center"><strong>Original project:</strong> | <a href="https://github.com/hestiacp/hestiacp/blob/release/CHANGELOG.md">View Changelog</a> |
<a href="https://www.hestiacp.com/">HestiaCP.com</a> |
<a href="https://docs.hestiacp.com/">Documentation</a> |
<a href="https://forum.hestiacp.com/">Forum</a>
<br/><br/></p>
<h2 align="center">Легкая и мощная панель управления для современного сервера. Организуй собственный сервер в два счета.</h2>
<p align="center"><strong>Ссылки на оригинальный проект для Ubuntu и Debian:</strong> | <a href="https://www.hestiacp.com/">HestiaCP.com</a> |
</p>
<p align="center">
<strong>RPM support project:</strong> |
<strong>Информация по RPM Edition сборке:</strong> |
<a href="https://hestiadocs.brepo.ru/">Documentation for version with RPM support</a>
</p>
## **Welcome!**
Hestia Control Panel (RPM Edition) поддерживается и дорабатывается отдельной командой связанной с RPM Based операционными системаи, с момента форка от оригинального, данный проект включил изменения, которые не позволяют просто подтягивать доработки из оригинального проекта (и не все доработки Ubuntu и Debian нужны в RPM Based системах). Поэтому все изменения из оригинальной Hestia CP не подтягиваются автоматически, поэтому о найденных ошибках в текущей реализации необходимо репортить в текущий проект.
Hestia Control Panel is designed to provide administrators an easy to use web and command line interface, enabling them to quickly deploy and manage web domains, mail accounts, DNS zones, and databases from one central dashboard without the hassle of manually deploying and configuring individual components or services.
Ниже общее описание панели.
## Features and Services
## **Добро пожаловать!**
- Apache2 and NGINX with PHP-FPM
- Multiple PHP versions (5.6 - 8.2, 8.0 as default)
- DNS Server (Bind) with clustering capabilities
- POP/IMAP/SMTP mail services with Anti-Virus, Anti-Spam, and Webmail (ClamAV, SpamAssassin, Sieve, Roundcube)
- MariaDB/MySQL and/or PostgreSQL databases
- Let's Encrypt SSL support with wildcard certificates
- Firewall with brute-force attack detection and IP lists (iptables, fail2ban, and ipset).
Панель управления Hestia предназначена для предоставления администраторам простого в использовании веб-интерфейса и интерфейса командной строки, что позволяет им быстро развертывать веб-домены, почтовые аккаунты, зоны DNS и базы данных и управлять ими с единой центральной панели без необходимости вручную развертывать и настраивать отдельные компоненты или сервисы.
## Supported platforms and operating systems
## Функции и сервисы
- Apache2 и NGINX с PHP-FPM
- Несколько версий PHP (7.4 — 8.2, 8.0 по умолчанию, как из Remi репозитория, так и дополнительная самостоятельная сборка PHP пакетов)
- DNS-сервер (Bind)
- почтовые сервисы POP/IMAP/SMTP с защитой от вирусов, спама и веб-почтой (ClamAV, SpamAssassin, Sieve, Roundcube)
- базы данных MariaDB/MySQL и/или PostgreSQL
- поддержка SSL Let's Encrypt
- брандмауэр с защитой от атак методом перебора и списками IP (iptables, fail2ban и ipset).
## Поддерживаемые ОС
- **MSVSphere:** 9
- **AlmaLinux:** 9
- **RockyLinux:** 9
Currently stayed support of Debian and Ubuntu, but new functional will be available only for RPM based systems. For full supportin of Debian and Ubuntu use original [HestiaCP](https://github.com/hestiacp/hestiacp)
**ПРИМЕЧАНИЯ:**
**NOTES:**
- Панель управления Hestia не поддерживает 32-разрядные операционные системы!
- Панель управления Hestia в сочетании с OpenVZ 7 или более ранними версиями может иметь проблемы с DNS и/или брандмауэром. Если вы используете виртуальный частный сервер, мы настоятельно рекомендуем использовать что-то на основе KVM или LXC!
- Hestia Control Panel does not support 32 bit operating systems!
- Hestia Control Panel in combination with OpenVZ 7 or lower might have issues with DNS and/or firewall. If you use a Virtual Private Server we strongly advice you to use something based on KVM or LXC!
## Установка панели управления Hestia
## Installing Hestia Control Panel
- **ПРИМЕЧАНИЕ:** для обеспечения правильной работы необходимо установить панель управления Hestia поверх новой операционной системы.
- **NOTE:** You must install Hestia Control Panel on top of a fresh operating system installation to ensure proper functionality.
Несмотря на то, что мы приложили все усилия, чтобы сделать процесс установки и интерфейс панели управления максимально удобными (даже для новых пользователей), предполагается, что вы уже обладаете некоторыми базовыми знаниями и пониманием того, как настроить сервер Linux, прежде чем продолжить.
While we have taken every effort to make the installation process and the control panel interface as friendly as possible (even for new users), it is assumed that you will have some prior knowledge and understanding in the basics how to set up a Linux server before continuing.
### Шаг 1. Войдите в систему
### Step 1: Log in
To start the installation, you will need to be logged in as **root** or a user with super-user privileges. You can perform the installation either directly from the command line console or remotely via SSH:
Чтобы начать установку, вам нужно войти в систему как **root** или пользователь с правами суперпользователя. Вы можете выполнить установку непосредственно из командной строки или удалённо через SSH:
```bash
ssh root@your.server
```
### Step 2: Download
### Шаг 2. Загрузка
Download the installation script for the latest release:
Загрузите установочный скрипт для последней версии:
```bash
wget https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install.sh
```
If the download fails due to an SSL validation error, please be sure you've installed the ca-certificate package on your system - you can do this with the following command:
### Шаг 3: Запустите
```bash
yum update
```
### Step 3: Run
To begin the installation process, simply run the script and follow the on-screen prompts:
Чтобы начать процесс установки, просто запустите скрипт и следуйте инструкциям на экране:
```bash
bash hst-install.sh
```
You will receive a welcome email at the address specified during installation (if applicable) and on-screen instructions after the installation is completed to log in and access your server.
После завершения установки вы получите приветственное электронное письмо на адрес, указанный во время установки (если применимо), и инструкции на экране для входа в систему и доступа к вашему серверу.
### Custom installation
### Пользовательская установка
You may specify a number of various flags during installation to only install the features in which you need. To view a list of available options, run:
Во время установки вы можете указать несколько различных флагов, чтобы установить только те функции, которые вам нужны. Чтобы просмотреть список доступных опций, выполните:
```bash
bash hst-install.sh -h
```
## How to upgrade an existing installation
## Как обновить существующую установку
Automatic Updates are enabled by default on new installations of Hestia Control Panel and can be managed from **Server Settings > Updates**. To manually check for and install available updates, use the system package manager:
Автоматические обновления включены по умолчанию в новых установках Hestia Control Panel, и ими можно управлять из **Server Settings > Updates**. Чтобы вручную проверить наличие доступных обновлений и установить их, воспользуйтесь системным менеджером пакетов:
```bash
dnf update
```
## Issues & Support Requests
## Проблемы и запросы в службу поддержки
- If you encounter a general problem while using Hestia Control Panel for RPM based system use [issue report](https://github.com/bayrepo/hestiacp/issues)
- Если вы столкнулись с общей проблемой при использовании Hestia Control Panel для системы на основе RPM, воспользуйтесь [отчётом о проблеме](https://github.com/bayrepo/hestiacp-rpm/issues)
For original HestiaCP for Debian and Ubuntu use [original version](https://github.com/hestiacp/hestiacp):
Для оригинальной HestiaCP для Debian и Ubuntu используйте [оригинальную версию](https://github.com/hestiacp/hestiacp):
## Copyright
## Авторские права
See original copyright of [HestiaCP](https://github.com/hestiacp/hestiacp)
Ознакомьтесь с оригинальными авторскими правами [HestiaCP](https://github.com/hestiacp/hestiacp)
## License
## Лицензия
Hestia Control Panel is licensed under [GPL v3](https://github.com/hestiacp/hestiacp/blob/release/LICENSE) license, and is based on the [VestaCP](https://vestacp.com/) project.<br>
Панель управления Hestia распространяется по лицензии [GPL v3](https://github.com/hestiacp/hestiacp/blob/release/LICENSE) и основана на проекте [VestaCP](https://vestacp.com/).<br>

View File

@@ -21,28 +21,10 @@ source_conf "$HESTIA/conf/hestia.conf"
# Verifications #
#----------------------------------------------------------#
# Ensure that quota kernel modules are installed
if [ ! -f /etc/redhat-release ]; then
kernel_module_check=$(find /lib/modules/$(uname -r) -type f -name '*quota_v*.ko*' | egrep '.*' && [ $? -eq 0 ])
if [ -z "$kernel_module_check" ]; then
# Install kernel modules for quota support.
# Requires reboot to activate updated kernel.
echo "Installing required kernel modules for quota support..."
reboot_req="Y"
apt-get -qq install linux-image-extra-virtual -y
check_result $? "kernel module installation failed" "$E_UPDATE"
fi
fi
# Checking quota package
quota=$(which --skip-alias --skip-functions quota 2> /dev/null)
if [ $? -ne 0 ]; then
if [ -f "/etc/redhat-release" ]; then
dnf -y install quota > /dev/null 2>&1
else
export DEBIAN_FRONTEND=noninteractive
apt-get -y install quota > /dev/null 2>&1
fi
dnf -y install quota > /dev/null 2>&1
check_result $? "quota package installation failed" "$E_UPDATE"
fi
@@ -54,34 +36,70 @@ check_hestia_demo_mode
#----------------------------------------------------------#
# Adding group and user quota on /home partition
file_system=$(df -T /home | tail -n1 | awk '{print $2}')
mnt=$(df -P /home | awk '{print $6}' | tail -n1)
lnr=$(cat -n /etc/fstab | grep -v "#" | awk '{print $1,$3}' | grep "$mnt$" | cut -f 1 -d ' ')
opt=$(sed -n ${lnr}p /etc/fstab | awk '{print $4}')
fnd='usrquota\|grpquota\|usrjquota=aquota.user\|grpjquota=aquota.group\|jqfmt=vfsv0'
if [ $(echo $opt | tr ',' '\n' | grep -x $fnd | wc -l) -ne 5 ]; then
old=$(echo $(echo $opt | tr ',' '\n' | grep -v 'usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt=') | tr ' ' ',')
new='usrquota,grpquota,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0'
sed -i "$lnr s/$opt/$old,$new/" /etc/fstab
mount -o remount "$mnt"
if [ "$file_system" == "xfs" ]; then
fnd='usrquota\|grpquota'
if [ $(echo $opt | tr ',' '\n' | grep -x $fnd | wc -l) -ne 2 ]; then
old=$(echo $(echo $opt | tr ',' '\n' | grep -v 'usrquota\|grpquota') | tr ' ' ',')
new='usrquota,grpquota'
sed -i "$lnr s/$opt/$old,$new/" /etc/fstab
mount -o remount "$mnt"
systemctl daemon-reload
if [ "$mnt" == "/" ]; then
check_args=$(grubby --info=ALL | grep -oP "rootflags=\S*")
if [ -n "$check_args" ]; then
RED='\033[0;31m'
NC='\033[0m'
YELLOW='\033[1;33m'
printf "${RED}!!!!!!!Detected rootflags in grub!!!!!!!${NC}\n"
echo "${YELLOW}Add manualy 'uquota,pquota' and reboot the system${NC}\n"
else
grubby --args="rootflags=uquota,pquota" --update-kernel=ALL
fi
fi
fi
elif [ "$file_system" == "ext4" ]; then
fnd='usrquota\|grpquota\|usrjquota=aquota.user\|grpjquota=aquota.group\|jqfmt=vfsv0'
if [ $(echo $opt | tr ',' '\n' | grep -x $fnd | wc -l) -ne 5 ]; then
old=$(echo $(echo $opt | tr ',' '\n' | grep -v 'usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt=') | tr ' ' ',')
new='usrquota,grpquota,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0'
sed -i "$lnr s/$opt/$old,$new/" /etc/fstab
mount -o remount "$mnt"
systemctl daemon-reload
fi
else
if [ -n "$(grep DISK_QUOTA $HESTIA/conf/hestia.conf)" ]; then
sed -i "s/DISK_QUOTA=.*/DISK_QUOTA='no'/g" $HESTIA/conf/hestia.conf
fi
$BIN/v-log-action "system" "Info" "Plugins" "System Quota not supported."
log_history "system quota not supported"
log_event "$E_DISK" "$ARGUMENTS"
exit
fi
# Adding v2 group and user quota index
if [ ! -e "$mnt/aquota.user" ] || [ ! -e "$mnt/aquota.group" ]; then
quotacheck -avcugm > /dev/null 2>&1
fi
if [ "$file_system" == "ext4" ]; then
# Adding v2 group and user quota index
if [ ! -e "$mnt/aquota.user" ] || [ ! -e "$mnt/aquota.group" ]; then
quotacheck -avcugm > /dev/null 2>&1
fi
# Adding quotacheck on reboot
touch /forcequotacheck
# Adding quotacheck on reboot
touch /forcequotacheck
# Adding cron job
echo '#!/bin/bash' > /etc/cron.daily/quotacheck
echo 'touch /forcequotacheck' >> /etc/cron.daily/quotacheck
chmod a+x /etc/cron.daily/quotacheck
# Adding cron job
echo '#!/bin/bash' > /etc/cron.daily/quotacheck
echo 'touch /forcequotacheck' >> /etc/cron.daily/quotacheck
chmod a+x /etc/cron.daily/quotacheck
# Enabling group and user quota
if [ -n "$(quotaon -pa | grep " $mnt " | grep 'user\|group' | grep 'is off')" ]; then
quotaon -v $mnt
check_result $? "quota can't be enabled in $mnt" "$E_DISK"
fi
# Enabling group and user quota
if [ -n "$(quotaon -pa | grep " $mnt " | grep 'user\|group' | grep 'is off')" ]; then
quotaon -v $mnt
check_result $? "quota can't be enabled in $mnt" "$E_DISK"
fi
# Updating hestia.conf value

View File

@@ -22,11 +22,11 @@ source $HESTIA/func/main.sh
source_conf "$HESTIA/conf/hestia.conf"
source_conf "$HESTIA/install/upgrade/upgrade.conf"
if [ -f /etc/redhat-release ]; then
for elem in "${!multiphp_v[@]}"; do
multiphp_v[$elem]=$(convert_dot_version_to_non_dot "${multiphp_v[$elem]}")
done
fi
for elem in "${!multiphp_v[@]}"; do
multiphp_v[$elem]=$(convert_dot_version_to_non_dot "${multiphp_v[$elem]}")
done
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
@@ -38,27 +38,22 @@ if [ -z "$WEB_BACKEND" ]; then
fi
# Set file locations
if [ -f /etc/redhat-release ]; then
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
php_fpm=""
if [ "$LOCAL_PHP" == "yes" ]; then
php_fpm="/usr/lib/systemd/system/brepo-php-fpm$version.service"
else
php_fpm="/etc/init.d/php$version-fpm"
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
fi
# Verify php version format
if [ -f /etc/redhat-release ]; then
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
echo "The specified PHP version format is invalid, it should look like [0-9][0-9]."
echo "Example: 70, 74, 80"
exit "$E_INVALID"
fi
else
if [[ ! $version =~ ^[0-9].[0-9]+ ]]; then
echo "The specified PHP version format is invalid, it should look like [0-9].[0-9]."
echo "Example: 7.0, 7.4, 8.0"
exit "$E_INVALID"
fi
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
echo "The specified PHP version format is invalid, it should look like [0-9][0-9]."
echo "Example: 70, 74, 80"
exit "$E_INVALID"
fi
# Check if php version already exists
if [ -f "$php_fpm" ] && [ -f "$HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl" ]; then
echo "ERROR: Specified PHP version is already installed."
@@ -77,48 +72,48 @@ check_hestia_demo_mode
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
mph=""
php_modules_install="mysqlnd mysqli pdo_mysql pgsql pdo sqlite pdo_sqlite pdo_pgsql imap ldap zip opcache xmlwriter xmlreader gd intl pspell"
php_modules_disable=""
if [ "$LOCAL_PHP" == "yes" ]; then
mph="brepo-php$version brepo-php$version-fpm"
if ! echo "$DB_SYSTEM" | grep -w 'pgsql' > /dev/null; then
php_modules_install=$(echo "$php_modules_install" | sed -e "s/pgsql//")
php_modules_install=$(echo "$php_modules_install" | sed -e "s/pdo_pgsql//")
php_modules_disable="$php_modules_disable pgsql pdo_pgsql"
fi
else
# Packages in Remi repo have names with php$version-php- prefixes
mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql
php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap
php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli
php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl
php$version-php-mbstring php$version-php-pspell php$version-php-readline"
if [ "$version" = "56" ]; then
mph=$(sed -e "s/php$version-php-pecl-apcu//")
fi
mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl
php$version-fpm php$version-gd php$version-intl php$version-mysql
php$version-soap php$version-xml php$version-zip php$version-json php$version-bz2
php$version-pspell php$version-imagick php$version-pgsql php$version-imap php$version-ldap"
if [ -f /etc/redhat-release ]; then
# Packages in Remi repo have names with php$version-php- prefixes
mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql
php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap
php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli
php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl
php$version-php-mbstring php$version-php-pspell php$version-php-readline"
if [ "$version" = "56" ]; then
mph=$(sed -e "s/php$version-php-pecl-apcu//")
fi
fi
# Check is version is 7.1 or below to add mcrypt
if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then
mph="$mph php$version-mcrypt"
fi
# Check is version is 7.1 or below to add mcrypt
if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then
mph="$mph php$version-mcrypt"
fi
# Check if version is 8.0 or higher and drop php json.
if [[ ${version:0:1} == "8" ]]; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-json//")
fi
# Check if version is 8.0 or higher and drop php json.
if [[ ${version:0:1} == "8" ]]; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-json//")
fi
if ! echo "$DB_SYSTEM" | grep -w 'mysql' > /dev/null; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-mysql//")
fi
if ! echo "$DB_SYSTEM" | grep -w 'mysql' > /dev/null; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-mysql//")
fi
if ! echo "$DB_SYSTEM" | grep -w 'pgsql' > /dev/null; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-pgsql//")
if ! echo "$DB_SYSTEM" | grep -w 'pgsql' > /dev/null; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-pgsql//")
fi
fi
# Install php packages
if [ -f '/etc/redhat-release' ]; then
dnf install -q -y $mph > /dev/null 2>&1 &
else
apt-get -qq update
apt-get -y -qq -o Dpkg::Options::="--force-confold" install $mph > /dev/null 2>&1 &
fi
dnf install -q -y $mph > /dev/null 2>&1 &
BACK_PID=$!
# Check if package installation is done, print a spinner
@@ -133,17 +128,27 @@ done
# Do a blank echo to get the \n back
echo
if [ "$LOCAL_PHP" == "yes" ]; then
for mod in $php_modules_install; do
enable_local_php_extension "$version" "$mod"
done
for mod in $php_modules_disable; do
disable_local_php_extension "$version" "$mod"
done
fi
# Check if installation was successful
if [ ! -f "$php_fpm" ]; then
echo "ERROR: Installation failed, please run the following command manually for debugging:"
if [ -f '/etc/redhat-release' ]; then
echo "dnf install $mph"
else
echo "apt-get install $mph"
fi
echo "dnf install $mph"
fi
if [ -f '/etc/redhat-release' ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
result_alt_php=$(alternatives --display php | grep /opt/brepo/php${version}/bin/php)
if [ -z "$result_alt_php" ]; then
alternatives --install /usr/bin/php php /opt/brepo/php${version}/bin/php 1 > /dev/null 2>&1
fi
else
result_alt_php=$(alternatives --display php | grep /usr/bin/php$version)
if [ -z "$result_alt_php" ]; then
alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1
@@ -173,7 +178,17 @@ fi
# Configure fpm
v_tpl=${version//./}
if [ -f /etc/redhat-release ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
systemctl enable brepo-php-fpm${version}.service
rm -f /opt/brepo/php${version}/etc/php-fpm.d/*
cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /opt/brepo/php${version}/etc/php-fpm.d/
sed -i "s/9999/99$v_tpl/g" /opt/brepo/php${version}/etc/php-fpm.d/dummy.conf
# Increase max upload and max post size
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 100M/g" /opt/brepo/php${version}/etc/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 100M/g" /opt/brepo/php${version}/etc/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 60/g" /opt/brepo/php${version}/etc/php.ini
else
systemctl enable php${version}-php-fpm
rm -f /etc/opt/remi/php${version}/php-fpm.d/*
cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /etc/opt/remi/php${version}/php-fpm.d/
@@ -183,19 +198,8 @@ if [ -f /etc/redhat-release ]; then
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 100M/g" /etc/opt/remi/php${version}/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 100M/g" /etc/opt/remi/php${version}/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 60/g" /etc/opt/remi/php${version}/php.ini
else
update-rc.d php$version-fpm defaults > /dev/null 2>&1
rm -f /etc/php/$version/fpm/pool.d/*
cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /etc/php/$version/fpm/pool.d/
sed -i "s/9999/99$v_tpl/g" /etc/php/$version/fpm/pool.d/dummy.conf
cp -f $HESTIA_INSTALL_DIR/php-fpm/php-fpm.conf /etc/php/$version/fpm/
sed -i "s/fpm_v/$version/g" /etc/php/$version/fpm/php-fpm.conf
# Increase max upload and max post size
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 100M/g" /etc/php/$version/fpm/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 100M/g" /etc/php/$version/fpm/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 60/g" /etc/php/$version/fpm/php.ini
fi
# Install backend template
cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl \
$HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl

View File

@@ -21,18 +21,10 @@ source_conf "$HESTIA/conf/hestia.conf"
check_args '1' "$#" 'VERSION'
# Verify php version format
if [ -f /etc/redhat-release ]; then
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
echo "The specified PHP version format is invalid, it should look like [0-9][0-9]."
echo "Example: 70, 74, 80"
exit "$E_INVALID"
fi
else
if [[ ! $version =~ ^[0-9].[0-9]+ ]]; then
echo "The specified PHP version format is invalid, it should look like [0-9].[0-9]."
echo "Example: 7.0, 7.4, 8.0"
exit "$E_INVALID"
fi
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
echo "The specified PHP version format is invalid, it should look like [0-9][0-9]."
echo "Example: 70, 74, 80"
exit "$E_INVALID"
fi
# Check if php version exists
@@ -50,18 +42,19 @@ check_hestia_demo_mode
#----------------------------------------------------------#
# Set file locations
if [ -f /etc/redhat-release ]; then
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
php_fpm=""
if [ "$LOCAL_PHP" == "yes" ]; then
php_fpm="/usr/lib/systemd/system/brepo-php-fpm$version.service"
else
php_fpm="/etc/init.d/php$version-fpm"
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
fi
if [ -f /etc/redhat-release ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
rm -f /opt/brepo/php*/etc/php-fpm.d/www.conf
cp -f $HESTIA/install/rpm/php-fpm/www.conf /opt/brepo/php${version}/etc/php-fpm.d/www.conf
else
rm -f /etc/opt/remi/php*/php-fpm.d/www.conf
cp -f $HESTIA/install/rpm/php-fpm/www.conf /etc/opt/remi/php$version/php-fpm.d/www.conf
else
rm -f /etc/php/*/fpm/pool.d/www.conf
cp -f $HESTIA/install/deb/php-fpm/www.conf /etc/php/$version/fpm/pool.d/www.conf
fi
for user in $($BIN/v-list-sys-users plain); do
@@ -75,17 +68,30 @@ $BIN/v-restart-web-backend
$BIN/v-restart-web
$BIN/v-restart-proxy
if [ -f '/etc/redhat-release' ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
result_alt_php=$(alternatives --display php | grep /opt/brepo/php${version}/bin/php)
if [ -z "$result_alt_php" ]; then
alternatives --install /usr/bin/php php /opt/brepo/php${version}/bin/php 1 > /dev/null 2>&1
fi
else
result_alt_php=$(alternatives --display php | grep /usr/bin/php$version)
if [ -z "$result_alt_php" ]; then
alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1
fi
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
if [ "$LOCAL_PHP" == "yes" ]; then
update-alternatives --set php /opt/brepo/php${version}/bin/php
if [ $? -eq 0 ]; then
update-alternatives --install /usr/bin/php php /opt/brepo/php${version}/bin/php 1
update-alternatives --set php /opt/brepo/php${version}/bin/php
fi
else
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
fi
/usr/bin/hestiacp-php-admin system $version

View File

@@ -40,6 +40,28 @@ check_hestia_demo_mode
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
php_v="82"
if [[ "$service" =~ ^php ]];then
ver_php=$(echo "$service" | grep -Po "\d+")
if [ -z "$ver_php" ]; then
php_v=$(get_system_default_php)
else
if [ "$LOCAL_PHP" == "yes" ]; then
if [ -e "/opt/brepo/php${ver_php}" ]; then
php_v="$ver_php"
else
php_v=$(get_system_default_php)
fi
else
if [ -e "/etc/opt/remi/php${ver_php}" ]; then
php_v="$ver_php"
else
php_v=$(get_system_default_php)
fi
fi
fi
service="php"
fi
# Defining dst config path
case $service in
@@ -50,7 +72,13 @@ case $service in
exim4) dst='/etc/exim4/exim4.conf.template' ;;
vsftpd) dst=$(find /etc/vsftpd* -name 'vsftpd.conf') ;;
proftpd) dst=$(find /etc/proftpd* -name 'proftpd.conf') ;;
php) dst=$(find /etc/php* -name php.ini) ;;
php)
if [ "$LOCAL_PHP" == "yes" ]; then
dst=$(find /opt/brepo/php${php_v} -name php.ini)
else
dst=$(find /etc/opt/remi/php${php_v} -name php.ini)
fi
;;
mysql) dst=$(find /etc/my* -name my.cnf) ;;
mysqld) dst=$(find /etc/my* -name my.cnf) ;;
mariadb) dst=$(find /etc/my* -name my.cnf) ;;
@@ -103,7 +131,7 @@ if [ "$update" = 'yes' ] && [ "$restart" != 'no' ]; then
if [ "$service" = 'php' ]; then
if [ "$(multiphp_count)" -gt 0 ]; then
service="php-fpm"
elif [ "$WEB_SYSTEM" = 'apache2' ]; then
elif [ "$WEB_SYSTEM" = 'httpd' ]; then
service="$WEB_SYSTEM"
fi
fi

View File

@@ -30,32 +30,54 @@ check_hestia_demo_mode
#----------------------------------------------------------#
# Deleting group and user quota on /home partition
file_system=$(df -T /home | tail -n1 | awk '{print $2}')
mnt=$(df -P /home | awk '{print $6}' | tail -n1)
lnr=$(cat -n /etc/fstab | awk '{print $1,$3}' | grep "$mnt$" | cut -f 1 -d ' ')
opt=$(sed -n ${lnr}p /etc/fstab | awk '{print $4}')
fnd='usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt='
if [ -n "$(echo $opt | grep $fnd)" ]; then
rep=$(echo $(echo $opt | tr ',' '\n' | grep -v $fnd) | tr ' ' ',')
sed -i "$lnr s/$opt/$rep/" /etc/fstab
mount -o remount "$mnt"
fi
# Disabling group and user quota
quotaoff=$(which --skip-alias --skip-functions quotaoff 2> /dev/null)
if [ $? -eq 0 ]; then
if [ -n "$(quotaon -pa | grep " $mnt " | grep 'user\|group' | grep 'is on')" ]; then
$quotaoff $mnt
if [ "$file_system" == "xfs" ]; then
fnd='usrquota\|grpquota'
if [ -n "$(echo $opt | grep $fnd)" ]; then
rep=$(echo $(echo $opt | tr ',' '\n' | grep -v $fnd) | tr ' ' ',')
sed -i "$lnr s/$opt/$rep/" /etc/fstab
mount -o remount "$mnt"
fi
if [ "$mnt" == "/" ]; then
check_args=$(grubby --info=`grubby --default-kernel` | grep -oP "rootflags=[^\"]*" | head -n1)
if [ "$check_args" != "rootflags=uquota,pquota" ]; then
RED='\033[0;31m'
NC='\033[0m'
YELLOW='\033[1;33m'
printf "${RED}!!!!!!!Delete uquota,pquota from grub!!!!!!!${NC}\n"
echo "${YELLOW}Delete manualy 'uquota,pquota' and reboot the system${NC}\n"
else
grubby --remove-args="rootflags=uquota,pquota" --update-kernel=ALL
fi
fi
else
fnd='usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt='
if [ -n "$(echo $opt | grep $fnd)" ]; then
rep=$(echo $(echo $opt | tr ',' '\n' | grep -v $fnd) | tr ' ' ',')
sed -i "$lnr s/$opt/$rep/" /etc/fstab
mount -o remount "$mnt"
fi
# Disabling group and user quota
quotaoff=$(which --skip-alias --skip-functions quotaoff 2> /dev/null)
if [ $? -eq 0 ]; then
if [ -n "$(quotaon -pa | grep " $mnt " | grep 'user\|group' | grep 'is on')" ]; then
$quotaoff $mnt
fi
fi
# Deleting v1 + v2 group and user quota index
for idx in $(echo 'quota.user quota.group aquota.user aquota.group'); do
[ -e "$mnt/$idx" ] && rm -f "$mnt/$idx"
done
# Deleting cron job
rm -f /etc/cron.daily/quotacheck
fi
# Deleting v1 + v2 group and user quota index
for idx in $(echo 'quota.user quota.group aquota.user aquota.group'); do
[ -e "$mnt/$idx" ] && rm -f "$mnt/$idx"
done
# Deleting cron job
rm -f /etc/cron.daily/quotacheck
# Updating hestia.conf value
if [ -z "$(grep DISK_QUOTA $HESTIA/conf/hestia.conf)" ]; then
echo "DISK_QUOTA='no'" >> $HESTIA/conf/hestia.conf

View File

@@ -52,11 +52,13 @@ get_domain_values 'web'
BACKEND="$template"
# Defining pool directory
if [ -f "/etc/redhat-release" ]; then
pool=$(find -L /etc/opt/remi/ -name "$domain.conf" -exec dirname {} \;)
pool=""
if [ "$LOCAL_PHP" == "yes" ]; then
pool=$(find -L /opt/brepo/ -name "$domain.conf" -exec dirname {} \;)
else
pool=$(find -L /etc/php/ -name "$domain.conf" -exec dirname {} \;)
pool=$(find -L /etc/opt/remi/ -name "$domain.conf" -exec dirname {} \;)
fi
if [ ! -e "$pool" ]; then
check_result "$E_NOTEXIST" "php-fpm pool doesn't exist"
fi

View File

@@ -32,27 +32,21 @@ if [ -z "$WEB_BACKEND" ]; then
fi
# Set file locations
if [ -f /etc/redhat-release ]; then
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
php_fpm=""
if [ "$LOCAL_PHP" == "yes" ]; then
php_fpm="/usr/lib/systemd/system/brepo-php-fpm$version.service"
else
php_fpm="/etc/init.d/php$version-fpm"
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
fi
# Verify php version format
if [ -f /etc/redhat-release ]; then
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
echo "The PHP version format is invalid, it should look like [0-9][0-9]."
echo "Example: 70, 74, 80"
exit "$E_INVALID"
fi
else
if [[ ! $version =~ ^[0-9].[0-9]+ ]]; then
echo "The PHP version format is invalid, it should look like [0-9].[0-9]."
echo "Example: 7.0, 7.4, 8.0"
exit "$E_INVALID"
fi
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
echo "The PHP version format is invalid, it should look like [0-9][0-9]."
echo "Example: 70, 74, 80"
exit "$E_INVALID"
fi
# Remove backend template
[ -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl ] && rm -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl
@@ -70,38 +64,33 @@ check_hestia_demo_mode
# Action #
#----------------------------------------------------------#
mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl
php$version-fpm php$version-gd php$version-intl php$version-mysql
php$version-soap php$version-xml php$version-zip php$version-mbstring
php$version-json php$version-bz2 php$version-pspell php$version-imagick php$version-pgsql
php$version-imap php$version-ldap"
if [ -f /etc/redhat-release ]; then
# Packages in Remi repo have names with php$version-php- prefixes
mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql
php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap
php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli
php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl
php$version-php-mbstring php$version-php-pspell php$version-php-readline"
fi
# Check is version is 7.1 or below to add mcrypt
if [ -f /etc/redhat-release ]; then
if [[ $(echo "$version 72" | awk '{print ($1 < $2)}') == 1 ]]; then
mph="$mph php$version-php-mcrypt"
fi
mph=""
if [ "$LOCAL_PHP" == "yes" ]; then
mph="brepo-php$version brepo-php$version-fpm"
else
if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then
mph="$mph php$version-mcrypt"
fi
mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl
php$version-fpm php$version-gd php$version-intl php$version-mysql
php$version-soap php$version-xml php$version-zip php$version-mbstring
php$version-json php$version-bz2 php$version-pspell php$version-imagick php$version-pgsql
php$version-imap php$version-ldap"
# Packages in Remi repo have names with php$version-php- prefixes
mph="php$version-php-fpm php$version-php-cgi php$version-php-mysqlnd php$version-php-pgsql
php$version-php-pdo php$version-php-common php$version-php-pecl-imagick php$version-php-imap
php$version-php-ldap php$version-php-pecl-apcu php$version-php-pecl-zip php$version-php-cli
php$version-php-opcache php$version-php-xml php$version-php-gd php$version-php-intl
php$version-php-mbstring php$version-php-pspell php$version-php-readline"
# Check is version is 7.1 or below to add mcrypt
if [[ $(echo "$version 72" | awk '{print ($1 < $2)}') == 1 ]]; then
mph="$mph php$version-php-mcrypt"
fi
fi
# Purge php packages
if [ -f '/etc/redhat-release' ]; then
dnf remove -y $mph > /dev/null 2>&1 &
else
apt-get -y purge $mph > /dev/null 2>&1 &
fi
dnf remove -y $mph > /dev/null 2>&1 &
BACK_PID=$!
# Check if package removal is done, print a spinner
@@ -119,40 +108,36 @@ echo
# Check if installation was successfully
if [ -f "$php_fpm" ]; then
echo "ERROR: Uninstallation failed, please run the following command manually for debugging:"
if [ -f '/etc/redhat-release' ]; then
echo "dnf remove $mph"
else
echo "apt-get purge $mph"
fi
echo "dnf remove $mph"
exit 1
fi
# Cleanup php folder
if [ -f '/etc/redhat-release' ]; then
[[ -d /etc/opt/remi/php$version ]] && rm -rf "/etc/opt/remi/php$version"
if [ "$LOCAL_PHP" == "yes" ]; then
[[ -d /opt/brepo/php$version ]] && rm -rf "/opt/brepo/php$version"
else
[[ -d /etc/php/$version ]] && rm -rf "/etc/php/$version"
[[ -d /etc/opt/remi/php$version ]] && rm -rf "/etc/opt/remi/php$version"
fi
if [ -f '/etc/redhat-release' ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
if [ "$WEB_BACKEND" = "php-fpm" ]; then
conf=$(find /opt/brepo/php* -name www.conf)
# Check if www.conf exists
if [ -z "$conf" ]; then
# If not grab the "last php version
last=$($BIN/v-list-sys-php "shell" | tail -n1)
cp -f $HESTIA/install/rpm/php-fpm/www.conf /opt/brepo/php$last/etc/php-fpm.d/www.conf
$BIN/v-restart-web-backend
fi
fi
else
if [ "$WEB_BACKEND" = "php-fpm" ]; then
conf=$(find /etc/opt/remi/php* -name www.conf)
# Check if www.conf exists
if [ -z "$conf" ]; then
# If not grab the "last php version
last=$($BIN/v-list-sys-php "shell" | tail -n1)
cp -f $HESTIA/install/rpm/php-fpm/www.conf /etc/opt/remi/php$version/php-fpm.d/www.conf
$BIN/v-restart-web-backend
fi
fi
else
if [ "$WEB_BACKEND" = "php-fpm" ]; then
conf=$(find /etc/php* -name www.conf)
# Check if www.conf exists
if [ -z "$conf" ]; then
# If not grab the "last php version
last=$($BIN/v-list-sys-php "shell" | tail -n1)
cp -f $HESTIA/install/deb/php-fpm/www.conf /etc/php/$last/fpm/pool.d/www.conf
cp -f $HESTIA/install/rpm/php-fpm/www.conf /etc/opt/remi/php$last/php-fpm.d/www.conf
$BIN/v-restart-web-backend
fi
fi

View File

@@ -2,7 +2,7 @@
# info: action with extended modules
# options: MODULE_ID [MODULE_RELATED_COMMNDS]
#
# example: v-ext-modules list json
# example: v-ext-modules passenger_manager list json
#
# This function enables and disables additional modules

View File

@@ -36,7 +36,8 @@ json_list() {
"METHOD": "'$method'",
"SALT": "'$salt'",
"TIME": "'$time'",
"DATE": "'$date'"
"DATE": "'$date'",
"ROUND":"'$round'"
}'
echo '}'
}
@@ -45,17 +46,18 @@ json_list() {
shell_list() {
echo "METHOD: $method"
echo "SALT: $salt"
echo "ROUND: $round"
}
# PLAIN list function
plain_list() {
echo -e "$method\t$salt"
echo -e "$method\t$salt\t$round"
}
# CSV list function
csv_list() {
echo "METHOD,SALT"
echo "$method, $salt"
echo "METHOD,SALT,ROUND"
echo "$method, $salt, $round"
}
#----------------------------------------------------------#
@@ -81,6 +83,11 @@ shadow=$(grep "^$user:" /etc/shadow | cut -f 2 -d :)
if echo "$shadow" | grep -qE '^\$[0-9a-z]+\$[^\$]+\$'; then
salt=$(echo "$shadow" | cut -f 3 -d \$)
round=""
if [[ "$salt" =~ ^rounds= ]]; then
round=$salt
salt=$(echo "$shadow" | cut -f 4 -d \$)
fi
method=$(echo "$shadow" | cut -f 2 -d \$)
if [ "$method" = "y" ]; then
method='yescrypt'

View File

@@ -67,14 +67,14 @@ csv_list() {
declare -a versions
# List through /etc/php
if [ -f /etc/redhat-release ]; then
for version in /etc/opt/remi/php*/php-fpm.d/www.conf; do
ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
if [ "$LOCAL_PHP" == "yes" ]; then
for version in /opt/brepo/php*/etc/php-fpm.d/www.conf; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
versions+=("$ver")
done
else
for version in /etc/php/*/fpm/pool.d/www.conf; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }')
for version in /etc/opt/remi/php*/php-fpm.d/www.conf; do
ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
versions+=("$ver")
done
fi

View File

@@ -67,21 +67,29 @@ csv_list() {
declare -a versions
# List through /etc/php
if [ -f /etc/redhat-release ]; then
for version in /etc/opt/remi/php*/; do
ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed 's|php||')
versions+=("$ver")
done
else
if [ -n "$WEB_BACKEND" ]; then
for version in /etc/php/*/fpm; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }')
if [ "$LOCAL_PHP" == "yes" ]; then
if [ -n "$WEB_BACKEND" ]; then
for version in /opt/brepo/php*/; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }' | sed 's|php||')
versions+=("$ver")
done
else
# Fix for modphp
for version in /etc/php/*/cli; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }')
for version in /opt/brepo/php*/bin/php; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }' | sed 's|php||')
versions+=("$ver")
done
fi
else
if [ -n "$WEB_BACKEND" ]; then
for version in /etc/opt/remi/php*/; do
ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed 's|php||')
versions+=("$ver")
done
else
# Fix for modphp
for version in /opt/remi/php*/root/bin/php; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }' | sed 's|php||')
versions+=("$ver")
done
fi

View File

@@ -1,6 +1,6 @@
#!/bin/bash
# info: list php config parameters
# options: [FORMAT]
# options: [VERSION] [FORMAT]
#
# example: v-list-sys-php-config
#
@@ -11,7 +11,8 @@
#----------------------------------------------------------#
# Argument definition
format=${1-shell}
php_ver=${1-default}
format=${2-shell}
# Includes
# shellcheck source=/etc/hestiacp/hestia.conf
@@ -61,24 +62,53 @@ csv_list() {
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
declare -a versions
if [ "$php_ver" == "default" ]; then
# List through /etc/php
if [ "$LOCAL_PHP" == "yes" ]; then
for version in /opt/brepo/php*/etc/php-fpm.d/www.conf; do
ver=$(echo "$version" | awk -F"/" '{ print $4 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
if [ "$ver" != "php*" ]; then
versions+=("$ver")
fi
done
else
for version in /etc/opt/remi/php*/php-fpm.d/www.conf; do
ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
if [ "$ver" != "php*" ]; then
versions+=("$ver")
fi
done
fi
else
ver=$(echo "$php_ver" | sed "s/php\([[:digit:]]\+\)/\1/g")
versions+=("$ver")
fi
if [ ${#versions[@]} -eq 0 ]; then
php_ver="82"
else
php_ver="${versions[0]}"
fi
# Defining config path
if [ -f /etc/redhat-release ]; then
config_path=$(find /etc/opt/remi/php* -name php.ini)
if [ "$LOCAL_PHP" == "yes" ]; then
config_path=$(find /opt/brepo/php${php_ver}/* -name php.ini)
else
config_path=$(find /etc/php* -name php.ini)
config_path=$(find /etc/opt/remi/php${php_ver}/* -name php.ini)
fi
config_count=$(echo "$config_path" | wc -l)
if [ "$config_count" -gt 1 ]; then
if [ -f /etc/redhat-release ]; then
multiphp_versions=$(ls -d /etc/opt/remi/php*/php-fpm.d 2> /dev/null | wc -l)
if [ "$LOCAL_PHP" == "yes" ]; then
multiphp_versions=$(ls -d /opt/brepo/php*/etc/php-fpm.d 2> /dev/null | wc -l)
else
multiphp_versions=$(ls -d /etc/php/*/fpm/pool.d 2> /dev/null | wc -l)
multiphp_versions=$(ls -d /etc/opt/remi/php*/php-fpm.d 2> /dev/null | wc -l)
fi
if [ "$WEB_BACKEND" = 'php-fpm' ] || [ "$multiphp_versions" -gt 0 ]; then
config_path=$(echo "$config_path" | grep fpm)
config_path=$(echo "$config_path" | grep "php")
else
config_path=$(echo "$config_path" | grep apache)
config_path=$(echo "$config_path" | grep httpd)
fi
fi
@@ -88,7 +118,7 @@ keys="$keys |upload_max_filesize |post_max_size"
keys="$keys |display_errors |error_reporting "
# Reading config
config=$(cat $config_path | grep -v "^;")
config=$(cat "$config_path" | grep -v "^;")
# Listing data
case $format in

View File

@@ -86,7 +86,7 @@ get_srv_state() {
rtime="0"
# Searching related pids
if [ -f /etc/redhat-release ] && [ "$name" = "php-fpm" ]; then
if [ "$name" = "php-fpm" ]; then
pids=''
for php_pid in $(pidof php-fpm); do
process_info=$(ps -p "$php_pid" -o args | tail -n1 | grep "$srv")
@@ -174,7 +174,16 @@ fi
# Checking PHP intepreter
if [ -n "$WEB_BACKEND" ] && [ "$WEB_BACKEND" != 'remote' ]; then
if [ -f /etc/redhat-release ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
php_versions=$(ls /opt/brepo/php*/sbin/php-fpm | cut -d'/' -f4 | sed 's|php||')
for version in $php_versions; do
proc_name="php-fpm"
service_name="fpm${version}"
get_srv_state "$proc_name"
data="$data\nNAME='brepo-php-$service_name' SYSTEM='php interpreter' STATE='$state'"
data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
done
else
php_versions=$(ls /opt/remi/php*/root/sbin/php-fpm | cut -d'/' -f4 | sed 's|php||')
for version in $php_versions; do
proc_name="php-fpm"
@@ -183,15 +192,6 @@ if [ -n "$WEB_BACKEND" ] && [ "$WEB_BACKEND" != 'remote' ]; then
data="$data\nNAME='$service_name-php-fpm' SYSTEM='php interpreter' STATE='$state'"
data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
done
else
php_versions=$(ls /usr/sbin/php*fpm* | cut -d'/' -f4 | sed 's|php-fpm||')
for version in $php_versions; do
proc_name="php-fpm${version}"
service_name="php${version}-fpm"
get_srv_state "$service_name" "$proc_name"
data="$data\nNAME='$service_name' SYSTEM='php interpreter' STATE='$state'"
data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
done
fi
fi

View File

@@ -32,6 +32,10 @@ is_format_valid 'service' 'restart'
# Action #
#----------------------------------------------------------#
if [ "$service" == "apache2" ]; then
service="httpd"
fi
log="/dev/null"
if [ "$DEBUG_MODE" = "true" ]; then
@@ -49,13 +53,21 @@ if [ "$service" = "php-fpm" ]; then
php_versions=$($BIN/v-list-sys-php plain)
# Substitute php-fpm service name formats
for version in $php_versions; do
service_list="${service_list} php${version}-fpm"
if [ "$LOCAL_PHP" == "yes" ]; then
service_list="${service_list} brepo-php-fpm${version}"
else
service_list="${service_list} php${version}-php-fpm"
fi
done
else
service_list="$service"
fi
for service in $service_list; do
is_fpm="no"
if [[ "$service" =~ ^php[0-9.]+-php-fpm ]] || [[ "$service" =~ brepo-php-fpm[0-9.]+ ]]; then
is_fpm="yes"
fi
if [ "$service" = "iptables" ]; then
# Run the restart rules for iptables firewall
$BIN/v-stop-firewall
@@ -64,21 +76,13 @@ for service in $service_list; do
service $service upgrade >> $log 2>&1
elif [ -z "$restart" -o "$restart" = "no" ] && [ \
"$service" = "nginx" -o \
"$service" = "apache2" -o \
"$service" = "httpd" -o \
"$service" = "exim4" -o \
"$service" = "dovecot" -o \
"$service" = "bind9" -o \
"$service" = "named" -o \
"$service" = "vsftpd" -o \
"$service" = "php5.6-fpm" -o \
"$service" = "php7.0-fpm" -o \
"$service" = "php7.1-fpm" -o \
"$service" = "php7.2-fpm" -o \
"$service" = "php7.3-fpm" -o \
"$service" = "php7.4-fpm" -o \
"$service" = "php8.0-fpm" -o \
"$service" = "php8.1-fpm" -o \
"$service" = "php8.2-fpm" -o \
"$is_fpm" = "yes" -o \
"$service" = "proftpd" -o \
"$service" = "ssh" -o \
"$service" = "fail2ban" ]; then

View File

@@ -58,21 +58,21 @@ tmpfile=$(mktemp)
if [ -z "$version" ]; then
# Substitute php-fpm service name formats
for version in $($BIN/v-list-sys-php plain); do
if [ -f /etc/redhat-release ]; then
v_php="php$version-php-fpm"
if [ "$LOCAL_PHP" == "yes" ]; then
v_php="brepo-php-fpm$version"
else
v_php="php$version-fpm"
v_php="php$version-php-fpm"
fi
if [ -f /etc/redhat-release ]; then
if [ "$LOCAL_PHP" == "yes" ]; then
if [ ! -f "/opt/brepo/php${version}/etc/php-fpm.d/dummy.conf" ]; then
cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /opt/brepo/php${version}/etc/php-fpm.d/
sed -i "s/9999/99$v_tpl/g" /opt/brepo/php${version}/etc/php-fpm.d/dummy.conf
fi
else
if [ ! -f "/etc/opt/remi/php${version}/php-fpm.d/dummy.conf" ]; then
cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf /etc/opt/remi/php${version}/php-fpm.d/
sed -i "s/9999/99$v_tpl/g" /etc/opt/remi/php${version}/php-fpm.d/dummy.conf
fi
else
if [ ! -f "/etc/php/${version}/fpm/pool.d/dummy.conf" ]; then
cp -f "$HESTIA_INSTALL_DIR/php-fpm/dummy.conf" "/etc/php/${version}/fpm/pool.d/"
sed -i "s/9999/99${version//./}/g" "/etc/php/${version}/fpm/pool.d/dummy.conf"
fi
fi
$BIN/v-restart-service "$v_php" "$restart"
@@ -82,10 +82,10 @@ if [ -z "$version" ]; then
fi
done
else
if [ -f /etc/redhat-release ]; then
v_php="php$version-php-fpm"
if [ "$LOCAL_PHP" == "yes" ]; then
v_php="brepo-php-fpm$version"
else
v_php="php$version-fpm"
v_php="php$version-php-fpm"
fi
$BIN/v-restart-service "$v_php" "$restart"
if [ $? -ne 0 ]; then

View File

@@ -43,6 +43,15 @@ if [ "$clicmd" = "wp" ]; then
clicmd="$homedir/.wp-cli/wp"
fi
if [[ "$clicmd" =~ php[0-9][0-9] ]]; then
php_ver=$(echo "$clicmd" | grep -oP "\d+")
if [ "$LOCAL_PHP" == "yes" ]; then
clicmd="/opt/brepo/php${php_ver}/bin/php"
else
clicmd="/usr/bin/php${php_ver}"
fi
fi
if [ -z "$(which "$clicmd")" ]; then
check_result "$E_NOTEXIST" "Cli command does not exist $clicmd"
fi
@@ -61,15 +70,6 @@ if [ "$basecmd" != 'ps' -a \
"$basecmd" != 'egrep' -a \
"$basecmd" != 'sed' -a \
"$basecmd" != 'cat' -a \
"$basecmd" != 'php5.6' -a \
"$basecmd" != 'php7.0' -a \
"$basecmd" != 'php7.1' -a \
"$basecmd" != 'php7.2' -a \
"$basecmd" != 'php7.3' -a \
"$basecmd" != 'php7.4' -a \
"$basecmd" != 'php8.0' -a \
"$basecmd" != 'php8.1' -a \
"$basecmd" != 'php8.2' -a \
"$basecmd" != 'php' -a \
"$basecmd" != "wp" -a \
"$basecmd" != 'composer' ]; then

View File

@@ -50,11 +50,22 @@ for webtpl_folder in $(ls $HESTIA_INSTALL_DIR/templates/web/* -d 2> /dev/null |
cp -rf "${webtpl_folder}" "${WEBTPL}/"
done
versions_list=$(ls -d /etc/opt/remi/php*)
for php_ver in $versions_list; do
[ ! -d "$php_ver/fpm/pool.d/" ] && continue
cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl ${WEBTPL}/php-fpm/PHP-${php_ver/\./_}.tpl
done
versions_list=""
if [ "$LOCAL_PHP" == "yes" ]; then
versions_list=$(ls -d /opt/brepo/php*)
for php_ver in $versions_list; do
[ ! -d "$php_ver/etc/php-fpm.d" ] && continue
vers=$(echo "$php_ver" | awk -F"/" '{ print $4 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl ${WEBTPL}/php-fpm/PHP-${vers/\./_}.tpl
done
else
versions_list=$(ls -d /etc/opt/remi/php*)
for php_ver in $versions_list; do
[ ! -d "$php_ver/php-fpm.d" ] && continue
vers=$(echo "$php_ver" | awk -F"/" '{ print $5 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl ${WEBTPL}/php-fpm/PHP-${vers/\./_}.tpl
done
fi
if [ -n "$awstats_patch" ]; then
# restore LoadPlugin variable

View File

@@ -24,7 +24,7 @@ export default defineConfig({
socialLinks: [
{ icon: 'github', link: 'https://dev.brepo.ru/bayrepo/hestiacp' },
{ icon: 'github', link: 'https://github.com/bayrepo/hestiacp' },
{ icon: 'github', link: 'https://github.com/bayrepo/hestiacp-rpm' },
{ icon: 'github', link: 'https://github.com/hestiacp/hestiacp' },
],
@@ -151,6 +151,7 @@ function sidebarDocs() {
items: [
{ text: 'PHP cli селектор', link: '/docs/extensions/php-cli-selector.md' },
{ text: 'Расширенные модули', link: '/docs/extensions/extended-modules.md' },
{ text: 'Настройка Local PHP', link: '/docs/extensions/local-php.md' },
],
},
];

View File

@@ -38,6 +38,7 @@
- **puppet_installer** - установить puppet, для большинства модулей требуется puppet для изменения конфигурации системы, поэтому требуется, чтоб этот модуль был включен, при включении он установит puppet в систему.
- **empty_module** - пустой модуль, его включение или выключение не начто не влияет, является примером написания модулей
- **passenger_manager** - модуль по установке и настройке passenger в систему.
- **php_brepo_modules** - модуль по управлению расширениями Local PHP. [Описание интерфейса](/docs/extensions/local-php.md)
## Управление модулями из командной строки

View File

@@ -0,0 +1,35 @@
# Local PHP
PHP интерпретатор из репозитория, из которого ставится HestiaCP RPM Edition.
HestiaCP RPM Edition имеет возможность работать или с PHP из Remi репозитория или с PHP из т.н. локального репозитория - Local PHP.
Если требуется более расширенный функционал пакетов из Remi репозитория, то следует отказаться при установке панели от опции `uselocalphp yes` и установить панель с опцией `uselocalphp no`.
Local PHP более ограниченный в наборе расширений, но занимает меньше места на диске и приносит меньше RPM пакетов. Подходит для большинства сборок CMS таких как Wordpress, Drupal и т.д.
Есть еще одна особенность, для данного типа PHP разработан графический интерфейс по управлению подключенными расширениями.
## Графический интерфейс управления расширениями PHP
Для включения графического интерфейса необходимо перейти в настройки панели под администратором и выбрать закладку "Дополнительные модули".
![ext_modules_step2](/images/ext_modules_step2.png)
На окрывшейся веб странице необходимо активировать модуль **php_brepo_modules**.
![local_php_step1](/images/local_php_1.png)
Справа от названия модуля появится пункт меню - `Изменить`.
При нажатии мышкой на ссылку `Изменить`, откроется окно выбора версии PHP, для которой требуется перенастройка расширений.
![local_php_step2](/images/local_php_2.png)
Здесь будут отображаться все установленные на сервере версии Local PHP. Для настройки модулей необходимо нажать мышкой на шестеренке справа от версии PHP (<i class="fa-solid fa-gear icon-purple"></i>), в пункте меню `Изменить список модулей` <i class="fa-solid fa-gear icon-purple"></i>.
Откроется страница выбора расширений.
![local_php_step3](/images/local_php_3.png)
Здесь приведен список установленных расширений. Галочками подсвечены активные расширения.
Здесь можно убрать галочки напротив названия модуля или наоборот установить галочку. И нажать `Сохранить` для изменения конфигурации расширений для выбранной версии PHP или `Назад`, для отмены изменений.

View File

@@ -60,3 +60,4 @@
- [PHP cli селектор](/docs/extensions/php-cli-selector.md)
- [Расширенные модули](/docs/extensions/extended-modules.md)
- [Настройка Local PHP](/docs/extensions/local-php.md)

View File

@@ -101,6 +101,7 @@ bash hst-install.sh -h
-l, --lang Default language default: en
-y, --interactive Interactive install [yes|no] default: yes
-I, --nopublicip Use local ip [yes|no] default: yes
-u, --uselocalphp Use PHP from local repo [yes|no] default: yes
-s, --hostname Set hostname
-e, --email Set admin email
-p, --password Set admin password
@@ -118,14 +119,14 @@ bash hst-install.sh \
--hostname host.domain.tld \
--email email@domain.tld \
--password p4ssw0rd \
--lang fr \
--lang ru \
--apache no \
--named no \
--clamav no \
--spamassassin no
```
Эта команда установит Hestia на французском с такой конфигурацией:
Эта команда установит Hestia на русском с такой конфигурацией:
- Nginx веб сервер
- PHP-FPM сервер приложений
@@ -140,3 +141,11 @@ bash hst-install.sh \
К настоящему моменту у вас должна быть установлена Hestia на вашем сервере. Вы готовы добавлять новых пользователей, чтобы вы (или они) могли добавлять новые веб-сайты на вашем сервере.
Чтобы получить доступ к панели управления, перейдите по адресу `https://host.domain.tld:8083` или `http://your.public.ip.address:8083`
## Расширенные опции RPM версии
Данная реадкция HestiaCP RPM Edition включает дополнительные оции такие как:
- `-I, --nopublicip` - если установлена данная опция, то установщик панели не получает внешний IP адрес сервера, где контрольная панель устанавливается (на случай если ваш сервер за NAT). Данную опцию можно включать, если у вас на сервере публичный IP или необходима внутрисетевая установка без внешнего доступа.
- `-u, --uselocalphp` - включить установку пакетов PHP из того-же репозитория, откуда ставится HestiaCP RPM Edition. Если не включать данную опцию, то PHP пакеты будут установлены из репозитория Remi. Если включить, то будет произведена так называемая установка локальных пакетов. Есть отличия в способе упаковке Local PHP и Remi PHP. Если сервера требуется расширенный набор PHP из Remi репозитория, то данную опцию лучше отключить, т.е задать `--uselocalphp no`. Local PHP более простая сборка с меньшим числом поддерживаемых модулей PHP, но подходит для большинства конфигураций CMS и имеет [страницу настройки подключаемых модулей](/docs/extensions/local-php.md)

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -101,34 +101,33 @@ is_web_alias_new() {
prepare_web_backend() {
# Accept first function argument as backend template otherwise fallback to $template global variable
local backend_template=${1:-$template}
if [ -f "/etc/redhat-release" ]; then
pool=$(find -L /etc/opt/remi/php80/ -name "$domain.conf" -exec dirname {} \; 2>/dev/null)
php_type=$(cat "$HESTIA/conf/hestia.conf" | grep "LOCAL_PHP" | grep "yes")
if [ -n "$php_type" ]; then
pool=$(find -L /opt/brepo/ -name "$domain.conf" -exec dirname {} \; 2>/dev/null)
else
pool=$(find -L /etc/php/ -name "$domain.conf" -exec dirname {} \;)
pool=$(find -L /etc/opt/remi/php80/ -name "$domain.conf" -exec dirname {} \; 2>/dev/null)
fi
# Check if multiple-PHP installed
if [ -f "/etc/redhat-release" ]; then
regex="^.*PHP-([0-9])([0-9])$"
else
regex="^.*PHP-([0-9])\_([0-9])$"
fi
regex="^.*PHP-([0-9])([0-9])$"
if [[ $backend_template =~ $regex ]]; then
if [ -f "/etc/redhat-release" ]; then
if [ -n "$php_type" ]; then
backend_version="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
pool=$(find -L /opt/brepo/php$backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \))
else
backend_version="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
pool=$(find -L /etc/opt/remi/php$backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \))
else
backend_version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
pool=$(find -L /etc/php/$backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \))
fi
else
backend_version=$(multiphp_default_version)
if [ -z "$pool" ] || [ -z "$BACKEND" ]; then
if [ -f "/etc/redhat-release" ]; then
if [ -n "$php_type" ]; then
m_backend_version="${backend_version//./}"
pool=$(find -L /opt/brepo/php$m_backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \))
else
m_backend_version="${backend_version//./}"
pool=$(find -L /etc/opt/remi/php$m_backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \))
else
pool=$(find -L /etc/php/$backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \))
fi
fi
fi
@@ -151,11 +150,12 @@ prepare_web_backend() {
# Delete web backend
delete_web_backend() {
if [ -f "/etc/redhat-release" ]; then
find -L /etc/opt/remi/ -name "$backend_type.conf" -exec rm -f {} \;
else
find -L /etc/php/ -type f -name "$backend_type.conf" -exec rm -f {} \;
fi
php_type=$(cat "$HESTIA/conf/hestia.conf" | grep "LOCAL_PHP" | grep "yes")
if [ -n "$php_type" ]; then
find -L /opt/brepo/php* -name "$backend_type.conf" -exec rm -f {} \;
else
find -L /etc/opt/remi/ -name "$backend_type.conf" -exec rm -f {} \;
fi
}
# Prepare web aliases

View File

@@ -1449,6 +1449,56 @@ check_backup_conditions() {
done
}
fn_get_link_name(){
str_result=""
ext_name=$1
pattern=("01-ioncube.ini" "10-opcache.ini" "20-bcmath.ini" "20-bz2.ini" "20-calendar.ini" "20-ctype.ini" "20-curl.ini" "20-dba.ini" "20-dom.ini" "20-enchant.ini" "20-exif.ini" "20-ffi.ini" "20-fileinfo.ini" "20-ftp.ini" "20-gd.ini" "20-gettext.ini" "20-gmp.ini" "20-iconv.ini" "20-imap.ini" "20-intl.ini" "20-ldap.ini" "20-mbstring.ini" "20-mysqlnd.ini" "20-odbc.ini" "20-pdo.ini" "20-phar.ini" "20-posix.ini" "20-pspell.ini" "20-shmop.ini" "20-simplexml.ini" "20-sockets.ini" "20-sqlite3.ini" "20-sysvmsg.ini" "20-sysvsem.ini" "20-sysvshm.ini" "20-tokenizer.ini" "20-xml.ini" "20-xmlwriter.ini" "20-xsl.ini" "30-mysqli.ini" "30-pdo_dblib.ini" "30-pdo_firebird.ini" "30-pdo_mysql.ini" "30-pdo_odbc.ini" "30-pdo_sqlite.ini" "30-xmlreader.ini" "30-zip.ini" "40-apcu.ini" "40-ast.ini" "40-bolt.ini" "40-brotli.ini" "40-geos.ini" "40-imagick.ini" "40-libvirt-php.ini" "40-lz4.ini" "40-pdlib.ini")
check="^[0-9]+-${ext_name}.ini"
for str in ${pattern[@]}; do
if [[ $str =~ $check ]]; then
str_result="$str"
break
fi
done
if [ -z "$str_result" ]; then
echo "50-${ext_name}.ini"
else
echo "$str_result"
fi
}
fn_enable_local_php_extension(){
vers=$1
ext_name=$2
ext_nm=$(fn_get_link_name "$ext_name")
if [ -e "/opt/brepo/php${vers}/etc/php.d/" ]; then
if [ ! -e "/opt/brepo/php${vers}/etc/php.d/${ext_nm}" -a -e "/opt/brepo/php${vers}/etc/mod-installed/${ext_name}.ini" ]; then
pushd "/opt/brepo/php${vers}/etc/php.d/"
ln -s ../mod-installed/${ext_name}.ini /opt/brepo/php${vers}/etc/php.d/${ext_nm}
popd
fi
fi
}
fn_disable_local_php_extension(){
vers=$1
ext_name=$2
ext_nm=$(fn_get_link_name "$ext_name")
if [ -e "/opt/brepo/php${vers}/etc/php.d/" ]; then
if [ -e "/opt/brepo/php${vers}/etc/php.d/${ext_nm}" ]; then
rm -f "/opt/brepo/php${vers}/etc/php.d/${ext_nm}"
fi
fi
}
fn_enable_mod_php(){
vers=$1
if [ -e "/etc/httpd/conf.d.prep/php${vers}.conf" ]; then
ln -s /etc/httpd/conf.d.prep/php${vers}.conf /etc/httpd/conf.h.d/mod_php${vers}.conf
fi
}
# Define download function
download_file() {
local url=$1
@@ -1511,9 +1561,16 @@ multiphp_count() {
multiphp_versions() {
local -a php_versions_list
local php_ver
local php_type_internal=$(cat "$HESTIA/conf/hestia.conf" | grep "LOCAL_PHP" | grep "yes")
local pool_internal=""
if [ "$(multiphp_count)" -gt 0 ]; then
for php_ver in $($BIN/v-list-sys-php plain); do
[ ! -d "/etc/php/$php_ver/fpm/pool.d/" ] && continue
if [ -n "$php_type_internal" ]; then
pool_internal="/opt/brepo/php$php_ver/etc/php-fpm.d"
else
pool_internal="/etc/opt/remi/php$php_ver/php-fpm.d"
fi
[ ! -d "$pool_internal" ] && continue
php_versions_list+=($php_ver)
done
echo "${php_versions_list[@]}"
@@ -1522,11 +1579,19 @@ multiphp_versions() {
multiphp_default_version() {
# Get system wide default php version (set by update-alternatives)
local sys_phpversion=$(php -r "echo substr(phpversion(),0,3);")
local sys_phpversion_l=$(php -r "echo substr(phpversion(),0,3);")
local sys_phpversion="${sys_phpversion_l//./}"
local php_type_internal=$(cat "$HESTIA/conf/hestia.conf" | grep "LOCAL_PHP" | grep "yes")
local pool_internal=""
if [ -n "$php_type_internal" ]; then
pool_internal="/opt/brepo/php$sys_phpversion/etc/php-fpm.d"
else
pool_internal="/etc/opt/remi/php$sys_phpversion/php-fpm.d"
fi
# Check if the system php also has php-fpm enabled, otherwise return
# the most recent php version which does have it installed.
if [ ! -d "/etc/php/$sys_phpversion/fpm/pool.d/" ]; then
if [ ! -d "$pool_internal" ]; then
local all_versions="$(multiphp_versions)"
if [ -n "$all_versions" ]; then
sys_phpversion="${all_versions##*\ }"
@@ -1730,4 +1795,31 @@ get_conf_d_name(){
else
echo "conf.d"
fi
}
# Get default php version
# hestia.conf should be enabled before function
get_system_default_php(){
declare -a local_versions
if [ "$LOCAL_PHP" == "yes" ]; then
for version in /opt/brepo/php*/etc/php-fpm.d/www.conf; do
local_ver=$(echo "$version" | awk -F"/" '{ print $4 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
if [ "$local_ver" != "php*" ]; then
local_versions+=("$local_ver")
fi
done
else
for version in /etc/opt/remi/php*/php-fpm.d/www.conf; do
local_ver=$(echo "$version" | awk -F"/" '{ print $5 }' | sed "s/php\([[:digit:]]\+\)/\1/g")
if [ "$local_ver" != "php*" ]; then
local_versions+=("$local_ver")
fi
done
fi
if [ ${#local_versions[@]} -eq 0 ]; then
local_php_ver="82"
else
local_php_ver="${local_versions[0]}"
fi
echo "$local_php_ver"
}

View File

@@ -0,0 +1,256 @@
#!/opt/brepo/ruby33/bin/ruby
class EmptyWorker < Kernel::ModuleCoreWorker
MODULE_ID = "php_brepo_modules"
def info
{
ID: 4,
NAME: MODULE_ID,
DESCR: "Module for managing of php modules for php's from brepo repository",
REQ: "",
CONF: "yes",
}
end
def enable
if $LOCAL_PHP == "yes"
super
else
log_return("PHP from brepo repository not enabled")
end
end
def get_list_of_installed_php
php_list = []
lst = Dir["/opt/brepo/php*/etc/php.ini"]
if lst.length.positive?
php_list = lst.select do |item|
%r{/opt/brepo/php\d+/etc/php\.ini} =~ item
end.map do |item|
res = item.match %r{/opt/brepo/php(?<ver>\d+)/etc/php\.ini}
res[:ver]
end
end
php_list
end
def get_list_of_installed_php_modules(php_ver)
php_modules = {}
php_list = get_list_of_installed_php
if php_list.include? php_ver
lst = Dir["/opt/brepo/php#{php_ver}/etc/mod-installed/*.ini"]
php_list_m = lst.map { |item| File.basename(item, ".ini") }.select { |item| item.strip != "" && !(item =~ %r{ioncube_loader_lin_}) }
lst_enabled = Dir["/opt/brepo/php#{php_ver}/etc/php.d/*.ini"]
php_list_i = {}
lst_enabled.each do |item|
fname = File.basename(item, ".ini")
if fname.strip != ""
if File.symlink? item
fname_n = File.readlink(item)
fname_n = File.basename(fname_n, ".ini")
php_list_i[fname_n] = fname unless fname_n.strip == ""
end
end
end
php_list_m.each do |item|
php_modules[item] = "disabled"
php_modules[item] = php_list_i[item] unless php_list_i[item].nil?
end
end
php_modules
end
def get_php_module_description(module_name)
case module_name
when "bcmath"
"Модуль математических операций с числами произвольной точности"
when "curl"
"Поддержка curl функций из библиотеки libcurl"
when "dba"
"Эти функции — основа для доступа к базам данных наподобие Berkeley DB"
when "dom"
"Модуль DOM разрешает работать в PHP с XML- и HTML-документами через DOM API"
when "gd"
"Функции работы с изображениями"
when "imap"
"Эти функции позволяют работать с протоколом IMAP, а также NNTP, POP3 и локальными методами доступа к почтовому ящику."
when "intl"
"Модуль интернационализации"
when "ioncube"
"Модуль котрый производит деобфускацию кода, написанного на языке php и закодированного утилитами из набора ioncube"
when "ioncube_loader_lin_7.4"
"Модуль котрый производит деобфускацию кода, написанного на языке php и закодированного утилитами из набора ioncube"
when "json"
"Поддержка json в PHP"
when "ldap"
"Поддержка работы с LDAP в PHP"
when "mbstring"
"Поддержка работы с многобайтовыми строками"
when "memcache"
"Модуль Memcache предоставляет удобный процедурный и объектно-ориентированный интерфейс к memcached, высокоэффективному кеширующему демону, который был специально разработан для снижения нагрузки на базу данных в динамических веб приложениях"
when "mysqli"
"Модуль mysqli позволяет вам получить доступ к функциональности, которую предоставляет MySQL версии 4.1 и выше"
when "mysqlnd"
"Встроенный драйвер MySQL"
when "odbc"
"В дополнение к обычной поддержке ODBC, функции Unified ODBC в PHP позволяют получить доступ к нескольким базам данных, которые позаимствовали семантику ODBC API для реализации своего собственного API."
when "opcache"
"Модуль OPcache сохраняет предкомпилированный байт-код скриптов в разделяемой памяти. Кеширование операционного PHP-кода повышает производительность и помогает избегать загрузки и анализа скриптов при каждом запросе."
when "pdo"
"Модуль PDO определяет легковесный и непротиворечивый интерфейс доступа к базам данных в PHP."
when "pdo_dblib"
"PDO_DBLIB: драйвер модуля PDO для СУБД Microsoft SQL Server и Sybase"
when "pdo_mysql"
"PDO_MYSQL: драйвер модуля PDO для СУБД MySQL"
when "pdo_odbc"
"PDO_ODBC: драйвер модуля PDO для СУБД ODBC и DB2"
when "pdo_pgsql"
"PDO_PGSQL: драйвер модуля PDO для СУБД PostgreSQL"
when "pdo_sqlite"
"PDO_SQLITE: драйвер модуля PDO для СУБД SQLite"
when "pgsql"
"Модуль поддержки взаимодействия PHP с PostgreSQL"
when "phar"
"Модуль phar предоставляет возможность поместить целое PHP-приложение в один-единственный файл c именем phar (PHP Archive) для простого распространения и установки"
when "posix"
"Этот модуль содержит интерфейс к функциям, определённым в стандарте IEEE 1003.1 (POSIX.1), которые не доступны с помощью других средств."
when "pspell"
"Функции позволяют проверять правописание слова и предлагают варианты исправления."
when "snmp"
"Модуль SNMP предоставляет простой и удобный набор инструментов для управления удалёнными устройствами через Simple Network Management Protocol (простой протокол управления сетями)"
when "soap"
"Модуль SOAP может использоваться для написания как серверной, так и клиентской части. Он реализует спецификации » SOAP 1.1, » SOAP 1.2 и » WSDL 1.1."
when "sodium"
"Sodium — современная, простая в работе программная библиотека для шифрования и дешифрования данных, выполнения операций с подписями, хеширования паролей и других криптографических целей"
when "sysvmsg"
"Модуль поддержки сообщений System V"
when "sysvsem"
"Поддержка семафоров"
when "sysvshm"
"Поддержка разделяемой памяти"
when "tidy"
"Модуль коррекции разметки tidy"
when "xmlreader"
"Модуль XMLReader — синтаксический анализатор XML-документов"
when "xmlrpc"
"Функции модуля помогают писать клиентский или серверный код по правилам стандарта XML-RPC"
when "xmlwriter"
"Модуль XMLWriter оборачивает API-интерфейс парсера xmlWriter, который входит в состав модуля libxml."
when "xsl"
"Модуль XSL реализует XSL-стандарт путём XSLT-преобразований, которые выполняет через библиотеку libxslt"
when "zip"
"Модуль позволяет легко читать и записывать как в сами сжатые ZIP-архивы, так и в файлы внутри них"
else
"нет описания"
end
end
def disable_module(php_ver, module_name)
php_mods = get_list_of_installed_php_modules(php_ver)
return if php_mods[module_name].nil?
if File.exist? ("/opt/brepo/php#{php_ver}/etc/php.d/#{php_mods[module_name]}.ini")
File.unlink("/opt/brepo/php#{php_ver}/etc/php.d/#{php_mods[module_name]}.ini")
end
end
def enable_module(php_ver, module_name)
php_mods = get_list_of_installed_php_modules(php_ver)
return if php_mods[module_name].nil?
if php_mods[module_name] == "disabled"
case module_name
when "opcache"
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/10-#{module_name}.ini")
when "mysqli", "pdo_mysql", "xmlreader", "zip"
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/30-#{module_name}.ini")
else
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/20-#{module_name}.ini")
end
end
end
def command(args)
return log_return("Not enough arguments. Needed command") if args.length < 1
m_command = args[0].strip
case m_command
when "php_list"
result = get_list_of_installed_php.map { |item| { "PHPVER" => item } }
format = (args[1].nil? ? "shell" : args[1].strip)
hestia_print_array_of_hashes(result, format, "PHPVER")
ACTION_OK
when "php_modules"
vers = args[1]
if vers.nil?
log_return("Verssion should be specified. #{args}")
else
vers = vers.strip
modules_list = get_list_of_installed_php_modules(vers)
m_keys = modules_list.keys.sort
result = []
m_keys.each do |kk|
tmp_hash = {}
tmp_hash["PHPVER"] = vers
tmp_hash["MODNAME"] = kk
tmp_hash["STATE"] = modules_list[kk]
tmp_hash["DESCR"] = get_php_module_description(kk)
result << tmp_hash
end
format = (args[2].nil? ? "shell" : args[2].strip)
hestia_print_array_of_hashes(result, format, "PHPVER,MODNAME,STATE,DESCR")
ACTION_OK
end
when "php_enable"
vers = args[1]
mod_n = args[2]
if vers.nil? || mod_n.nil?
log_return("Verssion and module name should be specified. #{args}")
else
vers = vers.strip
mod_n = mod_n.strip
enable_module(vers, mod_n)
ACTION_OK
end
when "php_disable"
vers = args[1]
mod_n = args[2]
if vers.nil? || mod_n.nil?
log_return("Verssion and module name should be specified. #{args}")
else
vers = vers.strip
mod_n = mod_n.strip
disable_module(vers, mod_n)
ACTION_OK
end
when "help"
puts "#{$0} php_brepo_modules COMMAND [OPTIONS] [json|csv|plain]"
puts "COMMANDS:"
puts " php_list - list all local php installed"
puts " php_modules [php_ver] - list available php module"
puts " php_enable [php_ver] [module_name] - enable php module"
puts " php_disable [php_ver] [module_name] - disable php module"
puts " help - help"
ACTION_OK
else
log_return("Unknown command. #{args}")
end
end
implements IPluginInterface
end
module EmptyModule
def get_object
Proc.new { EmptyWorker.new }
end
module_function :get_object
end
class Kernel::PluginConfiguration
include EmptyModule
@@loaded_plugins[EmptyWorker::MODULE_ID] = EmptyModule.get_object
end

View File

@@ -1,47 +1,53 @@
{
"name": "filegator/filegator",
"description": "Filegator",
"license": "MIT",
"type": "project",
"config": {
"platform": {
"php": "7.2.5"
}
},
"require": {
"php": "^7.2",
"monolog/monolog": "^1.24",
"nikic/fast-route": "^1.3",
"symfony/security-csrf": "^4.4",
"symfony/http-foundation": "^4.4",
"dibi/dibi": "^4.1",
"php-di/php-di": "^6.0",
"rakit/validation": "^1.1",
"league/flysystem": "^1.1",
"league/flysystem-ziparchive": "^1.0",
"league/flysystem-sftp": "^1.0",
"hestiacp/phpquoteshellarg": "^1.0"
},
"authors": [
{
"name": "Milos Stojanovic",
"email": "alcalbg@gmail.com"
}
],
"autoload": {
"psr-4": {
"Filegator\\": "backend"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/backend/"
}
},
"require-dev": {
"phpunit/phpunit": "^8.0",
"symfony/var-dumper": "^4.4",
"league/flysystem-memory": "^1.0",
"phpstan/phpstan": "^0.11.8"
}
"name": "filegator/filegator",
"description": "Filegator",
"license": "MIT",
"type": "project",
"repositories": [
{
"type": "git",
"url": "https://dev.brepo.ru/brepo/phpquoteshellarg.git"
}
],
"config": {
"platform": {
"php": "8.1"
}
},
"require": {
"php": "^8.1",
"monolog/monolog": "^1.24",
"nikic/fast-route": "^1.3",
"symfony/security-csrf": "^4.4",
"symfony/http-foundation": "^4.4",
"dibi/dibi": "^4.1",
"php-di/php-di": "^6.0",
"rakit/validation": "^1.1",
"league/flysystem": "^1.1",
"league/flysystem-ziparchive": "^1.0",
"league/flysystem-sftp": "^1.0",
"brepo/phpquoteshellarg": "dev-master"
},
"authors": [
{
"name": "Milos Stojanovic",
"email": "alcalbg@gmail.com"
}
],
"autoload": {
"psr-4": {
"Filegator\\": "backend"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/backend/"
}
},
"require-dev": {
"phpunit/phpunit": "^8.0",
"symfony/var-dumper": "^4.4",
"league/flysystem-memory": "^1.0",
"phpstan/phpstan": "^2.0.3"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
# ======================================================== #
#
# Hestia Control Panel Installer for RHEL based OS
# https://www.hestiacp.com/
# https://hestiadocs.brepo.ru/
#
# Currently Supported Versions:
# Red Hat Enterprise Linux based distros
@@ -14,8 +14,6 @@
# Variables&Functions #
#----------------------------------------------------------#
export PATH=$PATH:/sbin
RHOST='rpm.hestiacp.com'
GPG='gpg.hestiacp.com'
VERSION='rhel'
HESTIA='/usr/local/hestia'
LOG="/root/hst_install_backups/hst_install-$(date +%d%m%Y%H%M).log"
@@ -40,25 +38,21 @@ HESTIA_COMMON_DIR="$HESTIA/install/common"
VERBOSE='no'
# Define software versions
HESTIA_INSTALL_VER='1.9.0~alpha'
HESTIA_INSTALL_VER='1.9.4.rpm~alpha'
# Dependencies
mariadb_v="10.11"
if [ "$release" -lt 9 ]; then
multiphp_v=("72" "73" "74" "80" "81" "82" "83")
else
multiphp_v=("74" "80" "81" "82" "83")
fi
# default PHP version
php_v="82"
php_modules_install="mysqlnd mysqli pdo_mysql pgsql pdo sqlite pdo_sqlite pdo_pgsql imap ldap zip opcache xmlwriter xmlreader gd intl pspell"
php_modules_disable=""
mod_php="enable"
software="nginx
httpd.${arch} httpd-tools httpd-itk mod_fcgid mod_suphp mod_ssl
php${php_v}-php.${arch} php${php_v}-php-cgi.${arch} php${php_v}-php-mysqlnd.${arch} php${php_v}-php-pgsql.${arch}
php${php_v}-php-pdo php${php_v}-php-common php${php_v}-php-pecl-imagick php${php_v}-php-imap php${php_v}-php-ldap
php${php_v}-php-pecl-apcu php${php_v}-php-pecl-zip php${php_v}-php-cli php${php_v}-php-opcache php${php_v}-php-xml
php${php_v}-php-gd php${php_v}-php-intl php${php_v}-php-mbstring php${php_v}-php-pspell php${php_v}-php-readline
MariaDB-client MariaDB-common MariaDB-server
mysql.${arch} mysql-common mysql-server
postgresql-server postgresql sqlite.${arch}
@@ -97,6 +91,7 @@ help() {
-l, --lang Default language default: en
-y, --interactive Interactive install [yes|no] default: yes
-I, --nopublicip Use local ip [yes|no] default: yes
-u, --uselocalphp Use PHP from local repo [yes|no] default: yes
-s, --hostname Set hostname
-e, --email Set admin email
-p, --password Set admin password
@@ -208,6 +203,56 @@ validate_email() {
fi
}
get_link_name(){
str_result=""
ext_name=$1
pattern=("01-ioncube.ini" "10-opcache.ini" "20-bcmath.ini" "20-bz2.ini" "20-calendar.ini" "20-ctype.ini" "20-curl.ini" "20-dba.ini" "20-dom.ini" "20-enchant.ini" "20-exif.ini" "20-ffi.ini" "20-fileinfo.ini" "20-ftp.ini" "20-gd.ini" "20-gettext.ini" "20-gmp.ini" "20-iconv.ini" "20-imap.ini" "20-intl.ini" "20-ldap.ini" "20-mbstring.ini" "20-mysqlnd.ini" "20-odbc.ini" "20-pdo.ini" "20-phar.ini" "20-posix.ini" "20-pspell.ini" "20-shmop.ini" "20-simplexml.ini" "20-sockets.ini" "20-sqlite3.ini" "20-sysvmsg.ini" "20-sysvsem.ini" "20-sysvshm.ini" "20-tokenizer.ini" "20-xml.ini" "20-xmlwriter.ini" "20-xsl.ini" "30-mysqli.ini" "30-pdo_dblib.ini" "30-pdo_firebird.ini" "30-pdo_mysql.ini" "30-pdo_odbc.ini" "30-pdo_sqlite.ini" "30-xmlreader.ini" "30-zip.ini" "40-apcu.ini" "40-ast.ini" "40-bolt.ini" "40-brotli.ini" "40-geos.ini" "40-imagick.ini" "40-libvirt-php.ini" "40-lz4.ini" "40-pdlib.ini")
check="^[0-9]+-${ext_name}.ini"
for str in ${pattern[@]}; do
if [[ $str =~ $check ]]; then
str_result="$str"
break
fi
done
if [ -z "$str_result" ]; then
echo "50-${ext_name}.ini"
else
echo "$str_result"
fi
}
enable_local_php_extension(){
vers=$1
ext_name=$2
ext_nm=$(get_link_name "$ext_name")
if [ -e "/opt/brepo/php${vers}/etc/php.d/" ]; then
if [ ! -e "/opt/brepo/php${vers}/etc/php.d/${ext_nm}" -a -e "/opt/brepo/php${vers}/etc/mod-installed/${ext_name}.ini" ]; then
pushd "/opt/brepo/php${vers}/etc/php.d/"
ln -s ../mod-installed/${ext_name}.ini /opt/brepo/php${vers}/etc/php.d/${ext_nm}
popd
fi
fi
}
disable_local_php_extension(){
vers=$1
ext_name=$2
ext_nm=$(get_link_name "$ext_name")
if [ -e "/opt/brepo/php${vers}/etc/php.d/" ]; then
if [ -e "/opt/brepo/php${vers}/etc/php.d/${ext_nm}" ]; then
rm -f "/opt/brepo/php${vers}/etc/php.d/${ext_nm}"
fi
fi
}
enable_mod_php(){
vers=$1
if [ -e "/etc/httpd/conf.d.prep/php${vers}.conf" ]; then
ln -s /etc/httpd/conf.d.prep/php${vers}.conf /etc/httpd/conf.h.d/mod_php${vers}.conf
fi
}
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
@@ -247,6 +292,7 @@ for arg; do
--with-debs) args="${args}-D " ;;
--help) args="${args}-h " ;;
--nopublicip) args="${args}-I " ;;
--uselocalphp) args="${args}-u" ;;
*)
[[ "${arg:0:1}" == "-" ]] || delim="\""
args="${args}${delim}${arg}${delim} "
@@ -256,7 +302,7 @@ done
eval set -- "$args"
# Parsing arguments
while getopts "I:a:w:v:j:k:m:M:g:d:x:z:Z:c:t:i:b:r:o:q:l:y:s:e:p:R:fh" Option; do
while getopts "u:I:a:w:v:j:k:m:M:g:d:x:z:Z:c:t:i:b:r:o:q:l:y:s:e:p:R:fh" Option; do
case $Option in
a) apache=$OPTARG ;; # Apache
w) phpfpm=$OPTARG ;; # PHP-FPM
@@ -286,6 +332,7 @@ while getopts "I:a:w:v:j:k:m:M:g:d:x:z:Z:c:t:i:b:r:o:q:l:y:s:e:p:R:fh" Option; d
f) force='yes' ;; # Force install
h) help ;; # Help
I) nopublicip=$OPTARG ;; # NoPublicIP
u) uselocalphp=$OPTARG ;; # UseLocalPHP
*) help ;; # Print help (default)
esac
done
@@ -322,6 +369,7 @@ set_default_value 'api' 'yes'
set_default_value 'nopublicip' 'yes'
set_default_port '8083'
set_default_lang 'en'
set_default_value 'uselocalphp' 'yes'
# Checking software conflicts
if [ "$proftpd" = 'yes' ]; then
@@ -462,23 +510,23 @@ esac
install_welcome_message() {
DISPLAY_VER=$(echo $HESTIA_INSTALL_VER | sed "s|~alpha||g" | sed "s|~beta||g")
echo
echo ' _ _ _ _ ____ ____ '
echo ' | | | | ___ ___| |_(_) __ _ / ___| _ \ '
echo ' | |_| |/ _ \/ __| __| |/ _` | | | |_) | '
echo ' | _ | __/\__ \ |_| | (_| | |___| __/ '
echo ' |_| |_|\___||___/\__|_|\__,_|\____|_| '
echo ' _ _ _ _ ____ ____ '
echo ' | | | | ___ ___| |_(_) __ _ / ___| _ \ _ _ . . '
echo ' | |_| |/ _ \/ __| __| |/ _` | | | |_) | | \| \|\/| '
echo ' | _ | __/\__ \ |_| | (_| | |___| __/ |_/|_/| | '
echo ' |_| |_|\___||___/\__|_|\__,_|\____|_| | \| | | '
echo " "
echo " Hestia Control Panel "
echo " Hestia Control Panel(rpm edition) "
if [[ "$HESTIA_INSTALL_VER" =~ "beta" ]]; then
echo " BETA RELEASE "
fi
if [[ "$HESTIA_INSTALL_VER" =~ "alpha" ]]; then
echo " DEVELOPMENT SNAPSHOT "
echo " NOT INTENDED FOR PRODUCTION USE "
echo " USE AT YOUR OWN RISK "
fi
echo " ${DISPLAY_VER} "
echo " www.hestiacp.com "
echo " hestiadocs.brepo.ru "
echo " Original: www.hestiacp.com "
echo
echo "========================================================================"
echo
@@ -684,7 +732,19 @@ echo "[ * ] NGINX"
# Installing Remi PHP repo
echo "[ * ] PHP"
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-$release.rpm
php_pkgs_lst=""
if [ "$uselocalphp" == "yes" ]; then
write_config_value "LOCAL_PHP" "yes"
php_pkgs_lst="brepo-php${php_v} brepo-php${php_v}-mod-apache"
else
write_config_value "LOCAL_PHP" "no"
php_pkgs_lst="php${php_v}-php.${arch} php${php_v}-php-cgi.${arch} php${php_v}-php-mysqlnd.${arch} php${php_v}-php-pgsql.${arch}
php${php_v}-php-pdo php${php_v}-php-common php${php_v}-php-pecl-imagick php${php_v}-php-imap php${php_v}-php-ldap
php${php_v}-php-pecl-apcu php${php_v}-php-pecl-zip php${php_v}-php-cli php${php_v}-php-opcache php${php_v}-php-xml
php${php_v}-php-gd php${php_v}-php-intl php${php_v}-php-mbstring php${php_v}-php-pspell php${php_v}-php-readline"
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-$release.rpm
fi
software="$software $php_pkgs_lst"
# Installing MariaDB repo
if [ "$mysql" = 'yes' ]; then
@@ -805,10 +865,14 @@ rm -rf $HESTIA > /dev/null 2>&1
#----------------------------------------------------------#
if [ "$phpfpm" = 'yes' ]; then
fpm="php${php_v}-php-fpm php${php_v}-php-cgi.${arch} php${php_v}-php-mysqlnd.${arch} php${php_v}-php-pgsql.${arch}
php${php_v}-php-pdo php${php_v}-php-common php${php_v}-php-pecl-imagick php${php_v}-php-imap php${php_v}-php-ldap
php${php_v}-php-pecl-apcu php${php_v}-php-pecl-zip php${php_v}-php-cli php${php_v}-php-opcache php${php_v}-php-xml
php${php_v}-php-gd php${php_v}-php-intl php${php_v}-php-mbstring php${php_v}-php-pspell php${php_v}-php-readline"
if [ "$uselocalphp" == "yes" ]; then
fpm="brepo-php${php_v}-fpm"
else
fpm="php${php_v}-php-fpm php${php_v}-php-cgi.${arch} php${php_v}-php-mysqlnd.${arch} php${php_v}-php-pgsql.${arch}
php${php_v}-php-pdo php${php_v}-php-common php${php_v}-php-pecl-imagick php${php_v}-php-imap php${php_v}-php-ldap
php${php_v}-php-pecl-apcu php${php_v}-php-pecl-zip php${php_v}-php-cli php${php_v}-php-opcache php${php_v}-php-xml
php${php_v}-php-gd php${php_v}-php-intl php${php_v}-php-mbstring php${php_v}-php-pspell php${php_v}-php-readline"
fi
software="$software $fpm"
fi
@@ -825,6 +889,8 @@ if [ "$apache" = 'no' ]; then
software=$(echo "$software" | sed -e "s/mod_fcgid//")
software=$(echo "$software" | sed -e "s/mod_ssl//")
software=$(echo "$software" | sed -e "s/php${php_v}-php.${arch}//")
software=$(echo "$software" | sed -e "s/brepo-php${php_v}-mod-apache//")
mod_php="disable"
fi
if [ "$vsftpd" = 'no' ]; then
software=$(echo "$software" | sed -e "s/vsftpd//")
@@ -873,6 +939,9 @@ if [ "$postgresql" = 'no' ]; then
software=$(echo "$software" | sed -e "s/postgresql-server//")
software=$(echo "$software" | sed -e "s/php${php_v}-php-pgsql.${arch}//")
software=$(echo "$software" | sed -e "s/phppgadmin//")
php_modules_install=$(echo "$php_modules_install" | sed -e "s/pgsql//")
php_modules_install=$(echo "$php_modules_install" | sed -e "s/pdo_pgsql//")
php_modules_disable="$php_modules_disable pgsql pdo_pgsql"
fi
if [ "$fail2ban" = 'no' ]; then
software=$(echo "$software" | sed -e "s/fail2ban//")
@@ -888,6 +957,8 @@ if [ "$phpfpm" = 'yes' ]; then
software=$(echo "$software" | sed -e "s/mod_suphp//")
software=$(echo "$software" | sed -e "s/mod_fcgid//")
software=$(echo "$software" | sed -e "s/php${php_v}-php.${arch}//")
software=$(echo "$software" | sed -e "s/brepo-php${php_v}-mod-apache//")
mod_php="disable"
fi
if [ -d "$withrpms" ]; then
software=$(echo "$software" | sed -e "s/hestia-nginx//")
@@ -935,7 +1006,21 @@ echo "========================================================================"
echo
# Create PHP symlink
alternatives --install /usr/bin/php php /opt/remi/php${php_v}/root/usr/bin/php 1
if [ "$uselocalphp" == "yes" ]; then
alternatives --install /usr/bin/php php /opt/brepo/php${php_v}/bin/php 1
echo "[ * ] Configuring php settings..."
for mod in $php_modules_install; do
enable_local_php_extension "${php_v}" "$mod"
done
for mod in $php_modules_disable; do
disable_local_php_extension "${php_v}" "$mod"
done
if [ "$mod_php" == "enable" ]; then
enable_mod_php "${php_v}"
fi
else
alternatives --install /usr/bin/php php /opt/remi/php${php_v}/root/usr/bin/php 1
fi
# Install Hestia packages from local folder
if [ -n "$withrpms" ] && [ -d "$withrpms" ]; then
@@ -1066,6 +1151,12 @@ chmod 660 $HESTIA/conf/hestia.conf
# If a custom port is specified it will be set at the end of the installation process.
write_config_value "BACKEND_PORT" "8083"
if [ "$uselocalphp" == "yes" ]; then
write_config_value "LOCAL_PHP" "yes"
else
write_config_value "LOCAL_PHP" "no"
fi
# Web stack
if [ "$apache" = 'yes' ]; then
write_config_value "WEB_SYSTEM" "httpd"
@@ -1332,15 +1423,22 @@ if [ "$apache" = 'yes' ]; then
# Enable needed modules
if [ "$nginx" = "no" ]; then
dnf install -y mod_ssl mod_h2
dnf install -y mod_ssl mod_http2
fi
# IDK why those modules still here, but ok. if they are disabled by default
sed 's/^LoadModule suexec_module/#LoadModule suexec_module/' -i /etc/httpd/conf.modules.d/01-suexec.conf
sed 's/^LoadModule fcgid_module/#LoadModule fcgid_module/' -i /etc/httpd/conf.modules.d/10-fcgid.conf
if [ -e /etc/httpd/conf.modules.d/01-suexec.conf ]; then
sed 's/^LoadModule suexec_module/#LoadModule suexec_module/' -i /etc/httpd/conf.modules.d/01-suexec.conf
fi
if [ -e /etc/httpd/conf.modules.d/10-fcgid.conf ]; then
sed 's/^LoadModule fcgid_module/#LoadModule fcgid_module/' -i /etc/httpd/conf.modules.d/10-fcgid.conf
fi
# Switch status loader to custom one
sed 's/^LoadModule status_module/#LoadModule status_module/' -i /etc/httpd/conf.modules.d/00-base.conf
if [ -e /etc/httpd/conf.modules.d/00-base.conf ]; then
sed 's/^LoadModule status_module/#LoadModule status_module/' -i /etc/httpd/conf.modules.d/00-base.conf
fi
echo 'LoadModule status_module modules/mod_status.so' > /etc/httpd/conf.modules.d/00-hestia-status.conf
if [ "$phpfpm" = 'yes' ]; then
@@ -1386,12 +1484,21 @@ if [ "$phpfpm" = "yes" ]; then
echo "[ * ] Configuring PHP $php_v..."
# Create www.conf for webmail and php(*)admin
cp -f $HESTIA_INSTALL_DIR/php-fpm/www.conf /etc/opt/remi/php${php_v}/php-fpm.d
systemctl enable php${php_v}-php-fpm --now >> $LOG
check_result $? "php-fpm start failed"
# Set default php version to $php_v
alternatives --install /usr/bin/php php /usr/bin/php$php_v 1 > /dev/null 2>&1
alternatives --set php /usr/bin/php$php_v > /dev/null 2>&1
if [ "$uselocalphp" == "yes" ]; then
cp -f $HESTIA_INSTALL_DIR/php-fpm/www.conf /opt/brepo/php${php_v}/etc/php-fpm.d
systemctl enable brepo-php-fpm${php_v}.service --now >> $LOG
check_result $? "php-fpm start failed"
# Set default php version to $php_v
alternatives --install /usr/bin/php php /opt/brepo/php${php_v}/bin/php 1 > /dev/null 2>&1
alternatives --set php /opt/brepo/php${php_v}/bin/php > /dev/null 2>&1
else
cp -f $HESTIA_INSTALL_DIR/php-fpm/www.conf /etc/opt/remi/php${php_v}/php-fpm.d
systemctl enable php${php_v}-php-fpm --now >> $LOG
check_result $? "php-fpm start failed"
# Set default php version to $php_v
alternatives --install /usr/bin/php php /usr/bin/php$php_v 1 > /dev/null 2>&1
alternatives --set php /usr/bin/php$php_v > /dev/null 2>&1
fi
fi
#----------------------------------------------------------#
@@ -1399,14 +1506,24 @@ fi
#----------------------------------------------------------#
echo "[ * ] Configuring PHP..."
# Set system php for selector
hestiacp-php-admin system "$php_v"
ZONE=$(timedatectl > /dev/null 2>&1 | grep Timezone | awk '{print $2}')
if [ -z "$ZONE" ]; then
ZONE='UTC'
fi
for pconf in $(find /etc/opt/remi/php* -name php.ini); do
sed -i "s%;date.timezone =%date.timezone = $ZONE%g" $pconf
sed -i 's%_open_tag = Off%_open_tag = On%g' $pconf
done
if [ "$uselocalphp" == "yes" ]; then
for pconf in $(find /opt/brepo/php* -name php.ini); do
sed -i "s%;date.timezone =%date.timezone = $ZONE%g" $pconf
sed -i 's%_open_tag = Off%_open_tag = On%g' $pconf
done
else
for pconf in $(find /etc/opt/remi/php* -name php.ini); do
sed -i "s%;date.timezone =%date.timezone = $ZONE%g" $pconf
sed -i 's%_open_tag = Off%_open_tag = On%g' $pconf
done
fi
# Cleanup php session files not changed in the last 7 days (60*24*7 minutes)
echo '#!/bin/sh' > /etc/cron.daily/php-session-cleanup
@@ -2026,7 +2143,7 @@ write_config_value "POLICY_SYSTEM_PROTECTED_ADMIN" "no"
write_config_value "POLICY_SYSTEM_PASSWORD_RESET" "yes"
write_config_value "POLICY_SYSTEM_HIDE_SERVICES" "no"
write_config_value "POLICY_SYSTEM_ENABLE_BACON" "no"
write_config_value "PLUGIN_APP_INSTALLER" "false"
write_config_value "PLUGIN_APP_INSTALLER" "true"
write_config_value "DEBUG_MODE" "no"
write_config_value "ENFORCE_SUBDOMAIN_OWNERSHIP" "yes"
write_config_value "USE_SERVER_SMTP" "false"
@@ -2078,7 +2195,7 @@ we hope that you enjoy using it as much as we do!
Documentation: https://hestiadocs.brepo.ru/
Forum: https://forum.hestiacp.com/
GitHub: https://github.com/bayrepo/hestiacp or development storage https://dev.brepo.ru/bayrepo/hestiacp
GitHub: https://github.com/bayrepo/hestiacp-rpm or development storage https://dev.brepo.ru/bayrepo/hestiacp
Note: Automatic updates are enabled by default. If you would like to disable them,
please log in and navigate to Server > Updates to turn them off.

File diff suppressed because it is too large Load Diff

View File

@@ -4,13 +4,11 @@
#
# Hestia Control Panel Installation Routine
# Automatic OS detection wrapper
# https://www.hestiacp.com/
# https://hestiadocs.brepo.ru/
#
# Currently Supported Operating Systems:
# Supported Operating Systems:
#
# Debian 10, 11
# Ubuntu 20.04, 22.04
# AlmaLinux, EuroLinux, Red Hat EnterPrise Linux, Rocky Linux 8, 9
# AlmaLinux, EuroLinux, Red Hat EnterPrise Linux, Rocky Linux, MSVSphere 9
#
# ======================================================== #
@@ -42,21 +40,7 @@ fi
# Detect OS
if [ -e "/etc/os-release" ] && [ ! -e "/etc/redhat-release" ]; then
type=$(grep "^ID=" /etc/os-release | cut -f 2 -d '=')
if [ "$type" = "ubuntu" ]; then
# Check if lsb_release is installed
if [ -e '/usr/bin/lsb_release' ]; then
release="$(lsb_release -s -r)"
VERSION='ubuntu'
else
echo "lsb_release is currently not installed, please install it:"
echo "apt-get update && apt-get install lsb-release"
exit 1
fi
elif [ "$type" = "debian" ]; then
release=$(cat /etc/debian_version | grep -o "[0-9]\{1,2\}" | head -n1)
VERSION='debian'
fi
type="NoSupport"
elif [ -e "/etc/os-release" ] && [ -e "/etc/redhat-release" ]; then
type=$(grep "^ID=" /etc/os-release | cut -f 2 -d '"')
VERSION=$type
@@ -71,13 +55,10 @@ fi
no_support_message() {
echo "****************************************************"
echo "Your operating system (OS) is not supported by"
echo "Hestia Control Panel. Officially supported releases:"
echo "Hestia Control Panel (RPM edition). Officially supported releases:"
echo "****************************************************"
echo " Debian 10, 11"
echo " Ubuntu 20.04, 22.04 LTS"
# Commenting this out for now
echo " Red Hat Enterprise Linux 8, 9 and related versions of"
echo " AlmaLinux, Rocky Linux, Oracle Linux Server and EuroLinux"
echo " Red Hat Enterprise Linux 9 and related versions of"
echo " AlmaLinux, Rocky Linux, Oracle Linux Server and EuroLinux, MSVSphere"
echo ""
exit 1
}

View File

@@ -1,47 +1,53 @@
{
"name": "filegator/filegator",
"description": "Filegator",
"license": "MIT",
"type": "project",
"config": {
"platform": {
"php": "7.2.5"
}
},
"require": {
"php": "^7.2",
"monolog/monolog": "^1.24",
"nikic/fast-route": "^1.3",
"symfony/security-csrf": "^4.4",
"symfony/http-foundation": "^4.4",
"dibi/dibi": "^4.1",
"php-di/php-di": "^6.0",
"rakit/validation": "^1.1",
"league/flysystem": "^1.1",
"league/flysystem-ziparchive": "^1.0",
"league/flysystem-sftp": "^1.0",
"hestiacp/phpquoteshellarg": "^1.0"
},
"authors": [
{
"name": "Milos Stojanovic",
"email": "alcalbg@gmail.com"
}
],
"autoload": {
"psr-4": {
"Filegator\\": "backend"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/backend/"
}
},
"require-dev": {
"phpunit/phpunit": "^8.0",
"symfony/var-dumper": "^4.4",
"league/flysystem-memory": "^1.0",
"phpstan/phpstan": "^0.11.8"
}
"name": "filegator/filegator",
"description": "Filegator",
"license": "MIT",
"type": "project",
"repositories": [
{
"type": "git",
"url": "https://dev.brepo.ru/brepo/phpquoteshellarg.git"
}
],
"config": {
"platform": {
"php": "8.1"
}
},
"require": {
"php": "^8.1",
"monolog/monolog": "^1.24",
"nikic/fast-route": "^1.3",
"symfony/security-csrf": "^4.4",
"symfony/http-foundation": "^4.4",
"dibi/dibi": "^4.1",
"php-di/php-di": "^6.0",
"rakit/validation": "^1.1",
"league/flysystem": "^1.1",
"league/flysystem-ziparchive": "^1.0",
"league/flysystem-sftp": "^1.0",
"brepo/phpquoteshellarg": "dev-master"
},
"authors": [
{
"name": "Milos Stojanovic",
"email": "alcalbg@gmail.com"
}
],
"autoload": {
"psr-4": {
"Filegator\\": "backend"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/backend/"
}
},
"require-dev": {
"phpunit/phpunit": "^8.0",
"symfony/var-dumper": "^4.4",
"league/flysystem-memory": "^1.0",
"phpstan/phpstan": "^2.0.3"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -35,7 +35,7 @@ UPGRADE_RESTART_SERVICES='true'
#######################################################################################
# Supported PHP versions
multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2", "8.3")
#######################################################################################
####### 3rd Party Software Updates #######

View File

@@ -1,7 +1,7 @@
{
"name": "hestia",
"private": true,
"version": "1.9.2.rpm",
"version": "1.9.5.rpm",
"description": "An open-source Linux web server control panel.",
"repository": "https://github.com/hestiacp/hestiacp",
"license": "GPL-3.0-or-later",

View File

@@ -2,7 +2,7 @@
%global _hardened_build 1
Name: hestia
Version: 1.9.2
Version: 1.9.5
Release: 1%{dist}
Summary: Hestia Control Panel
Group: System Environment/Base
@@ -184,8 +184,17 @@ fi
%{_tmpfilesdir}/%{name}.conf
%changelog
* Sun Jan 05 2025 Alexey Berezhok <a@bayrepo.ru> - 1.9.2-1
* Sun Jan 19 2025 Alexey Berezhok <a@bayrepo.ru> - 1.9.5-1
- Added support alternative php
- Fixed php.ini editing
- Restore supporting some webapplications setup
* Sat Jan 11 2025 Alexey Berezhok <a@bayrepo.ru> - 1.9.4-1
- Added quota support in rpm for xfs and ext4
* Sun Jan 05 2025 Alexey Berezhok <a@bayrepo.ru> - 1.9.3-1
- Added minor fixes
- Added authorization fix for rhel 9.5
* Mon Dec 30 2024 Alexey Berezhok <a@bayrepo.ru> - 1.9.1-1
- Added port specification ofor local services on domain editing

View File

@@ -123,6 +123,9 @@ if (!empty($installer)) {
$appInstallerInfo = $app_installer->info();
$supported = false;
$supported_versions = [];
if ($appInstallerInfo["enabled"] != true) {
continue;
}
foreach ($php_versions as $version) {
if (in_array($version, $appInstallerInfo["php_support"])) {
$supported = true;

View File

@@ -29,32 +29,18 @@ exec(HESTIA_CMD . "v-list-web-templates-backend json", $output, $return_var);
$backend_templates = json_decode(implode("", $output), true);
unset($output);
exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var);
$is_rhel = str_contains(implode("", $output), "+");
unset($output);
//exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var);
//$is_rhel = str_contains(implode("", $output), "+");
//unset($output);
$v_php_versions = [
"php-5.6",
"php-7.0",
"php-7.1",
"php-7.2",
"php-7.3",
"php-7.4",
"php-8.0",
"php-8.1",
"php-8.2",
"php-74",
"php-80",
"php-81",
"php-82",
"php-83",
];
if ($is_rhel){
$v_php_versions = [
"php-74",
"php-80",
"php-81",
"php-82",
"php-83",
"php-84",
];
}
sort($v_php_versions);

View File

@@ -46,7 +46,7 @@ if (!empty($_POST["save"])) {
}
// List config
exec(HESTIA_CMD . "v-list-sys-php-config json", $output, $return_var);
exec(HESTIA_CMD . "v-list-sys-php-config default json", $output, $return_var);
$data = json_decode(implode("", $output), true);
unset($output);
$v_memory_limit = $data["CONFIG"]["memory_limit"];

View File

@@ -11,11 +11,32 @@ if ($_SESSION["userContext"] != "admin") {
exit();
}
$php_version = "default";
if (!empty($_GET["vers"])){
$php_version_tmp = trim(urldecode($_GET["vers"]));
if (preg_match('/^\d+$/', $php_version_tmp) === 1){
exec(HESTIA_CMD . "v-list-sys-php json", $output, $return_var);
$php = json_decode(implode("", $output), true);
unset($output);
foreach ($php as $version) {
if ($version == $php_version_tmp){
$php_version = $php_version_tmp;
break;
}
}
}
}
// Check POST request
if (!empty($_POST["save"])) {
// Check token
verify_csrf($_POST);
$php_save = "php";
if ($php_version != "default"){
$php_save .= $php_version;
}
// Set restart flag
$v_restart = "yes";
if (empty($_POST["v_restart"])) {
@@ -30,7 +51,7 @@ if (!empty($_POST["save"])) {
fwrite($fp, str_replace("\r\n", "\n", $_POST["v_config"]));
fclose($fp);
exec(
HESTIA_CMD . "v-change-sys-service-config " . $new_conf . " php " . $v_restart,
HESTIA_CMD . "v-change-sys-service-config " . $new_conf . " " . $php_save . " " . $v_restart,
$output,
$return_var,
);
@@ -46,7 +67,7 @@ if (!empty($_POST["save"])) {
}
// List config
exec(HESTIA_CMD . "v-list-sys-php-config json", $output, $return_var);
exec(HESTIA_CMD . "v-list-sys-php-config " . $php_version . " json", $output, $return_var);
$data = json_decode(implode("", $output), true);
unset($output);
$v_memory_limit = $data["CONFIG"]["memory_limit"];

View File

@@ -36,7 +36,7 @@ if (!empty($_POST["save"])) {
);
check_return_code($return_var, $output);
unset($output);
unlink($new_conf);
//unlink($new_conf);
}
// Set success message
@@ -46,7 +46,7 @@ if (!empty($_POST["save"])) {
}
// List config
exec(HESTIA_CMD . "v-list-sys-php-config json", $output, $return_var);
exec(HESTIA_CMD . "v-list-sys-php-config default json", $output, $return_var);
$data = json_decode(implode("", $output), true);
unset($output);
$v_memory_limit = $data["CONFIG"]["memory_limit"];

View File

@@ -0,0 +1,96 @@
<?php
use function Hestiacp\quoteshellarg\quoteshellarg;
$TAB = "EXTMODULES";
// Main include
include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
// Check user
if ($_SESSION["userContext"] != "admin") {
header("Location: /list/user");
exit();
}
exec(HESTIA_CMD . "v-ext-modules state php_brepo_modules json", $output, $return_var);
$check_passenger_enabled = json_decode(implode("", $output), true);
if (($return_var != 0) || (empty($check_passenger_enabled)) || ($check_passenger_enabled[0]["STATE"] != "enabled")){
header("Location: /list/extmodules/");
exit();
}
unset($output);
$error_message = "";
if ((!empty($_GET["ver"])) && ($_GET["ver"] != "")) {
$php_vers = $_GET["ver"];
$ver_quoted = quoteshellarg($_GET["ver"]);
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_modules " . $ver_quoted . " json", $output, $return_var);
$phps_modules = [];
if ($return_var == 0) {
$phps_modules = json_decode(implode("", $output), true);
} else {
$error_message = $output;
}
unset($output);
if (!empty($_POST["save"]) && $error_message == ""){
$new_modules = $_POST["v_php_module_name"];
$chg = false;
foreach ($new_modules as $key => $value){
if (!preg_match("/(\d\d)-.+/i", $value)){
$mod_name = quoteshellarg($value);
$chg = true;
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_enable " . $ver_quoted . " " . $mod_name, $output, $return_var);
unset($output);
}
}
foreach ($phps_modules as $key => $value){
if ($value["STATE"]!="disabled"){
$fnd = false;
foreach ($new_modules as $ikey => $ivalue){
if ($ivalue==$value["STATE"]){
$fnd = true;
break;
}
}
if (!$fnd){
$chg = true;
$mod_name = quoteshellarg($phps_modules[$key]["MODNAME"]);
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_disable " . $ver_quoted . " " . $mod_name, $output, $return_var);
unset($output);
}
}
}
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_modules " . $ver_quoted . " json", $output, $return_var);
$phps_modules = [];
if ($return_var == 0) {
$phps_modules = json_decode(implode("", $output), true);
} else {
$error_message = $output;
}
unset($output);
if ($chg){
exec(HESTIA_CMD . "v-restart-web-backend", $output, $return_var);
}
}
// Render page
render_page($user, $TAB, "extmodules/extmodules_php_brepo_modules_list");
} else {
// Data
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_list json", $output, $return_var);
$phps = [];
if ($return_var == 0) {
$phps = json_decode(implode("", $output), true);
ksort($phps);
} else {
$error_message = $output;
}
unset($output);
// Render page
render_page($user, $TAB, "extmodules/extmodules_php_brepo_modules");
}
// Back uri
$_SESSION["back"] = $_SERVER["REQUEST_URI"];

View File

@@ -1,7 +1,13 @@
{
"repositories": [
{
"type": "git",
"url": "https://dev.brepo.ru/brepo/phpquoteshellarg.git"
}
],
"require": {
"phpmailer/phpmailer": "6.8.0",
"hestiacp/phpquoteshellarg": "1.0.2",
"brepo/phpquoteshellarg": "dev-master",
"robthree/twofactorauth": "2.0.0"
}
}

38
web/inc/composer.lock generated
View File

@@ -4,45 +4,36 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "bd5fba3223573f480531e48f5e3ce14e",
"content-hash": "134682d586741e300ffeae0ccfb99351",
"packages": [
{
"name": "hestiacp/phpquoteshellarg",
"version": "v1.0.2",
"name": "brepo/phpquoteshellarg",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/hestiacp/phpquoteshellarg.git",
"reference": "7fd1a3a648cdc39a3fe2aab78a1a3a0267f92f49"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/hestiacp/phpquoteshellarg/zipball/7fd1a3a648cdc39a3fe2aab78a1a3a0267f92f49",
"reference": "7fd1a3a648cdc39a3fe2aab78a1a3a0267f92f49",
"shasum": ""
"url": "https://dev.brepo.ru/brepo/phpquoteshellarg.git",
"reference": "943298a03acc3ff7a89eff948534f90d1c6ba950"
},
"require": {
"php": ">=7.2"
"php": ">=8.0"
},
"default-branch": true,
"type": "library",
"autoload": {
"files": [
"src/Hestiacp/quoteshellarg/quoteshellarg.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Unlicense"
],
"description": "Improved escape shell arguments for support of special charactars",
"homepage": "https://github.com/hestiacp",
"homepage": "https://dev.brepo.ru/bayrepo/hestiacp",
"keywords": [
"escapeshellarg",
"quoteshellarg"
],
"support": {
"source": "https://github.com/hestiacp/phpquoteshellarg/tree/v1.0.2"
},
"time": "2023-07-23T09:16:27+00:00"
"time": "2025-02-03T20:07:58+00:00"
},
{
"name": "phpmailer/phpmailer",
@@ -209,10 +200,13 @@
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"stability-flags": {
"brepo/phpquoteshellarg": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.3.0"
"platform": {},
"platform-dev": {},
"plugin-api-version": "2.6.0"
}

View File

@@ -73,7 +73,7 @@ export default function handleEditWebListeners() {
}
});
}
if (proxyTemplateSelect.value === "srvproxy") {
if (proxyTemplateSelect !== null && proxyTemplateSelect !== undefined && proxyTemplateSelect.value === "srvproxy") {
proxyConnect.style.display = 'block';
}
}

View File

@@ -126,6 +126,7 @@ $phpfpm = [];
foreach ($php as $version) {
$phpfpm[] = "php" . $version . "-fpm";
$phpfpm[] = "php" . $version . "-php-fpm";
$phpfpm[] = "brepo-php-fpm" . $version;
}
$clamav_names = [];
$clamav_names[] = "clamav-daemon";

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-30 00:03+0300\n"
"POT-Creation-Date: 2025-02-02 21:50+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -128,9 +128,6 @@ msgstr ""
#: ../../web/templates/pages/edit_server.php:470
#: ../../web/templates/pages/edit_server.php:817
#: ../../web/templates/pages/edit_user.php:64
#: ../../web/templates/pages/edit_web.php:114
#: ../../web/templates/pages/edit_web.php:429
#: ../../web/templates/pages/edit_web.php:536
#: ../../web/templates/pages/list_db.php:65
#: ../../web/templates/pages/list_db.php:113
#: ../../web/templates/pages/list_db.php:247
@@ -138,6 +135,9 @@ msgstr ""
#: ../../web/templates/pages/login/login_a.php:14
#: ../../web/templates/pages/login/reset2fa.php:27
#: ../../web/templates/pages/login/reset_1.php:14
#: ../../web/templates/pages/edit_web.php:114
#: ../../web/templates/pages/edit_web.php:429
#: ../../web/templates/pages/edit_web.php:536
msgid "Username"
msgstr ""
@@ -155,11 +155,11 @@ msgstr ""
#: ../../web/templates/pages/edit_server.php:577
#: ../../web/templates/pages/edit_server.php:829
#: ../../web/templates/pages/edit_user.php:84
#: ../../web/templates/pages/login/login_1.php:12
#: ../../web/templates/pages/login/login_a.php:19
#: ../../web/templates/pages/edit_web.php:119
#: ../../web/templates/pages/edit_web.php:438
#: ../../web/templates/pages/edit_web.php:544
#: ../../web/templates/pages/login/login_1.php:12
#: ../../web/templates/pages/login/login_a.php:19
msgid "Password"
msgstr ""
@@ -266,8 +266,8 @@ msgstr ""
#: ../../web/templates/pages/edit_dns.php:28
#: ../../web/templates/pages/edit_dns_rec.php:28
#: ../../web/templates/pages/edit_mail.php:38
#: ../../web/templates/pages/edit_web.php:59
#: ../../web/templates/pages/generate_ssl.php:18
#: ../../web/templates/pages/edit_web.php:59
msgid "Domain"
msgstr ""
@@ -280,7 +280,6 @@ msgstr ""
#: ../../web/templates/pages/add_web.php:47
#: ../../web/templates/pages/edit_dns.php:33
#: ../../web/templates/pages/edit_ip.php:35
#: ../../web/templates/pages/edit_web.php:76
#: ../../web/templates/pages/list_dns.php:28
#: ../../web/templates/pages/list_firewall.php:39
#: ../../web/templates/pages/list_firewall.php:75
@@ -295,6 +294,7 @@ msgstr ""
#: ../../web/templates/pages/list_web.php:34
#: ../../web/templates/pages/list_web.php:80
#: ../../web/templates/pages/list_web.php:311
#: ../../web/templates/pages/edit_web.php:76
msgid "IP Address"
msgstr ""
@@ -355,6 +355,8 @@ msgstr ""
#: ../../web/templates/pages/list_firewall.php:30
#: ../../web/templates/pages/list_firewall.php:70
#: ../../web/templates/pages/list_firewall.php:111
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:32
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:44
msgid "Action"
msgstr ""
@@ -919,14 +921,14 @@ msgstr ""
#: ../../web/edit/server/exim4/index.php:44
#: ../../web/edit/server/fail2ban/index.php:44
#: ../../web/edit/server/httpd/index.php:44
#: ../../web/edit/server/index.php:1762 ../../web/edit/server/index.php:1766
#: ../../web/edit/server/index.php:1748 ../../web/edit/server/index.php:1752
#: ../../web/edit/server/mariadb/index.php:44
#: ../../web/edit/server/mysql/index.php:44
#: ../../web/edit/server/mysqld/index.php:44
#: ../../web/edit/server/named/index.php:44
#: ../../web/edit/server/nginx/index.php:44
#: ../../web/edit/server/php-fpm/index.php:44
#: ../../web/edit/server/php/index.php:44
#: ../../web/edit/server/php/index.php:65
#: ../../web/edit/server/php5-fpm/index.php:44
#: ../../web/edit/server/postgresql/index.php:65
#: ../../web/edit/server/proftpd/index.php:44
@@ -947,7 +949,7 @@ msgstr ""
msgid "Info (read-only mode): Crontab can only be edited via SSH."
msgstr ""
#: ../../web/edit/server/index.php:1239
#: ../../web/edit/server/index.php:1225
msgid "Inactive session timeout can not lower than 1 minute."
msgstr ""
@@ -1036,12 +1038,12 @@ msgstr ""
msgid "Unsupported hash method"
msgstr ""
#: ../../web/login/index.php:142 ../../web/login/index.php:199
#: ../../web/login/index.php:222 ../../web/login/index.php:246
#: ../../web/login/index.php:142 ../../web/login/index.php:204
#: ../../web/login/index.php:227 ../../web/login/index.php:251
msgid "Invalid username or password"
msgstr ""
#: ../../web/login/index.php:272 ../../web/login/index.php:287
#: ../../web/login/index.php:277 ../../web/login/index.php:292
msgid "Invalid or missing 2FA token"
msgstr ""
@@ -1400,10 +1402,10 @@ msgstr ""
#: ../../web/templates/includes/panel.php:294
#: ../../web/templates/pages/add_mail_acc.php:82
#: ../../web/templates/pages/edit_mail_acc.php:82
#: ../../web/templates/pages/edit_web.php:64
#: ../../web/templates/pages/generate_ssl.php:22
#: ../../web/templates/pages/list_mail_acc.php:89
#: ../../web/templates/pages/list_mail_acc.php:268
#: ../../web/templates/pages/edit_web.php:64
msgid "Aliases"
msgstr ""
@@ -1514,7 +1516,6 @@ msgstr ""
#: ../../web/templates/pages/edit_server_php.php:6
#: ../../web/templates/pages/edit_server_service.php:6
#: ../../web/templates/pages/edit_user.php:6
#: ../../web/templates/pages/edit_web.php:6
#: ../../web/templates/pages/edit_whitelabel.php:6
#: ../../web/templates/pages/list_access_key.php:16
#: ../../web/templates/pages/list_access_keys.php:7
@@ -1553,8 +1554,11 @@ msgstr ""
#: ../../web/templates/pages/login/reset_2.php:27
#: ../../web/templates/pages/login/reset_3.php:29
#: ../../web/templates/pages/setup_webapp.php:6
#: ../../web/templates/pages/edit_web.php:6
#: ../../web/templates/pages/extmodules.php:6
#: ../../web/templates/pages/extmodules_passenger_manager.php:6
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:6
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:6
msgid "Back"
msgstr ""
@@ -1593,10 +1597,11 @@ msgstr ""
#: ../../web/templates/pages/edit_server_php.php:11
#: ../../web/templates/pages/edit_server_service.php:11
#: ../../web/templates/pages/edit_user.php:37
#: ../../web/templates/pages/edit_web.php:19
#: ../../web/templates/pages/edit_whitelabel.php:11
#: ../../web/templates/pages/setup_webapp.php:11
#: ../../web/templates/pages/edit_web.php:19
#: ../../web/templates/pages/extmodules_passenger_manager.php:11
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:11
msgid "Save"
msgstr ""
@@ -1632,9 +1637,9 @@ msgstr ""
#: ../../web/templates/pages/edit_ip.php:69
#: ../../web/templates/pages/edit_ip.php:75
#: ../../web/templates/pages/edit_mail.php:132
#: ../../web/templates/pages/generate_ssl.php:28
#: ../../web/templates/pages/edit_web.php:215
#: ../../web/templates/pages/edit_web.php:398
#: ../../web/templates/pages/generate_ssl.php:28
msgid "Optional"
msgstr ""
@@ -1720,11 +1725,11 @@ msgstr ""
#: ../../web/templates/pages/edit_db.php:43
#: ../../web/templates/pages/edit_mail_acc.php:46
#: ../../web/templates/pages/edit_user.php:85
#: ../../web/templates/pages/generate_ssl.php:59
#: ../../web/templates/pages/setup_webapp.php:63
#: ../../web/templates/pages/edit_web.php:120
#: ../../web/templates/pages/edit_web.php:439
#: ../../web/templates/pages/edit_web.php:545
#: ../../web/templates/pages/generate_ssl.php:59
#: ../../web/templates/pages/setup_webapp.php:63
msgid "Generate"
msgstr ""
@@ -2065,8 +2070,6 @@ msgstr ""
#: ../../web/templates/pages/add_dns.php:140
#: ../../web/templates/pages/add_dns.php:146
#: ../../web/templates/pages/add_dns.php:152
#: ../../web/templates/pages/edit_web.php:423
#: ../../web/templates/pages/edit_web.php:530
#: ../../web/templates/pages/list_access_keys.php:41
#: ../../web/templates/pages/list_access_keys.php:101
#: ../../web/templates/pages/list_access_keys.php:102
@@ -2134,6 +2137,8 @@ msgstr ""
#: ../../web/templates/pages/list_web.php:299
#: ../../web/templates/pages/list_web.php:300
#: ../../web/templates/pages/list_web.php:304
#: ../../web/templates/pages/edit_web.php:423
#: ../../web/templates/pages/edit_web.php:530
msgid "Delete"
msgstr ""
@@ -2722,23 +2727,23 @@ msgstr ""
#: ../../web/templates/pages/edit_mail.php:121
#: ../../web/templates/pages/edit_server.php:930
#: ../../web/templates/pages/edit_web.php:204
#: ../../web/templates/pages/list_ssl.php:28
#: ../../web/templates/pages/edit_web.php:204
msgid "SSL Certificate"
msgstr ""
#: ../../web/templates/pages/edit_mail.php:122
#: ../../web/templates/pages/edit_server.php:938
#: ../../web/templates/pages/edit_web.php:205
#: ../../web/templates/pages/generate_ssl.php:16
#: ../../web/templates/pages/list_ssl.php:16
#: ../../web/templates/pages/edit_web.php:205
msgid "Generate Self-Signed SSL Certificate"
msgstr ""
#: ../../web/templates/pages/edit_mail.php:127
#: ../../web/templates/pages/edit_server.php:950
#: ../../web/templates/pages/edit_web.php:210
#: ../../web/templates/pages/list_ssl.php:55
#: ../../web/templates/pages/edit_web.php:210
msgid "SSL Private Key"
msgstr ""
@@ -2874,8 +2879,8 @@ msgid "Enable debug mode"
msgstr ""
#: ../../web/templates/pages/edit_server.php:147
#: ../../web/templates/pages/list_services.php:12
#: ../../web/templates/pages/list_updates.php:29
#: ../../web/templates/pages/list_services.php:12
msgid "Updates"
msgstr ""
@@ -3226,9 +3231,9 @@ msgstr ""
#: ../../web/templates/pages/list_services.php:25
#: ../../web/templates/pages/list_services.php:28
#: ../../web/templates/pages/list_services.php:41
#: ../../web/templates/pages/list_services.php:178
#: ../../web/templates/pages/list_services.php:179
#: ../../web/templates/pages/list_services.php:183
#: ../../web/templates/pages/list_services.php:187
#: ../../web/templates/pages/list_services.php:188
#: ../../web/templates/pages/list_services.php:192
msgid "Restart"
msgstr ""
@@ -3335,140 +3340,6 @@ msgstr ""
msgid "Default Name Servers"
msgstr ""
#: ../../web/templates/pages/edit_web.php:11
msgid "Purge NGINX Cache"
msgstr ""
#: ../../web/templates/pages/edit_web.php:15
#: ../../web/templates/pages/list_webapps.php:16
msgid "Quick Install App"
msgstr ""
#: ../../web/templates/pages/edit_web.php:56
msgid "Edit Web Domain"
msgstr ""
#: ../../web/templates/pages/edit_web.php:71
msgid ""
"If the aliases changes, Let's Encrypt will obtain a new SSL certificate."
msgstr ""
#: ../../web/templates/pages/edit_web.php:88
msgid "Web Statistics"
msgstr ""
#: ../../web/templates/pages/edit_web.php:107
msgid "Statistics Authorization"
msgstr ""
#: ../../web/templates/pages/edit_web.php:133
msgid "Enable domain redirection"
msgstr ""
#: ../../web/templates/pages/edit_web.php:140
#: ../../web/templates/pages/edit_web.php:146
#, php-format
msgid "Redirect visitors to %s"
msgstr ""
#: ../../web/templates/pages/edit_web.php:152
msgid "Redirect visitors to a custom domain or web address"
msgstr ""
#: ../../web/templates/pages/edit_web.php:157
msgid "Target domain or URL"
msgstr ""
#: ../../web/templates/pages/edit_web.php:161
msgid "Status code"
msgstr ""
#: ../../web/templates/pages/edit_web.php:189
msgid "Enable automatic HTTPS redirection"
msgstr ""
#: ../../web/templates/pages/edit_web.php:195
msgid "Enable HTTP Strict Transport Security (HSTS)"
msgstr ""
#: ../../web/templates/pages/edit_web.php:257
msgid "Hide Certificate"
msgstr ""
#: ../../web/templates/pages/edit_web.php:257
#: ../../web/templates/pages/edit_web.php:258
msgid "Show Certificate"
msgstr ""
#: ../../web/templates/pages/edit_web.php:292
msgid "Enable FastCGI cache"
msgstr ""
#: ../../web/templates/pages/edit_web.php:301
msgid "Cache Duration"
msgstr ""
#: ../../web/templates/pages/edit_web.php:334
msgid "Proxy Support"
msgstr ""
#: ../../web/templates/pages/edit_web.php:365
msgid "Set port for internal service"
msgstr ""
#: ../../web/templates/pages/edit_web.php:371
msgid "Proxy Extensions"
msgstr ""
#: ../../web/templates/pages/edit_web.php:380
msgid "Custom document root"
msgstr ""
#: ../../web/templates/pages/edit_web.php:385
msgid "Point to"
msgstr ""
#: ../../web/templates/pages/edit_web.php:408
msgid "Additional FTP account(s)"
msgstr ""
#: ../../web/templates/pages/edit_web.php:430
#: ../../web/templates/pages/edit_web.php:537
#, php-format
msgid "Prefix %s will be added to username automatically"
msgstr ""
#: ../../web/templates/pages/edit_web.php:446
#: ../../web/templates/pages/edit_web.php:552
#: ../../web/templates/pages/extmodules_passenger_manager.php:43
msgid "Path"
msgstr ""
#: ../../web/templates/pages/edit_web.php:454
#: ../../web/templates/pages/edit_web.php:558
msgid "Send FTP credentials to email"
msgstr ""
#: ../../web/templates/pages/edit_web.php:463
msgid "Add FTP account"
msgstr ""
#: ../../web/templates/pages/edit_web.php:472
msgid "Passenger options"
msgstr ""
#: ../../web/templates/pages/edit_web.php:485
msgid "Enable passenger for domain"
msgstr ""
#: ../../web/templates/pages/edit_web.php:490
msgid "Set ruby path for domain"
msgstr ""
#: ../../web/templates/pages/edit_web.php:512
msgid "Enable logging to browser for domain"
msgstr ""
#: ../../web/templates/pages/edit_whitelabel.php:33
msgid "White Label Options"
msgstr ""
@@ -3615,13 +3486,13 @@ msgstr ""
#: ../../web/templates/pages/list_mail_acc.php:56
#: ../../web/templates/pages/list_packages.php:32
#: ../../web/templates/pages/list_packages.php:35
#: ../../web/templates/pages/list_services.php:38
#: ../../web/templates/pages/list_services.php:43
#: ../../web/templates/pages/list_stats.php:29
#: ../../web/templates/pages/list_user.php:41
#: ../../web/templates/pages/list_user.php:54
#: ../../web/templates/pages/list_web.php:41
#: ../../web/templates/pages/list_web.php:49
#: ../../web/templates/pages/list_services.php:38
#: ../../web/templates/pages/list_services.php:43
msgid "Apply to selected"
msgstr ""
@@ -3639,9 +3510,9 @@ msgstr ""
#: ../../web/templates/pages/list_mail.php:73
#: ../../web/templates/pages/list_mail_acc.php:83
#: ../../web/templates/pages/list_packages.php:52
#: ../../web/templates/pages/list_services.php:100
#: ../../web/templates/pages/list_user.php:80
#: ../../web/templates/pages/list_web.php:76
#: ../../web/templates/pages/list_services.php:100
msgid "Select all"
msgstr ""
@@ -3690,12 +3561,12 @@ msgstr ""
#: ../../web/templates/pages/list_mail_acc.php:164
#: ../../web/templates/pages/list_packages.php:118
#: ../../web/templates/pages/list_packages.php:119
#: ../../web/templates/pages/list_services.php:151
#: ../../web/templates/pages/list_services.php:152
#: ../../web/templates/pages/list_user.php:144
#: ../../web/templates/pages/list_user.php:145
#: ../../web/templates/pages/list_web.php:194
#: ../../web/templates/pages/list_web.php:195
#: ../../web/templates/pages/list_services.php:152
#: ../../web/templates/pages/list_services.php:153
msgid "Select"
msgstr ""
@@ -3915,10 +3786,10 @@ msgstr ""
#: ../../web/templates/pages/list_cron.php:133
#: ../../web/templates/pages/list_cron.php:136
#: ../../web/templates/pages/list_services.php:158
#: ../../web/templates/pages/list_services.php:168
#: ../../web/templates/pages/list_services.php:171
#: ../../web/templates/pages/extmodules.php:95
#: ../../web/templates/pages/extmodules.php:107
#: ../../web/templates/pages/list_services.php:163
#: ../../web/templates/pages/list_services.php:177
#: ../../web/templates/pages/list_services.php:180
msgid "Edit"
msgstr ""
@@ -4404,7 +4275,7 @@ msgstr ""
#: ../../web/templates/pages/list_server_info.php:42
#: ../../web/templates/pages/list_services.php:106
#: ../../web/templates/pages/list_services.php:208
#: ../../web/templates/pages/list_services.php:217
msgid "CPU"
msgstr ""
@@ -4434,83 +4305,6 @@ msgstr ""
msgid "Partially implemented"
msgstr ""
#: ../../web/templates/pages/list_services.php:9
msgid "Task Monitor"
msgstr ""
#: ../../web/templates/pages/list_services.php:26
#: ../../web/templates/pages/list_services.php:180
#, php-format
msgid "Are you sure you want to restart %s?"
msgstr ""
#: ../../web/templates/pages/list_services.php:31
msgid "ExtModules"
msgstr ""
#: ../../web/templates/pages/list_services.php:39
#: ../../web/templates/pages/list_services.php:117
msgid "Stop"
msgstr ""
#: ../../web/templates/pages/list_services.php:40
#: ../../web/templates/pages/list_services.php:124
msgid "Start"
msgstr ""
#: ../../web/templates/pages/list_services.php:68
msgid "Production Release"
msgstr ""
#: ../../web/templates/pages/list_services.php:74
msgid "Operating System"
msgstr ""
#: ../../web/templates/pages/list_services.php:80
msgid "Load Average"
msgstr ""
#: ../../web/templates/pages/list_services.php:86
#: ../../web/templates/pages/list_services.php:105
#: ../../web/templates/pages/list_services.php:204
msgid "Uptime"
msgstr ""
#: ../../web/templates/pages/list_services.php:95
msgid "Services"
msgstr ""
#: ../../web/templates/pages/list_services.php:102
#: ../../web/templates/pages/list_services.php:156
msgid "Service"
msgstr ""
#: ../../web/templates/pages/list_services.php:104
#: ../../web/templates/pages/list_services.php:200
#: ../../web/templates/pages/list_updates.php:34
#: ../../web/templates/pages/list_updates.php:58
msgid "Description"
msgstr ""
#: ../../web/templates/pages/list_services.php:107
#: ../../web/templates/pages/list_services.php:212
msgid "Memory"
msgstr ""
#: ../../web/templates/pages/list_services.php:191
#, php-format
msgid "Are you sure you want to stop service %s?"
msgstr ""
#: ../../web/templates/pages/list_services.php:191
#, php-format
msgid "Are you sure you want to start service %s?"
msgstr ""
#: ../../web/templates/pages/list_services.php:213
msgid "MB"
msgstr ""
#: ../../web/templates/pages/list_ssl.php:82
msgid "SSL CSR"
msgstr ""
@@ -4553,6 +4347,15 @@ msgstr ""
msgid "Package Names"
msgstr ""
#: ../../web/templates/pages/list_updates.php:34
#: ../../web/templates/pages/list_updates.php:58
#: ../../web/templates/pages/list_services.php:104
#: ../../web/templates/pages/list_services.php:209
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:39
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:69
msgid "Description"
msgstr ""
#: ../../web/templates/pages/list_user.php:43
msgid "Rebuild User Profile"
msgstr ""
@@ -4633,6 +4436,11 @@ msgid_plural "%d web domains"
msgstr[0] ""
msgstr[1] ""
#: ../../web/templates/pages/list_webapps.php:16
#: ../../web/templates/pages/edit_web.php:15
msgid "Quick Install App"
msgstr ""
#: ../../web/templates/pages/list_webapps.php:29
msgid "Setup"
msgstr ""
@@ -4747,59 +4555,188 @@ msgstr ""
msgid "Please make sure ~/web/%s/public_html is empty!"
msgstr ""
#: ../../web/templates/pages/extmodules.php:15
#: ../../web/templates/pages/edit_web.php:11
msgid "Purge NGINX Cache"
msgstr ""
#: ../../web/templates/pages/edit_web.php:56
msgid "Edit Web Domain"
msgstr ""
#: ../../web/templates/pages/edit_web.php:71
msgid ""
"If the aliases changes, Let's Encrypt will obtain a new SSL certificate."
msgstr ""
#: ../../web/templates/pages/edit_web.php:88
msgid "Web Statistics"
msgstr ""
#: ../../web/templates/pages/edit_web.php:107
msgid "Statistics Authorization"
msgstr ""
#: ../../web/templates/pages/edit_web.php:133
msgid "Enable domain redirection"
msgstr ""
#: ../../web/templates/pages/edit_web.php:140
#: ../../web/templates/pages/edit_web.php:146
#, php-format
msgid "Redirect visitors to %s"
msgstr ""
#: ../../web/templates/pages/edit_web.php:152
msgid "Redirect visitors to a custom domain or web address"
msgstr ""
#: ../../web/templates/pages/edit_web.php:157
msgid "Target domain or URL"
msgstr ""
#: ../../web/templates/pages/edit_web.php:161
msgid "Status code"
msgstr ""
#: ../../web/templates/pages/edit_web.php:189
msgid "Enable automatic HTTPS redirection"
msgstr ""
#: ../../web/templates/pages/edit_web.php:195
msgid "Enable HTTP Strict Transport Security (HSTS)"
msgstr ""
#: ../../web/templates/pages/edit_web.php:257
msgid "Hide Certificate"
msgstr ""
#: ../../web/templates/pages/edit_web.php:257
#: ../../web/templates/pages/edit_web.php:258
msgid "Show Certificate"
msgstr ""
#: ../../web/templates/pages/edit_web.php:292
msgid "Enable FastCGI cache"
msgstr ""
#: ../../web/templates/pages/edit_web.php:301
msgid "Cache Duration"
msgstr ""
#: ../../web/templates/pages/edit_web.php:334
msgid "Proxy Support"
msgstr ""
#: ../../web/templates/pages/edit_web.php:365
msgid "Set port for internal service"
msgstr ""
#: ../../web/templates/pages/edit_web.php:371
msgid "Proxy Extensions"
msgstr ""
#: ../../web/templates/pages/edit_web.php:380
msgid "Custom document root"
msgstr ""
#: ../../web/templates/pages/edit_web.php:385
msgid "Point to"
msgstr ""
#: ../../web/templates/pages/edit_web.php:408
msgid "Additional FTP account(s)"
msgstr ""
#: ../../web/templates/pages/edit_web.php:430
#: ../../web/templates/pages/edit_web.php:537
#, php-format
msgid "Prefix %s will be added to username automatically"
msgstr ""
#: ../../web/templates/pages/edit_web.php:446
#: ../../web/templates/pages/edit_web.php:552
#: ../../web/templates/pages/extmodules_passenger_manager.php:43
msgid "Path"
msgstr ""
#: ../../web/templates/pages/edit_web.php:454
#: ../../web/templates/pages/edit_web.php:558
msgid "Send FTP credentials to email"
msgstr ""
#: ../../web/templates/pages/edit_web.php:463
msgid "Add FTP account"
msgstr ""
#: ../../web/templates/pages/edit_web.php:472
msgid "Passenger options"
msgstr ""
#: ../../web/templates/pages/edit_web.php:485
msgid "Enable passenger for domain"
msgstr ""
#: ../../web/templates/pages/edit_web.php:490
msgid "Set ruby path for domain"
msgstr ""
#: ../../web/templates/pages/edit_web.php:512
msgid "Enable logging to browser for domain"
msgstr ""
#: ../../web/templates/pages/extmodules.php:27
msgid "List modules"
msgstr ""
#: ../../web/templates/pages/extmodules.php:19
#: ../../web/templates/pages/extmodules.php:50
#: ../../web/templates/pages/extmodules.php:31
#: ../../web/templates/pages/extmodules.php:62
msgid "Module ID"
msgstr ""
#: ../../web/templates/pages/extmodules.php:20
#: ../../web/templates/pages/extmodules.php:54
#: ../../web/templates/pages/extmodules.php:32
#: ../../web/templates/pages/extmodules.php:66
msgid "Module name"
msgstr ""
#: ../../web/templates/pages/extmodules.php:22
#: ../../web/templates/pages/extmodules.php:78
#: ../../web/templates/pages/extmodules.php:34
#: ../../web/templates/pages/extmodules.php:90
msgid "Module description"
msgstr ""
#: ../../web/templates/pages/extmodules.php:23
#: ../../web/templates/pages/extmodules.php:82
#: ../../web/templates/pages/extmodules.php:35
#: ../../web/templates/pages/extmodules.php:94
msgid "Module state"
msgstr ""
#: ../../web/templates/pages/extmodules.php:24
#: ../../web/templates/pages/extmodules.php:86
#: ../../web/templates/pages/extmodules.php:36
#: ../../web/templates/pages/extmodules.php:98
msgid "Requirements"
msgstr ""
#: ../../web/templates/pages/extmodules.php:25
#: ../../web/templates/pages/extmodules.php:90
#: ../../web/templates/pages/extmodules.php:37
#: ../../web/templates/pages/extmodules.php:102
msgid "Configuration"
msgstr ""
#: ../../web/templates/pages/extmodules.php:35
#: ../../web/templates/pages/extmodules.php:47
msgid "Enable module"
msgstr ""
#: ../../web/templates/pages/extmodules.php:38
#: ../../web/templates/pages/extmodules.php:50
#, php-format
msgid "Are you sure you want to enable module %s?"
msgstr ""
#: ../../web/templates/pages/extmodules.php:42
#: ../../web/templates/pages/extmodules.php:54
msgid "Disable module"
msgstr ""
#: ../../web/templates/pages/extmodules.php:45
#: ../../web/templates/pages/extmodules.php:57
#, php-format
msgid "Are you sure you want to disable module %s?"
msgstr ""
#: ../../web/templates/pages/extmodules.php:114
#: ../../web/templates/pages/extmodules.php:126
msgid "Extended modules list"
msgstr ""
@@ -4819,6 +4756,110 @@ msgstr ""
msgid "Ruby available list"
msgstr ""
#: ../../web/templates/pages/list_services.php:9
msgid "Task Monitor"
msgstr ""
#: ../../web/templates/pages/list_services.php:26
#: ../../web/templates/pages/list_services.php:189
#, php-format
msgid "Are you sure you want to restart %s?"
msgstr ""
#: ../../web/templates/pages/list_services.php:31
msgid "ExtModules"
msgstr ""
#: ../../web/templates/pages/list_services.php:39
#: ../../web/templates/pages/list_services.php:117
msgid "Stop"
msgstr ""
#: ../../web/templates/pages/list_services.php:40
#: ../../web/templates/pages/list_services.php:124
msgid "Start"
msgstr ""
#: ../../web/templates/pages/list_services.php:68
msgid "Production Release"
msgstr ""
#: ../../web/templates/pages/list_services.php:74
msgid "Operating System"
msgstr ""
#: ../../web/templates/pages/list_services.php:80
msgid "Load Average"
msgstr ""
#: ../../web/templates/pages/list_services.php:86
#: ../../web/templates/pages/list_services.php:105
#: ../../web/templates/pages/list_services.php:213
msgid "Uptime"
msgstr ""
#: ../../web/templates/pages/list_services.php:95
msgid "Services"
msgstr ""
#: ../../web/templates/pages/list_services.php:102
#: ../../web/templates/pages/list_services.php:157
msgid "Service"
msgstr ""
#: ../../web/templates/pages/list_services.php:107
#: ../../web/templates/pages/list_services.php:221
msgid "Memory"
msgstr ""
#: ../../web/templates/pages/list_services.php:200
#, php-format
msgid "Are you sure you want to stop service %s?"
msgstr ""
#: ../../web/templates/pages/list_services.php:200
#, php-format
msgid "Are you sure you want to start service %s?"
msgstr ""
#: ../../web/templates/pages/list_services.php:222
msgid "MB"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:27
msgid "Available PHP list"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:31
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:40
msgid "PHP version"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:45
msgid "Change modules list"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:46
msgid "Change modules list for PHP"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:59
msgid "PHP modules tunning"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:32
msgid "Available modules list for version PHP"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:38
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:47
msgid "PHP module name"
msgstr ""
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:82
msgid "PHP modules list"
msgstr ""
#: ../../web/update/hestia/index.php:20
#, php-format
msgid "Error: %s update failed."

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: hestiacp\n"
"Report-Msgid-Bugs-To: a@bayrepo.ru\n"
"PO-Revision-Date: 2024-12-30 11:26\n"
"PO-Revision-Date: 2025-02-02 22:03\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -123,9 +123,6 @@ msgstr "База данных"
#: ../../web/templates/pages/edit_server.php:470
#: ../../web/templates/pages/edit_server.php:817
#: ../../web/templates/pages/edit_user.php:64
#: ../../web/templates/pages/edit_web.php:114
#: ../../web/templates/pages/edit_web.php:429
#: ../../web/templates/pages/edit_web.php:536
#: ../../web/templates/pages/list_db.php:65
#: ../../web/templates/pages/list_db.php:113
#: ../../web/templates/pages/list_db.php:247
@@ -133,6 +130,9 @@ msgstr "База данных"
#: ../../web/templates/pages/login/login_a.php:14
#: ../../web/templates/pages/login/reset2fa.php:27
#: ../../web/templates/pages/login/reset_1.php:14
#: ../../web/templates/pages/edit_web.php:114
#: ../../web/templates/pages/edit_web.php:429
#: ../../web/templates/pages/edit_web.php:536
msgid "Username"
msgstr "Аккаунт"
@@ -150,11 +150,11 @@ msgstr "Аккаунт"
#: ../../web/templates/pages/edit_server.php:577
#: ../../web/templates/pages/edit_server.php:829
#: ../../web/templates/pages/edit_user.php:84
#: ../../web/templates/pages/login/login_1.php:12
#: ../../web/templates/pages/login/login_a.php:19
#: ../../web/templates/pages/edit_web.php:119
#: ../../web/templates/pages/edit_web.php:438
#: ../../web/templates/pages/edit_web.php:544
#: ../../web/templates/pages/login/login_1.php:12
#: ../../web/templates/pages/login/login_a.php:19
msgid "Password"
msgstr "Пароль"
@@ -272,8 +272,8 @@ msgstr "База данных {%s} успешно создана. / {Откры
#: ../../web/templates/pages/edit_dns.php:28
#: ../../web/templates/pages/edit_dns_rec.php:28
#: ../../web/templates/pages/edit_mail.php:38
#: ../../web/templates/pages/edit_web.php:59
#: ../../web/templates/pages/generate_ssl.php:18
#: ../../web/templates/pages/edit_web.php:59
msgid "Domain"
msgstr "Домен"
@@ -286,7 +286,6 @@ msgstr "Домен"
#: ../../web/templates/pages/add_web.php:47
#: ../../web/templates/pages/edit_dns.php:33
#: ../../web/templates/pages/edit_ip.php:35
#: ../../web/templates/pages/edit_web.php:76
#: ../../web/templates/pages/list_dns.php:28
#: ../../web/templates/pages/list_firewall.php:39
#: ../../web/templates/pages/list_firewall.php:75
@@ -301,6 +300,7 @@ msgstr "Домен"
#: ../../web/templates/pages/list_web.php:34
#: ../../web/templates/pages/list_web.php:80
#: ../../web/templates/pages/list_web.php:311
#: ../../web/templates/pages/edit_web.php:76
msgid "IP Address"
msgstr "IP адрес"
@@ -361,6 +361,8 @@ msgstr "IP-адрес успешно заблокирован."
#: ../../web/templates/pages/list_firewall.php:30
#: ../../web/templates/pages/list_firewall.php:70
#: ../../web/templates/pages/list_firewall.php:111
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:32
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:44
msgid "Action"
msgstr "Действие"
@@ -971,14 +973,14 @@ msgstr "Загрузка файла удаленной резервной коп
#: ../../web/edit/server/exim4/index.php:44
#: ../../web/edit/server/fail2ban/index.php:44
#: ../../web/edit/server/httpd/index.php:44
#: ../../web/edit/server/index.php:1762 ../../web/edit/server/index.php:1766
#: ../../web/edit/server/index.php:1748 ../../web/edit/server/index.php:1752
#: ../../web/edit/server/mariadb/index.php:44
#: ../../web/edit/server/mysql/index.php:44
#: ../../web/edit/server/mysqld/index.php:44
#: ../../web/edit/server/named/index.php:44
#: ../../web/edit/server/nginx/index.php:44
#: ../../web/edit/server/php-fpm/index.php:44
#: ../../web/edit/server/php/index.php:44
#: ../../web/edit/server/php/index.php:65
#: ../../web/edit/server/php5-fpm/index.php:44
#: ../../web/edit/server/postgresql/index.php:65
#: ../../web/edit/server/proftpd/index.php:44
@@ -999,7 +1001,7 @@ msgstr "Ошибка: неизвестный идентификатор запи
msgid "Info (read-only mode): Crontab can only be edited via SSH."
msgstr "Информация (read-only режим): Crontab может быть отредактирован только через SSH."
#: ../../web/edit/server/index.php:1239
#: ../../web/edit/server/index.php:1225
msgid "Inactive session timeout can not lower than 1 minute."
msgstr "Длительность неактивной сессии не может быть меньше 1 минуты."
@@ -1095,12 +1097,12 @@ msgstr "Аккаунт отключён"
msgid "Unsupported hash method"
msgstr "Неподдерживаемый метод хеширования"
#: ../../web/login/index.php:142 ../../web/login/index.php:199
#: ../../web/login/index.php:222 ../../web/login/index.php:246
#: ../../web/login/index.php:142 ../../web/login/index.php:204
#: ../../web/login/index.php:227 ../../web/login/index.php:251
msgid "Invalid username or password"
msgstr "Неверный логин или пароль"
#: ../../web/login/index.php:272 ../../web/login/index.php:287
#: ../../web/login/index.php:277 ../../web/login/index.php:292
msgid "Invalid or missing 2FA token"
msgstr "Неверный или отсутствующий токен ДФА"
@@ -1480,10 +1482,10 @@ msgstr "Домены"
#: ../../web/templates/includes/panel.php:294
#: ../../web/templates/pages/add_mail_acc.php:82
#: ../../web/templates/pages/edit_mail_acc.php:82
#: ../../web/templates/pages/edit_web.php:64
#: ../../web/templates/pages/generate_ssl.php:22
#: ../../web/templates/pages/list_mail_acc.php:89
#: ../../web/templates/pages/list_mail_acc.php:268
#: ../../web/templates/pages/edit_web.php:64
msgid "Aliases"
msgstr "Алиасы"
@@ -1594,7 +1596,6 @@ msgstr "РЕЗЕРВНОЕ КОПИРОВАНИЕ"
#: ../../web/templates/pages/edit_server_php.php:6
#: ../../web/templates/pages/edit_server_service.php:6
#: ../../web/templates/pages/edit_user.php:6
#: ../../web/templates/pages/edit_web.php:6
#: ../../web/templates/pages/edit_whitelabel.php:6
#: ../../web/templates/pages/list_access_key.php:16
#: ../../web/templates/pages/list_access_keys.php:7
@@ -1633,8 +1634,11 @@ msgstr "РЕЗЕРВНОЕ КОПИРОВАНИЕ"
#: ../../web/templates/pages/login/reset_2.php:27
#: ../../web/templates/pages/login/reset_3.php:29
#: ../../web/templates/pages/setup_webapp.php:6
#: ../../web/templates/pages/edit_web.php:6
#: ../../web/templates/pages/extmodules.php:6
#: ../../web/templates/pages/extmodules_passenger_manager.php:6
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:6
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:6
msgid "Back"
msgstr "Назад"
@@ -1673,10 +1677,11 @@ msgstr "Назад"
#: ../../web/templates/pages/edit_server_php.php:11
#: ../../web/templates/pages/edit_server_service.php:11
#: ../../web/templates/pages/edit_user.php:37
#: ../../web/templates/pages/edit_web.php:19
#: ../../web/templates/pages/edit_whitelabel.php:11
#: ../../web/templates/pages/setup_webapp.php:11
#: ../../web/templates/pages/edit_web.php:19
#: ../../web/templates/pages/extmodules_passenger_manager.php:11
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:11
msgid "Save"
msgstr "Сохранить"
@@ -1712,9 +1717,9 @@ msgstr "Коментарий"
#: ../../web/templates/pages/edit_ip.php:69
#: ../../web/templates/pages/edit_ip.php:75
#: ../../web/templates/pages/edit_mail.php:132
#: ../../web/templates/pages/generate_ssl.php:28
#: ../../web/templates/pages/edit_web.php:215
#: ../../web/templates/pages/edit_web.php:398
#: ../../web/templates/pages/generate_ssl.php:28
msgid "Optional"
msgstr "Опционально"
@@ -1800,11 +1805,11 @@ msgstr "Каждые %s минут"
#: ../../web/templates/pages/edit_db.php:43
#: ../../web/templates/pages/edit_mail_acc.php:46
#: ../../web/templates/pages/edit_user.php:85
#: ../../web/templates/pages/generate_ssl.php:59
#: ../../web/templates/pages/setup_webapp.php:63
#: ../../web/templates/pages/edit_web.php:120
#: ../../web/templates/pages/edit_web.php:439
#: ../../web/templates/pages/edit_web.php:545
#: ../../web/templates/pages/generate_ssl.php:59
#: ../../web/templates/pages/setup_webapp.php:63
msgid "Generate"
msgstr "Сгенерировать"
@@ -2148,8 +2153,6 @@ msgstr "Серверы имен"
#: ../../web/templates/pages/add_dns.php:140
#: ../../web/templates/pages/add_dns.php:146
#: ../../web/templates/pages/add_dns.php:152
#: ../../web/templates/pages/edit_web.php:423
#: ../../web/templates/pages/edit_web.php:530
#: ../../web/templates/pages/list_access_keys.php:41
#: ../../web/templates/pages/list_access_keys.php:101
#: ../../web/templates/pages/list_access_keys.php:102
@@ -2217,6 +2220,8 @@ msgstr "Серверы имен"
#: ../../web/templates/pages/list_web.php:299
#: ../../web/templates/pages/list_web.php:300
#: ../../web/templates/pages/list_web.php:304
#: ../../web/templates/pages/edit_web.php:423
#: ../../web/templates/pages/edit_web.php:530
msgid "Delete"
msgstr "Удалить"
@@ -2812,23 +2817,23 @@ msgstr ""
#: ../../web/templates/pages/edit_mail.php:121
#: ../../web/templates/pages/edit_server.php:930
#: ../../web/templates/pages/edit_web.php:204
#: ../../web/templates/pages/list_ssl.php:28
#: ../../web/templates/pages/edit_web.php:204
msgid "SSL Certificate"
msgstr "SSL сертификат"
#: ../../web/templates/pages/edit_mail.php:122
#: ../../web/templates/pages/edit_server.php:938
#: ../../web/templates/pages/edit_web.php:205
#: ../../web/templates/pages/generate_ssl.php:16
#: ../../web/templates/pages/list_ssl.php:16
#: ../../web/templates/pages/edit_web.php:205
msgid "Generate Self-Signed SSL Certificate"
msgstr "Создать самозаверяющий SSL-сертификат"
#: ../../web/templates/pages/edit_mail.php:127
#: ../../web/templates/pages/edit_server.php:950
#: ../../web/templates/pages/edit_web.php:210
#: ../../web/templates/pages/list_ssl.php:55
#: ../../web/templates/pages/edit_web.php:210
msgid "SSL Private Key"
msgstr "Закрытый ключ SSL"
@@ -2964,8 +2969,8 @@ msgid "Enable debug mode"
msgstr "Включить режим отладки"
#: ../../web/templates/pages/edit_server.php:147
#: ../../web/templates/pages/list_services.php:12
#: ../../web/templates/pages/list_updates.php:29
#: ../../web/templates/pages/list_services.php:12
msgid "Updates"
msgstr "Обновления"
@@ -3318,9 +3323,9 @@ msgstr "Файрвол"
#: ../../web/templates/pages/list_services.php:25
#: ../../web/templates/pages/list_services.php:28
#: ../../web/templates/pages/list_services.php:41
#: ../../web/templates/pages/list_services.php:178
#: ../../web/templates/pages/list_services.php:179
#: ../../web/templates/pages/list_services.php:183
#: ../../web/templates/pages/list_services.php:187
#: ../../web/templates/pages/list_services.php:188
#: ../../web/templates/pages/list_services.php:192
msgid "Restart"
msgstr "Перезапуск"
@@ -3427,141 +3432,6 @@ msgstr "Версия PHP для CLI"
msgid "Default Name Servers"
msgstr "Серверы имен"
#: ../../web/templates/pages/edit_web.php:11
msgid "Purge NGINX Cache"
msgstr "Очистить кэш памяти NGINX"
#: ../../web/templates/pages/edit_web.php:15
#: ../../web/templates/pages/list_webapps.php:16
msgid "Quick Install App"
msgstr "Установить приложение"
#: ../../web/templates/pages/edit_web.php:56
msgid "Edit Web Domain"
msgstr "Изменить веб-домен"
#: ../../web/templates/pages/edit_web.php:71
msgid ""
"If the aliases changes, Let's Encrypt will obtain a new SSL certificate."
msgstr ""
"Если алиасы изменяются, Let's Encrypt запросит новый SSL сертификат."
#: ../../web/templates/pages/edit_web.php:88
msgid "Web Statistics"
msgstr "Статистика сайта"
#: ../../web/templates/pages/edit_web.php:107
msgid "Statistics Authorization"
msgstr "Ограниченный доступ к статистике"
#: ../../web/templates/pages/edit_web.php:133
msgid "Enable domain redirection"
msgstr "Включить редирект для домена"
#: ../../web/templates/pages/edit_web.php:140
#: ../../web/templates/pages/edit_web.php:146
#, php-format
msgid "Redirect visitors to %s"
msgstr "Перенаправлять посетителей на %s"
#: ../../web/templates/pages/edit_web.php:152
msgid "Redirect visitors to a custom domain or web address"
msgstr "Перенаправлять посетителей на домен или веб адрес"
#: ../../web/templates/pages/edit_web.php:157
msgid "Target domain or URL"
msgstr "Целевой домен или URL"
#: ../../web/templates/pages/edit_web.php:161
msgid "Status code"
msgstr "Код редиректа"
#: ../../web/templates/pages/edit_web.php:189
msgid "Enable automatic HTTPS redirection"
msgstr "Включить автоматическое перенаправление на HTTPS"
#: ../../web/templates/pages/edit_web.php:195
msgid "Enable HTTP Strict Transport Security (HSTS)"
msgstr "Включить строгую транспортную безопасность HTTP (HSTS)"
#: ../../web/templates/pages/edit_web.php:257
msgid "Hide Certificate"
msgstr "Скрыть сертификат"
#: ../../web/templates/pages/edit_web.php:257
#: ../../web/templates/pages/edit_web.php:258
msgid "Show Certificate"
msgstr "Показать сертификат"
#: ../../web/templates/pages/edit_web.php:292
msgid "Enable FastCGI cache"
msgstr "Включить кеш FastCGI"
#: ../../web/templates/pages/edit_web.php:301
msgid "Cache Duration"
msgstr "Время жизни кеша"
#: ../../web/templates/pages/edit_web.php:334
msgid "Proxy Support"
msgstr "Поддержка Proxy"
#: ../../web/templates/pages/edit_web.php:365
msgid "Set port for internal service"
msgstr "Установить порт для локального сервиса"
#: ../../web/templates/pages/edit_web.php:371
msgid "Proxy Extensions"
msgstr "Обработка Proxy"
#: ../../web/templates/pages/edit_web.php:380
msgid "Custom document root"
msgstr "Пользовательский document root"
#: ../../web/templates/pages/edit_web.php:385
msgid "Point to"
msgstr "Указывает на "
#: ../../web/templates/pages/edit_web.php:408
msgid "Additional FTP account(s)"
msgstr "Дополнительные учетные записи FTP"
#: ../../web/templates/pages/edit_web.php:430
#: ../../web/templates/pages/edit_web.php:537
#, php-format
msgid "Prefix %s will be added to username automatically"
msgstr "Префикс %s будет добавлен к имени пользователя автоматически"
#: ../../web/templates/pages/edit_web.php:446
#: ../../web/templates/pages/edit_web.php:552
#: ../../web/templates/pages/extmodules_passenger_manager.php:43
msgid "Path"
msgstr "Путь"
#: ../../web/templates/pages/edit_web.php:454
#: ../../web/templates/pages/edit_web.php:558
msgid "Send FTP credentials to email"
msgstr "Отправить данные FTP аккаунта на почту"
#: ../../web/templates/pages/edit_web.php:463
msgid "Add FTP account"
msgstr "Добавить учетную запись FTP"
#: ../../web/templates/pages/edit_web.php:472
msgid "Passenger options"
msgstr "Настройки passenger"
#: ../../web/templates/pages/edit_web.php:485
msgid "Enable passenger for domain"
msgstr "Включить passenger для домена"
#: ../../web/templates/pages/edit_web.php:490
msgid "Set ruby path for domain"
msgstr "Учтановить используемый ruby"
#: ../../web/templates/pages/edit_web.php:512
msgid "Enable logging to browser for domain"
msgstr "Включить логирование в браузер"
#: ../../web/templates/pages/edit_whitelabel.php:33
msgid "White Label Options"
msgstr "Настройки \"Белой Этикетки\""
@@ -3708,13 +3578,13 @@ msgstr "Сортировать по"
#: ../../web/templates/pages/list_mail_acc.php:56
#: ../../web/templates/pages/list_packages.php:32
#: ../../web/templates/pages/list_packages.php:35
#: ../../web/templates/pages/list_services.php:38
#: ../../web/templates/pages/list_services.php:43
#: ../../web/templates/pages/list_stats.php:29
#: ../../web/templates/pages/list_user.php:41
#: ../../web/templates/pages/list_user.php:54
#: ../../web/templates/pages/list_web.php:41
#: ../../web/templates/pages/list_web.php:49
#: ../../web/templates/pages/list_services.php:38
#: ../../web/templates/pages/list_services.php:43
msgid "Apply to selected"
msgstr "Применить к выбранному"
@@ -3732,9 +3602,9 @@ msgstr "Применить к выбранному"
#: ../../web/templates/pages/list_mail.php:73
#: ../../web/templates/pages/list_mail_acc.php:83
#: ../../web/templates/pages/list_packages.php:52
#: ../../web/templates/pages/list_services.php:100
#: ../../web/templates/pages/list_user.php:80
#: ../../web/templates/pages/list_web.php:76
#: ../../web/templates/pages/list_services.php:100
msgid "Select all"
msgstr "Выбрать всё"
@@ -3783,12 +3653,12 @@ msgstr "Время"
#: ../../web/templates/pages/list_mail_acc.php:164
#: ../../web/templates/pages/list_packages.php:118
#: ../../web/templates/pages/list_packages.php:119
#: ../../web/templates/pages/list_services.php:151
#: ../../web/templates/pages/list_services.php:152
#: ../../web/templates/pages/list_user.php:144
#: ../../web/templates/pages/list_user.php:145
#: ../../web/templates/pages/list_web.php:194
#: ../../web/templates/pages/list_web.php:195
#: ../../web/templates/pages/list_services.php:152
#: ../../web/templates/pages/list_services.php:153
msgid "Select"
msgstr "Выбрать"
@@ -4005,10 +3875,10 @@ msgstr "Вы уверены, что хотите заморозить дейст
#: ../../web/templates/pages/list_cron.php:133
#: ../../web/templates/pages/list_cron.php:136
#: ../../web/templates/pages/list_services.php:158
#: ../../web/templates/pages/list_services.php:168
#: ../../web/templates/pages/list_services.php:171
#: ../../web/templates/pages/extmodules.php:95
#: ../../web/templates/pages/extmodules.php:107
#: ../../web/templates/pages/list_services.php:163
#: ../../web/templates/pages/list_services.php:177
#: ../../web/templates/pages/list_services.php:180
msgid "Edit"
msgstr "Изменить"
@@ -4480,7 +4350,7 @@ msgstr "Панель управления Hestia"
#: ../../web/templates/pages/list_server_info.php:42
#: ../../web/templates/pages/list_services.php:106
#: ../../web/templates/pages/list_services.php:208
#: ../../web/templates/pages/list_services.php:217
msgid "CPU"
msgstr "Процессор"
@@ -4510,83 +4380,6 @@ msgstr "Политика"
msgid "Partially implemented"
msgstr "Частично реализовано"
#: ../../web/templates/pages/list_services.php:9
msgid "Task Monitor"
msgstr "Монитор задач"
#: ../../web/templates/pages/list_services.php:26
#: ../../web/templates/pages/list_services.php:180
#, php-format
msgid "Are you sure you want to restart %s?"
msgstr "Вы уверены, что хотите перезапустить %s?"
#: ../../web/templates/pages/list_services.php:31
msgid "ExtModules"
msgstr "Доп. модули"
#: ../../web/templates/pages/list_services.php:39
#: ../../web/templates/pages/list_services.php:117
msgid "Stop"
msgstr "Остановить"
#: ../../web/templates/pages/list_services.php:40
#: ../../web/templates/pages/list_services.php:124
msgid "Start"
msgstr "Запустить"
#: ../../web/templates/pages/list_services.php:68
msgid "Production Release"
msgstr "Версия продукта"
#: ../../web/templates/pages/list_services.php:74
msgid "Operating System"
msgstr "Операционная система"
#: ../../web/templates/pages/list_services.php:80
msgid "Load Average"
msgstr "Общая нагрузка"
#: ../../web/templates/pages/list_services.php:86
#: ../../web/templates/pages/list_services.php:105
#: ../../web/templates/pages/list_services.php:204
msgid "Uptime"
msgstr "Запущен"
#: ../../web/templates/pages/list_services.php:95
msgid "Services"
msgstr "Службы"
#: ../../web/templates/pages/list_services.php:102
#: ../../web/templates/pages/list_services.php:156
msgid "Service"
msgstr "Службы"
#: ../../web/templates/pages/list_services.php:104
#: ../../web/templates/pages/list_services.php:200
#: ../../web/templates/pages/list_updates.php:34
#: ../../web/templates/pages/list_updates.php:58
msgid "Description"
msgstr "Описание"
#: ../../web/templates/pages/list_services.php:107
#: ../../web/templates/pages/list_services.php:212
msgid "Memory"
msgstr "Память"
#: ../../web/templates/pages/list_services.php:191
#, php-format
msgid "Are you sure you want to stop service %s?"
msgstr "Вы уверены, что хотите остановить службу %s?"
#: ../../web/templates/pages/list_services.php:191
#, php-format
msgid "Are you sure you want to start service %s?"
msgstr "Вы уверены, что хотите запустить службу %s?"
#: ../../web/templates/pages/list_services.php:213
msgid "MB"
msgstr "МБ"
#: ../../web/templates/pages/list_ssl.php:82
msgid "SSL CSR"
msgstr "SSL CSR запрос"
@@ -4628,6 +4421,15 @@ msgstr "Включить автоматические обновления"
msgid "Package Names"
msgstr "Имена пакетов"
#: ../../web/templates/pages/list_updates.php:34
#: ../../web/templates/pages/list_updates.php:58
#: ../../web/templates/pages/list_services.php:104
#: ../../web/templates/pages/list_services.php:209
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:39
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:69
msgid "Description"
msgstr "Описание"
#: ../../web/templates/pages/list_user.php:43
msgid "Rebuild User Profile"
msgstr "Восстановить профиль пользователя"
@@ -4706,6 +4508,11 @@ msgid "%d web domain"
msgid_plural "%d web domains"
msgstr[0] ""
#: ../../web/templates/pages/list_webapps.php:16
#: ../../web/templates/pages/edit_web.php:15
msgid "Quick Install App"
msgstr "Установить приложение"
#: ../../web/templates/pages/list_webapps.php:29
msgid "Setup"
msgstr "Настроить"
@@ -4824,59 +4631,189 @@ msgstr ""
msgid "Please make sure ~/web/%s/public_html is empty!"
msgstr "Убедитесь, что ~/web/%s/public_html пуста!"
#: ../../web/templates/pages/extmodules.php:15
#: ../../web/templates/pages/edit_web.php:11
msgid "Purge NGINX Cache"
msgstr "Очистить кэш памяти NGINX"
#: ../../web/templates/pages/edit_web.php:56
msgid "Edit Web Domain"
msgstr "Изменить веб-домен"
#: ../../web/templates/pages/edit_web.php:71
msgid ""
"If the aliases changes, Let's Encrypt will obtain a new SSL certificate."
msgstr ""
"Если алиасы изменяются, Let's Encrypt запросит новый SSL сертификат."
#: ../../web/templates/pages/edit_web.php:88
msgid "Web Statistics"
msgstr "Статистика сайта"
#: ../../web/templates/pages/edit_web.php:107
msgid "Statistics Authorization"
msgstr "Ограниченный доступ к статистике"
#: ../../web/templates/pages/edit_web.php:133
msgid "Enable domain redirection"
msgstr "Включить редирект для домена"
#: ../../web/templates/pages/edit_web.php:140
#: ../../web/templates/pages/edit_web.php:146
#, php-format
msgid "Redirect visitors to %s"
msgstr "Перенаправлять посетителей на %s"
#: ../../web/templates/pages/edit_web.php:152
msgid "Redirect visitors to a custom domain or web address"
msgstr "Перенаправлять посетителей на домен или веб адрес"
#: ../../web/templates/pages/edit_web.php:157
msgid "Target domain or URL"
msgstr "Целевой домен или URL"
#: ../../web/templates/pages/edit_web.php:161
msgid "Status code"
msgstr "Код редиректа"
#: ../../web/templates/pages/edit_web.php:189
msgid "Enable automatic HTTPS redirection"
msgstr "Включить автоматическое перенаправление на HTTPS"
#: ../../web/templates/pages/edit_web.php:195
msgid "Enable HTTP Strict Transport Security (HSTS)"
msgstr "Включить строгую транспортную безопасность HTTP (HSTS)"
#: ../../web/templates/pages/edit_web.php:257
msgid "Hide Certificate"
msgstr "Скрыть сертификат"
#: ../../web/templates/pages/edit_web.php:257
#: ../../web/templates/pages/edit_web.php:258
msgid "Show Certificate"
msgstr "Показать сертификат"
#: ../../web/templates/pages/edit_web.php:292
msgid "Enable FastCGI cache"
msgstr "Включить кеш FastCGI"
#: ../../web/templates/pages/edit_web.php:301
msgid "Cache Duration"
msgstr "Время жизни кеша"
#: ../../web/templates/pages/edit_web.php:334
msgid "Proxy Support"
msgstr "Поддержка Proxy"
#: ../../web/templates/pages/edit_web.php:365
msgid "Set port for internal service"
msgstr "Установить порт для локального сервиса"
#: ../../web/templates/pages/edit_web.php:371
msgid "Proxy Extensions"
msgstr "Обработка Proxy"
#: ../../web/templates/pages/edit_web.php:380
msgid "Custom document root"
msgstr "Пользовательский document root"
#: ../../web/templates/pages/edit_web.php:385
msgid "Point to"
msgstr "Указывает на "
#: ../../web/templates/pages/edit_web.php:408
msgid "Additional FTP account(s)"
msgstr "Дополнительные учетные записи FTP"
#: ../../web/templates/pages/edit_web.php:430
#: ../../web/templates/pages/edit_web.php:537
#, php-format
msgid "Prefix %s will be added to username automatically"
msgstr "Префикс %s будет добавлен к имени пользователя автоматически"
#: ../../web/templates/pages/edit_web.php:446
#: ../../web/templates/pages/edit_web.php:552
#: ../../web/templates/pages/extmodules_passenger_manager.php:43
msgid "Path"
msgstr "Путь"
#: ../../web/templates/pages/edit_web.php:454
#: ../../web/templates/pages/edit_web.php:558
msgid "Send FTP credentials to email"
msgstr "Отправить данные FTP аккаунта на почту"
#: ../../web/templates/pages/edit_web.php:463
msgid "Add FTP account"
msgstr "Добавить учетную запись FTP"
#: ../../web/templates/pages/edit_web.php:472
msgid "Passenger options"
msgstr "Настройки passenger"
#: ../../web/templates/pages/edit_web.php:485
msgid "Enable passenger for domain"
msgstr "Включить passenger для домена"
#: ../../web/templates/pages/edit_web.php:490
msgid "Set ruby path for domain"
msgstr "Учтановить используемый ruby"
#: ../../web/templates/pages/edit_web.php:512
msgid "Enable logging to browser for domain"
msgstr "Включить логирование в браузер"
#: ../../web/templates/pages/extmodules.php:27
msgid "List modules"
msgstr "Список модулей"
#: ../../web/templates/pages/extmodules.php:19
#: ../../web/templates/pages/extmodules.php:50
#: ../../web/templates/pages/extmodules.php:31
#: ../../web/templates/pages/extmodules.php:62
msgid "Module ID"
msgstr "ID модуля"
#: ../../web/templates/pages/extmodules.php:20
#: ../../web/templates/pages/extmodules.php:54
#: ../../web/templates/pages/extmodules.php:32
#: ../../web/templates/pages/extmodules.php:66
msgid "Module name"
msgstr "Имя модуля"
#: ../../web/templates/pages/extmodules.php:22
#: ../../web/templates/pages/extmodules.php:78
#: ../../web/templates/pages/extmodules.php:34
#: ../../web/templates/pages/extmodules.php:90
msgid "Module description"
msgstr "Описание модуля"
#: ../../web/templates/pages/extmodules.php:23
#: ../../web/templates/pages/extmodules.php:82
#: ../../web/templates/pages/extmodules.php:35
#: ../../web/templates/pages/extmodules.php:94
msgid "Module state"
msgstr "Состояние"
#: ../../web/templates/pages/extmodules.php:24
#: ../../web/templates/pages/extmodules.php:86
#: ../../web/templates/pages/extmodules.php:36
#: ../../web/templates/pages/extmodules.php:98
msgid "Requirements"
msgstr "Зависимости"
#: ../../web/templates/pages/extmodules.php:25
#: ../../web/templates/pages/extmodules.php:90
#: ../../web/templates/pages/extmodules.php:37
#: ../../web/templates/pages/extmodules.php:102
msgid "Configuration"
msgstr "Конфигурация"
#: ../../web/templates/pages/extmodules.php:35
#: ../../web/templates/pages/extmodules.php:47
msgid "Enable module"
msgstr "Включить модуль"
#: ../../web/templates/pages/extmodules.php:38
#: ../../web/templates/pages/extmodules.php:50
#, php-format
msgid "Are you sure you want to enable module %s?"
msgstr "Вы уверены, что хотите включить модуль %s?"
#: ../../web/templates/pages/extmodules.php:42
#: ../../web/templates/pages/extmodules.php:54
msgid "Disable module"
msgstr "Отключить модуль"
#: ../../web/templates/pages/extmodules.php:45
#: ../../web/templates/pages/extmodules.php:57
#, php-format
msgid "Are you sure you want to disable module %s?"
msgstr "Вы уверены, что хотите отключить модуль %s?"
#: ../../web/templates/pages/extmodules.php:114
#: ../../web/templates/pages/extmodules.php:126
msgid "Extended modules list"
msgstr "Список расширенных модулей"
@@ -4896,6 +4833,110 @@ msgstr "Вы уверены, что хотите удалить запись?"
msgid "Ruby available list"
msgstr "Список доступных ruby"
#: ../../web/templates/pages/list_services.php:9
msgid "Task Monitor"
msgstr "Монитор задач"
#: ../../web/templates/pages/list_services.php:26
#: ../../web/templates/pages/list_services.php:189
#, php-format
msgid "Are you sure you want to restart %s?"
msgstr "Вы уверены, что хотите перезапустить %s?"
#: ../../web/templates/pages/list_services.php:31
msgid "ExtModules"
msgstr "Доп. модули"
#: ../../web/templates/pages/list_services.php:39
#: ../../web/templates/pages/list_services.php:117
msgid "Stop"
msgstr "Остановить"
#: ../../web/templates/pages/list_services.php:40
#: ../../web/templates/pages/list_services.php:124
msgid "Start"
msgstr "Запустить"
#: ../../web/templates/pages/list_services.php:68
msgid "Production Release"
msgstr "Версия продукта"
#: ../../web/templates/pages/list_services.php:74
msgid "Operating System"
msgstr "Операционная система"
#: ../../web/templates/pages/list_services.php:80
msgid "Load Average"
msgstr "Общая нагрузка"
#: ../../web/templates/pages/list_services.php:86
#: ../../web/templates/pages/list_services.php:105
#: ../../web/templates/pages/list_services.php:213
msgid "Uptime"
msgstr "Запущен"
#: ../../web/templates/pages/list_services.php:95
msgid "Services"
msgstr "Службы"
#: ../../web/templates/pages/list_services.php:102
#: ../../web/templates/pages/list_services.php:157
msgid "Service"
msgstr "Службы"
#: ../../web/templates/pages/list_services.php:107
#: ../../web/templates/pages/list_services.php:221
msgid "Memory"
msgstr "Память"
#: ../../web/templates/pages/list_services.php:200
#, php-format
msgid "Are you sure you want to stop service %s?"
msgstr "Вы уверены, что хотите остановить службу %s?"
#: ../../web/templates/pages/list_services.php:200
#, php-format
msgid "Are you sure you want to start service %s?"
msgstr "Вы уверены, что хотите запустить службу %s?"
#: ../../web/templates/pages/list_services.php:222
msgid "MB"
msgstr "МБ"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:27
msgid "Available PHP list"
msgstr "Список доступных PHP"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:31
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:40
msgid "PHP version"
msgstr "Версия PHP"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:45
msgid "Change modules list"
msgstr "Изменить список модулей"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:46
msgid "Change modules list for PHP"
msgstr "Изменить список модулей для PHP"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules.php:59
msgid "PHP modules tunning"
msgstr "Настройка PHP модулей"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:32
msgid "Available modules list for version PHP"
msgstr "Доступный список модулей для версии PHP"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:38
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:47
msgid "PHP module name"
msgstr "Имя PHP модуля"
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:82
msgid "PHP modules list"
msgstr "Список PHP модулей"
#: ../../web/update/hestia/index.php:20
#, php-format
msgid "Error: %s update failed."

View File

@@ -145,13 +145,18 @@ function authenticate_user($user, $password, $twofa = "") {
} else {
$salt = $pam[$user]["SALT"];
$method = $pam[$user]["METHOD"];
$round = $pam[$user]["ROUND"];
if ($method == "md5") {
$hash = crypt($password, '$1$' . $salt . '$');
}
if ($method == "sha-512") {
$hash = crypt($password, '$6$rounds=5000$' . $salt . '$');
$hash = str_replace('$rounds=5000', "", $hash);
if ($round == "") {
$hash = crypt($password, '$6$rounds=5000$' . $salt . '$');
$hash = str_replace('$rounds=5000', "", $hash);
} else {
$hash = crypt($password, '$6$' . $round . '$' . $salt . '$');
}
}
if ($method == "yescrypt") {
$fp = tmpfile();

View File

@@ -38,20 +38,20 @@ abstract class BaseSetup implements InstallerInterface {
}
public function info() {
$this->appInfo["enabled"] = true;
//$this->appInfo["enabled"] = true;
if (isset($this->config["server"]["php"]["supported"])) {
$this->appInfo["php_support"] = $this->config["server"]["php"]["supported"];
} else {
$this->appInfo["php_support"] = [
"5.6",
"7.0",
"7.1",
"7.2",
"7.3",
"7.4",
"8.0",
"8.1",
"8.2",
"56",
"70",
"71",
"72",
"73",
"74",
"80",
"81",
"82",
];
}
return $this->appInfo;

View File

@@ -9,7 +9,7 @@ class DokuWikiSetup extends BaseSetup {
protected $appInfo = [
"name" => "DokuWiki",
"group" => "wiki",
"enabled" => true,
"enabled" => false,
"version" => "2023-04-04a",
"thumbnail" => "dokuwiki-logo.svg",
];
@@ -57,7 +57,7 @@ class DokuWikiSetup extends BaseSetup {
"template" => "default",
],
"php" => [
"supported" => ["7.3", "7.4", "8.0", "8.1"],
"supported" => ["73", "74", "80", "81"],
],
],
];

View File

@@ -10,7 +10,7 @@ class DrupalSetup extends BaseSetup {
protected $appInfo = [
"name" => "Drupal",
"group" => "cms",
"enabled" => "yes",
"enabled" => false,
"version" => "latest",
"thumbnail" => "drupal-thumb.png",
];
@@ -30,7 +30,7 @@ class DrupalSetup extends BaseSetup {
"template" => "drupal-composer",
],
"php" => [
"supported" => ["8.1", "8.2"],
"supported" => ["81", "82"],
],
],
];

View File

@@ -32,7 +32,7 @@ class FlarumSetup extends BaseSetup {
"template" => "flarum",
],
"php" => [
"supported" => ["8.0", "8.1", "8.2"],
"supported" => ["80", "81", "82"],
],
],
];

View File

@@ -32,7 +32,7 @@ class GravSetup extends BaseSetup {
"template" => "grav",
],
"php" => [
"supported" => ["7.4", "8.0", "8.1"],
"supported" => ["74", "80", "81"],
],
],
];

View File

@@ -26,7 +26,7 @@ class LaravelSetup extends BaseSetup {
"template" => "laravel",
],
"php" => [
"supported" => ["8.1", "8.2"],
"supported" => ["81", "82"],
],
],
];

View File

@@ -9,7 +9,7 @@ class MediaWikiSetup extends BaseSetup {
protected $appInfo = [
"name" => "MediaWiki",
"group" => "cms",
"enabled" => true,
"enabled" => false,
"version" => "1.40.0",
"thumbnail" => "MediaWiki-2020-logo.svg", //Max size is 300px by 300px
];
@@ -34,7 +34,7 @@ class MediaWikiSetup extends BaseSetup {
"template" => "default",
],
"php" => [
"supported" => ["7.4", "8.0"],
"supported" => ["74", "80"],
],
],
];

View File

@@ -8,7 +8,7 @@ class NextcloudSetup extends BaseSetup {
protected $appInfo = [
"name" => "Nextcloud",
"group" => "cloud",
"enabled" => true,
"enabled" => false,
"version" => "latest",
"thumbnail" => "nextcloud-thumb.png",
];
@@ -29,7 +29,7 @@ class NextcloudSetup extends BaseSetup {
"template" => "owncloud",
],
"php" => [
"supported" => ["8.0", "8.1", "8.2"],
"supported" => ["80", "81", "82"],
],
],
];

View File

@@ -34,7 +34,7 @@ class OpencartSetup extends BaseSetup {
"template" => "opencart",
],
"php" => [
"supported" => ["7.4", "8.0", "8.1", "8.2"],
"supported" => ["74", "80", "81", "82"],
],
],
];

View File

@@ -8,7 +8,7 @@ class PrestashopSetup extends BaseSetup {
protected $appInfo = [
"name" => "Prestashop",
"group" => "ecommerce",
"enabled" => true,
"enabled" => false,
"version" => "8.1.0",
"thumbnail" => "prestashop-thumb.png",
];
@@ -35,7 +35,7 @@ class PrestashopSetup extends BaseSetup {
"template" => "prestashop",
],
"php" => [
"supported" => ["8.0", "8.1"],
"supported" => ["80", "81"],
],
],
];

View File

@@ -8,7 +8,7 @@ class SymfonySetup extends BaseSetup {
protected $appInfo = [
"name" => "Symfony",
"group" => "framework",
"enabled" => true,
"enabled" => false,
"version" => "latest",
"thumbnail" => "symfony-thumb.png",
];
@@ -26,7 +26,7 @@ class SymfonySetup extends BaseSetup {
"template" => "symfony4-5",
],
"php" => [
"supported" => ["8.1", "8.2"],
"supported" => ["81", "82"],
],
],
];

View File

@@ -10,7 +10,7 @@ class WordpressSetup extends BaseSetup {
protected $appInfo = [
"name" => "WordPress",
"group" => "cms",
"enabled" => true,
"enabled" => false,
"version" => "latest",
"thumbnail" => "wp-thumb.png",
];
@@ -61,7 +61,7 @@ class WordpressSetup extends BaseSetup {
"template" => "wordpress",
],
"php" => [
"supported" => ["7.4", "8.0", "8.1", "8.2"],
"supported" => ["74", "80", "81", "82"],
],
],
];

View File

@@ -0,0 +1,62 @@
<!-- Begin toolbar -->
<div class="toolbar">
<div class="toolbar-inner">
<div class="toolbar-buttons">
<a class="button button-secondary button-back js-button-back" href="/list/server/">
<i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
</a>
</div>
</div>
</div>
<!-- End toolbar -->
<div class="container">
<?php
if (!empty($error_message)) {
?>
<div class="u-text-center inline-alert inline-alert-danger u-mb20" role="alert">
<i class="fas fa-circle-exclamation"></i>
<p><?= $error_message ?></p>
</div>
<?php
}
?>
<h1 class="u-text-center u-hide-desktop u-mt20 u-pr30 u-mb20 u-pl30"><?= _("Available PHP list") ?></h1>
<div class="units-table js-units-container">
<div class="units-table-header">
<div class="units-table-cell u-text-center"><?= _("PHP version") ?></div>
<div class="units-table-cell u-text-center"><?= _("Action") ?></div>
</div>
<?php
foreach ($phps as $key => $value) {
?>
<div class="units-table-row js-unit">
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("PHP version") ?>:</span>
<?php echo "PHP ".$phps[$key]["PHPVER"]; ?>
</div>
<div class="units-table-cell u-text-center-desktop">
<span class="u-hide-desktop"><?= _("Action") ?>:</span>
<?= _("Change modules list") ?>
<a href="/extm/php_brepo_modules/edit/?ver=<?= urlencode($phps[$key]['PHPVER']) ?>" title="<?= _("Change modules list for PHP") ?><?= $phps[$key]['PHPVER'] ?>">
<i class="fa-solid fa-gear icon-purple"></i>
</a>
</div>
</div>
<?php } ?>
</div>
</div>
<footer class="app-footer">
<div class="container app-footer-inner">
<p>
<?= _("PHP modules tunning") ?>
</p>
</div>
</footer>

View File

@@ -0,0 +1,85 @@
<!-- Begin toolbar -->
<div class="toolbar">
<div class="toolbar-inner">
<div class="toolbar-buttons">
<a class="button button-secondary button-back js-button-back" href="/extm/php_brepo_modules/edit/">
<i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
</a>
</div>
<div class="toolbar-buttons">
<button type="submit" class="button" form="main-form">
<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
</button>
</div>
</div>
</div>
<!-- End toolbar -->
<div class="container">
<?php
if (!empty($error_message)) {
?>
<div class="u-text-center inline-alert inline-alert-danger u-mb20" role="alert">
<i class="fas fa-circle-exclamation"></i>
<p><?= $error_message ?></p>
</div>
<?php
}
?>
<h1 class="u-text-center u-mt20 u-pr30 u-mb20 u-pl30"><?= _("Available modules list for version PHP") ?> <?= $php_vers ?></h1>
<form id="main-form" name="v_ruby_path" method="post">
<input type="hidden" name="save" value="save">
<div class="units-table js-units-container">
<div class="units-table-header">
<div class="units-table-cell u-text-center"><?= _("PHP module name") ?></div>
<div class="units-table-cell u-text-center"><?= _("Description") ?></div>
</div>
<?php
foreach ($phps_modules as $key => $value) {
?>
<div class="units-table-row js-unit">
<div class="units-table-cell js-unit">
<span class="u-hide-desktop"><?= _("PHP module name") ?>:</span>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
name="v_php_module_name[]"
id="v_php_module_name[]"
<?= $phps_modules[$key]["STATE"] != "disabled" ? "checked" : "" ?>
<?php
if ($phps_modules[$key]["STATE"] != "disabled") {
echo " value=\"" . $phps_modules[$key]["STATE"] . "\"";
} else {
echo " value=\"" . $phps_modules[$key]["MODNAME"] ."\"";
}
?>
>
<label for="v_policy_user_change_theme">
<?= $phps_modules[$key]["MODNAME"] ?>
</label>
</div>
</div>
<div class="units-table-cell">
<span class="u-hide-desktop"><?= _("Description") ?>:</span>
<?= $phps_modules[$key]["DESCR"] ?>
</div>
</div>
<?php } ?>
</div>
</form>
</div>
<footer class="app-footer">
<div class="container app-footer-inner">
<p>
<?= _("PHP modules list") ?>
</p>
</div>
</footer>

View File

@@ -126,15 +126,16 @@
$spnd_icon_class = 'icon-green';
$state_icon = 'fa-circle-minus icon-red';
}
$vers="";
if (in_array($key, $phpfpm)){
$edit_url="php";
preg_match('/\d+/', $key, $matches);
$vers=$matches[0] ?? '82';;
} else {
$edit_url=$key;
}
if (in_array($key, $clamav_names)){
$edit_url="clamav-daemon";
} else {
$edit_url=$key;
}
$cpu = $data[$key]['CPU'] / 10;
@@ -155,7 +156,11 @@
<div class="units-table-cell units-table-heading-cell u-text-bold">
<span class="u-hide-desktop"><?= _("Service") ?>:</span>
<i class="fas <?= $state_icon ?> u-mr5"></i>
<a href="/edit/server/<? echo $edit_url ?>/" title="<?= _("Edit") ?>: <?= $key ?>">
<a href="/edit/server/<? echo $edit_url ?>/<?php
if ($vers!=""){
echo "?vers=" . urlencode($vers);
}
?>" title="<?= _("Edit") ?>: <?= $key ?>">
<?= $key ?>
</a>
</div>
@@ -164,7 +169,11 @@
<li class="units-table-row-action shortcut-enter" data-key-action="href">
<a
class="units-table-row-action-link"
href="/edit/server/<? echo $edit_url ?>/"
href="/edit/server/<? echo $edit_url ?>/<?php
if ($vers!=""){
echo "?vers=". urlencode($vers);
}
?>"
title="<?= _("Edit") ?>"
>
<i class="fas fa-pencil icon-orange"></i>