Compare commits

...

20 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
68 changed files with 9371 additions and 15265 deletions

View File

@@ -2,7 +2,17 @@
All notable changes to this project will be documented in this file. 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 - 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) - 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> <h2 align="center">Легкая и мощная панель управления для современного сервера. Организуй собственный сервер в два счета.</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>
<p align="center"><strong>Ссылки на оригинальный проект для Ubuntu и Debian:</strong> | <a href="https://www.hestiacp.com/">HestiaCP.com</a> |
</p>
<p align="center"> <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> <a href="https://hestiadocs.brepo.ru/">Documentation for version with RPM support</a>
</p> </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 Панель управления Hestia предназначена для предоставления администраторам простого в использовании веб-интерфейса и интерфейса командной строки, что позволяет им быстро развертывать веб-домены, почтовые аккаунты, зоны DNS и базы данных и управлять ими с единой центральной панели без необходимости вручную развертывать и настраивать отдельные компоненты или сервисы.
- 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).
## 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 - **MSVSphere:** 9
- **AlmaLinux:** 9 - **AlmaLinux:** 9
- **RockyLinux:** 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
- 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!
## 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 Чтобы начать установку, вам нужно войти в систему как **root** или пользователь с правами суперпользователя. Вы можете выполнить установку непосредственно из командной строки или удалённо через SSH:
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:
```bash ```bash
ssh root@your.server ssh root@your.server
``` ```
### Step 2: Download ### Шаг 2. Загрузка
Download the installation script for the latest release: Загрузите установочный скрипт для последней версии:
```bash ```bash
wget https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install.sh 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
bash hst-install.sh 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
bash hst-install.sh -h 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 ```bash
dnf update 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 # # 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 # Checking quota package
quota=$(which --skip-alias --skip-functions quota 2> /dev/null) quota=$(which --skip-alias --skip-functions quota 2> /dev/null)
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
if [ -f "/etc/redhat-release" ]; then dnf -y install quota > /dev/null 2>&1
dnf -y install quota > /dev/null 2>&1
else
export DEBIAN_FRONTEND=noninteractive
apt-get -y install quota > /dev/null 2>&1
fi
check_result $? "quota package installation failed" "$E_UPDATE" check_result $? "quota package installation failed" "$E_UPDATE"
fi fi
@@ -54,34 +36,70 @@ check_hestia_demo_mode
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding group and user quota on /home partition # 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) 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 ' ') 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}') opt=$(sed -n ${lnr}p /etc/fstab | awk '{print $4}')
fnd='usrquota\|grpquota\|usrjquota=aquota.user\|grpjquota=aquota.group\|jqfmt=vfsv0' if [ "$file_system" == "xfs" ]; then
if [ $(echo $opt | tr ',' '\n' | grep -x $fnd | wc -l) -ne 5 ]; then fnd='usrquota\|grpquota'
old=$(echo $(echo $opt | tr ',' '\n' | grep -v 'usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt=') | tr ' ' ',') if [ $(echo $opt | tr ',' '\n' | grep -x $fnd | wc -l) -ne 2 ]; then
new='usrquota,grpquota,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0' old=$(echo $(echo $opt | tr ',' '\n' | grep -v 'usrquota\|grpquota') | tr ' ' ',')
sed -i "$lnr s/$opt/$old,$new/" /etc/fstab new='usrquota,grpquota'
mount -o remount "$mnt" 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 fi
# Adding v2 group and user quota index if [ "$file_system" == "ext4" ]; then
if [ ! -e "$mnt/aquota.user" ] || [ ! -e "$mnt/aquota.group" ]; then # Adding v2 group and user quota index
quotacheck -avcugm > /dev/null 2>&1 if [ ! -e "$mnt/aquota.user" ] || [ ! -e "$mnt/aquota.group" ]; then
fi quotacheck -avcugm > /dev/null 2>&1
fi
# Adding quotacheck on reboot # Adding quotacheck on reboot
touch /forcequotacheck touch /forcequotacheck
# Adding cron job # Adding cron job
echo '#!/bin/bash' > /etc/cron.daily/quotacheck echo '#!/bin/bash' > /etc/cron.daily/quotacheck
echo 'touch /forcequotacheck' >> /etc/cron.daily/quotacheck echo 'touch /forcequotacheck' >> /etc/cron.daily/quotacheck
chmod a+x /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 fi
# Updating hestia.conf value # Updating hestia.conf value

View File

@@ -22,11 +22,11 @@ source $HESTIA/func/main.sh
source_conf "$HESTIA/conf/hestia.conf" source_conf "$HESTIA/conf/hestia.conf"
source_conf "$HESTIA/install/upgrade/upgrade.conf" source_conf "$HESTIA/install/upgrade/upgrade.conf"
if [ -f /etc/redhat-release ]; then
for elem in "${!multiphp_v[@]}"; do for elem in "${!multiphp_v[@]}"; do
multiphp_v[$elem]=$(convert_dot_version_to_non_dot "${multiphp_v[$elem]}") multiphp_v[$elem]=$(convert_dot_version_to_non_dot "${multiphp_v[$elem]}")
done done
fi
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
@@ -38,27 +38,22 @@ if [ -z "$WEB_BACKEND" ]; then
fi fi
# Set file locations # Set file locations
if [ -f /etc/redhat-release ]; then php_fpm=""
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service" if [ "$LOCAL_PHP" == "yes" ]; then
php_fpm="/usr/lib/systemd/system/brepo-php-fpm$version.service"
else else
php_fpm="/etc/init.d/php$version-fpm" php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
fi fi
# Verify php version format # Verify php version format
if [ -f /etc/redhat-release ]; then if [[ ! $version =~ ^[0-9][0-9]+ ]]; 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 "The specified PHP version format is invalid, it should look like [0-9][0-9]." echo "Example: 70, 74, 80"
echo "Example: 70, 74, 80" exit "$E_INVALID"
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
fi fi
# Check if php version already exists # Check if php version already exists
if [ -f "$php_fpm" ] && [ -f "$HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl" ]; then if [ -f "$php_fpm" ] && [ -f "$HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl" ]; then
echo "ERROR: Specified PHP version is already installed." echo "ERROR: Specified PHP version is already installed."
@@ -77,48 +72,48 @@ check_hestia_demo_mode
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # 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 # Check is version is 7.1 or below to add mcrypt
php$version-fpm php$version-gd php$version-intl php$version-mysql if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then
php$version-soap php$version-xml php$version-zip php$version-json php$version-bz2 mph="$mph php$version-mcrypt"
php$version-pspell php$version-imagick php$version-pgsql php$version-imap php$version-ldap" fi
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 # Check if version is 8.0 or higher and drop php json.
if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then if [[ ${version:0:1} == "8" ]]; then
mph="$mph php$version-mcrypt" mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-json//")
fi fi
# Check if version is 8.0 or higher and drop php json. if ! echo "$DB_SYSTEM" | grep -w 'mysql' > /dev/null; then
if [[ ${version:0:1} == "8" ]]; then mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-mysql//")
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-json//") fi
fi
if ! echo "$DB_SYSTEM" | grep -w 'mysql' > /dev/null; then if ! echo "$DB_SYSTEM" | grep -w 'pgsql' > /dev/null; then
mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-mysql//") mph=$(echo "$mph" | sed -e "s/php$version\(-php\)\{0,1\}-pgsql//")
fi fi
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 # Install php packages
if [ -f '/etc/redhat-release' ]; then dnf install -q -y $mph > /dev/null 2>&1 &
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
BACK_PID=$! BACK_PID=$!
# Check if package installation is done, print a spinner # Check if package installation is done, print a spinner
@@ -133,17 +128,27 @@ done
# Do a blank echo to get the \n back # Do a blank echo to get the \n back
echo 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 # Check if installation was successful
if [ ! -f "$php_fpm" ]; then if [ ! -f "$php_fpm" ]; then
echo "ERROR: Installation failed, please run the following command manually for debugging:" echo "ERROR: Installation failed, please run the following command manually for debugging:"
if [ -f '/etc/redhat-release' ]; then echo "dnf install $mph"
echo "dnf install $mph"
else
echo "apt-get install $mph"
fi
fi 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) result_alt_php=$(alternatives --display php | grep /usr/bin/php$version)
if [ -z "$result_alt_php" ]; then if [ -z "$result_alt_php" ]; then
alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1 alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1
@@ -173,7 +178,17 @@ fi
# Configure fpm # Configure fpm
v_tpl=${version//./} 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 systemctl enable php${version}-php-fpm
rm -f /etc/opt/remi/php${version}/php-fpm.d/* 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/ 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/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/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 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 fi
# Install backend template # Install backend template
cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl \ cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl \
$HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.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' check_args '1' "$#" 'VERSION'
# Verify php version format # Verify php version format
if [ -f /etc/redhat-release ]; then if [[ ! $version =~ ^[0-9][0-9]+ ]]; 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 "The specified PHP version format is invalid, it should look like [0-9][0-9]." echo "Example: 70, 74, 80"
echo "Example: 70, 74, 80" exit "$E_INVALID"
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
fi fi
# Check if php version exists # Check if php version exists
@@ -50,18 +42,19 @@ check_hestia_demo_mode
#----------------------------------------------------------# #----------------------------------------------------------#
# Set file locations # Set file locations
if [ -f /etc/redhat-release ]; then php_fpm=""
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service" if [ "$LOCAL_PHP" == "yes" ]; then
php_fpm="/usr/lib/systemd/system/brepo-php-fpm$version.service"
else else
php_fpm="/etc/init.d/php$version-fpm" php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
fi 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 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 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 fi
for user in $($BIN/v-list-sys-users plain); do 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-web
$BIN/v-restart-proxy $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) result_alt_php=$(alternatives --display php | grep /usr/bin/php$version)
if [ -z "$result_alt_php" ]; then if [ -z "$result_alt_php" ]; then
alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1 alternatives --install /usr/bin/php php /usr/bin/php$version 1 > /dev/null 2>&1
fi fi
fi fi
update-alternatives --set php /usr/bin/php$version if [ "$LOCAL_PHP" == "yes" ]; then
if [ $? -eq 0 ]; then update-alternatives --set php /opt/brepo/php${version}/bin/php
update-alternatives --install /usr/bin/php php /usr/bin/php$version 1 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 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 fi
/usr/bin/hestiacp-php-admin system $version /usr/bin/hestiacp-php-admin system $version

View File

@@ -40,6 +40,28 @@ check_hestia_demo_mode
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # 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 # Defining dst config path
case $service in case $service in
@@ -50,7 +72,13 @@ case $service in
exim4) dst='/etc/exim4/exim4.conf.template' ;; exim4) dst='/etc/exim4/exim4.conf.template' ;;
vsftpd) dst=$(find /etc/vsftpd* -name 'vsftpd.conf') ;; vsftpd) dst=$(find /etc/vsftpd* -name 'vsftpd.conf') ;;
proftpd) dst=$(find /etc/proftpd* -name 'proftpd.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) ;; mysql) dst=$(find /etc/my* -name my.cnf) ;;
mysqld) dst=$(find /etc/my* -name my.cnf) ;; mysqld) dst=$(find /etc/my* -name my.cnf) ;;
mariadb) 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 [ "$service" = 'php' ]; then
if [ "$(multiphp_count)" -gt 0 ]; then if [ "$(multiphp_count)" -gt 0 ]; then
service="php-fpm" service="php-fpm"
elif [ "$WEB_SYSTEM" = 'apache2' ]; then elif [ "$WEB_SYSTEM" = 'httpd' ]; then
service="$WEB_SYSTEM" service="$WEB_SYSTEM"
fi fi
fi fi

View File

@@ -30,32 +30,54 @@ check_hestia_demo_mode
#----------------------------------------------------------# #----------------------------------------------------------#
# Deleting group and user quota on /home partition # 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) mnt=$(df -P /home | awk '{print $6}' | tail -n1)
lnr=$(cat -n /etc/fstab | awk '{print $1,$3}' | grep "$mnt$" | cut -f 1 -d ' ') 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}') opt=$(sed -n ${lnr}p /etc/fstab | awk '{print $4}')
fnd='usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt=' if [ "$file_system" == "xfs" ]; then
if [ -n "$(echo $opt | grep $fnd)" ]; then fnd='usrquota\|grpquota'
rep=$(echo $(echo $opt | tr ',' '\n' | grep -v $fnd) | tr ' ' ',') if [ -n "$(echo $opt | grep $fnd)" ]; then
sed -i "$lnr s/$opt/$rep/" /etc/fstab rep=$(echo $(echo $opt | tr ',' '\n' | grep -v $fnd) | tr ' ' ',')
mount -o remount "$mnt" sed -i "$lnr s/$opt/$rep/" /etc/fstab
fi mount -o remount "$mnt"
# 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
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 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 # Updating hestia.conf value
if [ -z "$(grep DISK_QUOTA $HESTIA/conf/hestia.conf)" ]; then if [ -z "$(grep DISK_QUOTA $HESTIA/conf/hestia.conf)" ]; then
echo "DISK_QUOTA='no'" >> $HESTIA/conf/hestia.conf echo "DISK_QUOTA='no'" >> $HESTIA/conf/hestia.conf

View File

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

View File

@@ -32,27 +32,21 @@ if [ -z "$WEB_BACKEND" ]; then
fi fi
# Set file locations # Set file locations
if [ -f /etc/redhat-release ]; then php_fpm=""
php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service" if [ "$LOCAL_PHP" == "yes" ]; then
php_fpm="/usr/lib/systemd/system/brepo-php-fpm$version.service"
else else
php_fpm="/etc/init.d/php$version-fpm" php_fpm="/usr/lib/systemd/system/php$version-php-fpm.service"
fi fi
# Verify php version format # Verify php version format
if [ -f /etc/redhat-release ]; then if [[ ! $version =~ ^[0-9][0-9]+ ]]; then
if [[ ! $version =~ ^[0-9][0-9]+ ]]; then echo "The PHP version format is invalid, it should look like [0-9][0-9]."
echo "The PHP version format is invalid, it should look like [0-9][0-9]." echo "Example: 70, 74, 80"
echo "Example: 70, 74, 80" exit "$E_INVALID"
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
fi fi
# Remove backend template # Remove backend template
[ -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl ] && rm -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl [ -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 # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl mph=""
php$version-fpm php$version-gd php$version-intl php$version-mysql if [ "$LOCAL_PHP" == "yes" ]; then
php$version-soap php$version-xml php$version-zip php$version-mbstring mph="brepo-php$version brepo-php$version-fpm"
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
else else
if [[ $(echo "$version 7.2" | awk '{print ($1 < $2)}') == 1 ]]; then mph="php$version-common php$version-mbstring php$version-bcmath php$version-cli php$version-curl
mph="$mph php$version-mcrypt" php$version-fpm php$version-gd php$version-intl php$version-mysql
fi 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 fi
# Purge php packages # Purge php packages
if [ -f '/etc/redhat-release' ]; then dnf remove -y $mph > /dev/null 2>&1 &
dnf remove -y $mph > /dev/null 2>&1 &
else
apt-get -y purge $mph > /dev/null 2>&1 &
fi
BACK_PID=$! BACK_PID=$!
# Check if package removal is done, print a spinner # Check if package removal is done, print a spinner
@@ -119,40 +108,36 @@ echo
# Check if installation was successfully # Check if installation was successfully
if [ -f "$php_fpm" ]; then if [ -f "$php_fpm" ]; then
echo "ERROR: Uninstallation failed, please run the following command manually for debugging:" echo "ERROR: Uninstallation failed, please run the following command manually for debugging:"
if [ -f '/etc/redhat-release' ]; then echo "dnf remove $mph"
echo "dnf remove $mph"
else
echo "apt-get purge $mph"
fi
exit 1 exit 1
fi fi
# Cleanup php folder # Cleanup php folder
if [ -f '/etc/redhat-release' ]; then if [ "$LOCAL_PHP" == "yes" ]; then
[[ -d /etc/opt/remi/php$version ]] && rm -rf "/etc/opt/remi/php$version" [[ -d /opt/brepo/php$version ]] && rm -rf "/opt/brepo/php$version"
else else
[[ -d /etc/php/$version ]] && rm -rf "/etc/php/$version" [[ -d /etc/opt/remi/php$version ]] && rm -rf "/etc/opt/remi/php$version"
fi 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 if [ "$WEB_BACKEND" = "php-fpm" ]; then
conf=$(find /etc/opt/remi/php* -name www.conf) conf=$(find /etc/opt/remi/php* -name www.conf)
# Check if www.conf exists # Check if www.conf exists
if [ -z "$conf" ]; then if [ -z "$conf" ]; then
# If not grab the "last php version # If not grab the "last php version
last=$($BIN/v-list-sys-php "shell" | tail -n1) 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 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
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
$BIN/v-restart-web-backend $BIN/v-restart-web-backend
fi fi
fi fi

View File

@@ -2,7 +2,7 @@
# info: action with extended modules # info: action with extended modules
# options: MODULE_ID [MODULE_RELATED_COMMNDS] # 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 # This function enables and disables additional modules

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# info: list php config parameters # info: list php config parameters
# options: [FORMAT] # options: [VERSION] [FORMAT]
# #
# example: v-list-sys-php-config # example: v-list-sys-php-config
# #
@@ -11,7 +11,8 @@
#----------------------------------------------------------# #----------------------------------------------------------#
# Argument definition # Argument definition
format=${1-shell} php_ver=${1-default}
format=${2-shell}
# Includes # Includes
# shellcheck source=/etc/hestiacp/hestia.conf # shellcheck source=/etc/hestiacp/hestia.conf
@@ -61,24 +62,53 @@ csv_list() {
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # 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 # Defining config path
if [ -f /etc/redhat-release ]; then if [ "$LOCAL_PHP" == "yes" ]; then
config_path=$(find /etc/opt/remi/php* -name php.ini) config_path=$(find /opt/brepo/php${php_ver}/* -name php.ini)
else else
config_path=$(find /etc/php* -name php.ini) config_path=$(find /etc/opt/remi/php${php_ver}/* -name php.ini)
fi fi
config_count=$(echo "$config_path" | wc -l) config_count=$(echo "$config_path" | wc -l)
if [ "$config_count" -gt 1 ]; then if [ "$config_count" -gt 1 ]; then
if [ -f /etc/redhat-release ]; then if [ "$LOCAL_PHP" == "yes" ]; then
multiphp_versions=$(ls -d /etc/opt/remi/php*/php-fpm.d 2> /dev/null | wc -l) multiphp_versions=$(ls -d /opt/brepo/php*/etc/php-fpm.d 2> /dev/null | wc -l)
else 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 fi
if [ "$WEB_BACKEND" = 'php-fpm' ] || [ "$multiphp_versions" -gt 0 ]; then 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 else
config_path=$(echo "$config_path" | grep apache) config_path=$(echo "$config_path" | grep httpd)
fi fi
fi fi
@@ -88,7 +118,7 @@ keys="$keys |upload_max_filesize |post_max_size"
keys="$keys |display_errors |error_reporting " keys="$keys |display_errors |error_reporting "
# Reading config # Reading config
config=$(cat $config_path | grep -v "^;") config=$(cat "$config_path" | grep -v "^;")
# Listing data # Listing data
case $format in case $format in

View File

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

View File

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

View File

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

View File

@@ -43,6 +43,15 @@ if [ "$clicmd" = "wp" ]; then
clicmd="$homedir/.wp-cli/wp" clicmd="$homedir/.wp-cli/wp"
fi 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 if [ -z "$(which "$clicmd")" ]; then
check_result "$E_NOTEXIST" "Cli command does not exist $clicmd" check_result "$E_NOTEXIST" "Cli command does not exist $clicmd"
fi fi
@@ -61,15 +70,6 @@ if [ "$basecmd" != 'ps' -a \
"$basecmd" != 'egrep' -a \ "$basecmd" != 'egrep' -a \
"$basecmd" != 'sed' -a \ "$basecmd" != 'sed' -a \
"$basecmd" != 'cat' -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" != 'php' -a \
"$basecmd" != "wp" -a \ "$basecmd" != "wp" -a \
"$basecmd" != 'composer' ]; then "$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}/" cp -rf "${webtpl_folder}" "${WEBTPL}/"
done done
versions_list=$(ls -d /etc/opt/remi/php*) versions_list=""
for php_ver in $versions_list; do if [ "$LOCAL_PHP" == "yes" ]; then
[ ! -d "$php_ver/fpm/pool.d/" ] && continue versions_list=$(ls -d /opt/brepo/php*)
cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl ${WEBTPL}/php-fpm/PHP-${php_ver/\./_}.tpl for php_ver in $versions_list; do
done [ ! -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 if [ -n "$awstats_patch" ]; then
# restore LoadPlugin variable # restore LoadPlugin variable

View File

@@ -24,7 +24,7 @@ export default defineConfig({
socialLinks: [ socialLinks: [
{ icon: 'github', link: 'https://dev.brepo.ru/bayrepo/hestiacp' }, { 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' }, { icon: 'github', link: 'https://github.com/hestiacp/hestiacp' },
], ],
@@ -151,6 +151,7 @@ function sidebarDocs() {
items: [ items: [
{ text: 'PHP cli селектор', link: '/docs/extensions/php-cli-selector.md' }, { text: 'PHP cli селектор', link: '/docs/extensions/php-cli-selector.md' },
{ text: 'Расширенные модули', link: '/docs/extensions/extended-modules.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 в систему. - **puppet_installer** - установить puppet, для большинства модулей требуется puppet для изменения конфигурации системы, поэтому требуется, чтоб этот модуль был включен, при включении он установит puppet в систему.
- **empty_module** - пустой модуль, его включение или выключение не начто не влияет, является примером написания модулей - **empty_module** - пустой модуль, его включение или выключение не начто не влияет, является примером написания модулей
- **passenger_manager** - модуль по установке и настройке passenger в систему. - **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) - [PHP cli селектор](/docs/extensions/php-cli-selector.md)
- [Расширенные модули](/docs/extensions/extended-modules.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 -l, --lang Default language default: en
-y, --interactive Interactive install [yes|no] default: yes -y, --interactive Interactive install [yes|no] default: yes
-I, --nopublicip Use local ip [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 -s, --hostname Set hostname
-e, --email Set admin email -e, --email Set admin email
-p, --password Set admin password -p, --password Set admin password
@@ -118,14 +119,14 @@ bash hst-install.sh \
--hostname host.domain.tld \ --hostname host.domain.tld \
--email email@domain.tld \ --email email@domain.tld \
--password p4ssw0rd \ --password p4ssw0rd \
--lang fr \ --lang ru \
--apache no \ --apache no \
--named no \ --named no \
--clamav no \ --clamav no \
--spamassassin no --spamassassin no
``` ```
Эта команда установит Hestia на французском с такой конфигурацией: Эта команда установит Hestia на русском с такой конфигурацией:
- Nginx веб сервер - Nginx веб сервер
- PHP-FPM сервер приложений - PHP-FPM сервер приложений
@@ -140,3 +141,11 @@ bash hst-install.sh \
К настоящему моменту у вас должна быть установлена Hestia на вашем сервере. Вы готовы добавлять новых пользователей, чтобы вы (или они) могли добавлять новые веб-сайты на вашем сервере. К настоящему моменту у вас должна быть установлена Hestia на вашем сервере. Вы готовы добавлять новых пользователей, чтобы вы (или они) могли добавлять новые веб-сайты на вашем сервере.
Чтобы получить доступ к панели управления, перейдите по адресу `https://host.domain.tld:8083` или `http://your.public.ip.address:8083` Чтобы получить доступ к панели управления, перейдите по адресу `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() { prepare_web_backend() {
# Accept first function argument as backend template otherwise fallback to $template global variable # Accept first function argument as backend template otherwise fallback to $template global variable
local backend_template=${1:-$template} local backend_template=${1:-$template}
php_type=$(cat "$HESTIA/conf/hestia.conf" | grep "LOCAL_PHP" | grep "yes")
if [ -f "/etc/redhat-release" ]; then if [ -n "$php_type" ]; then
pool=$(find -L /etc/opt/remi/php80/ -name "$domain.conf" -exec dirname {} \; 2>/dev/null) pool=$(find -L /opt/brepo/ -name "$domain.conf" -exec dirname {} \; 2>/dev/null)
else 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 fi
# Check if multiple-PHP installed # Check if multiple-PHP installed
if [ -f "/etc/redhat-release" ]; then regex="^.*PHP-([0-9])([0-9])$"
regex="^.*PHP-([0-9])([0-9])$"
else
regex="^.*PHP-([0-9])\_([0-9])$"
fi
if [[ $backend_template =~ $regex ]]; then 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]}" 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" \)) 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 fi
else else
backend_version=$(multiphp_default_version) backend_version=$(multiphp_default_version)
if [ -z "$pool" ] || [ -z "$BACKEND" ]; then 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//./}" m_backend_version="${backend_version//./}"
pool=$(find -L /etc/opt/remi/php$m_backend_version -type d \( -name "pool.d" -o -name "*fpm.d" \)) 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 fi
fi fi
@@ -151,11 +150,12 @@ prepare_web_backend() {
# Delete web backend # Delete web backend
delete_web_backend() { delete_web_backend() {
if [ -f "/etc/redhat-release" ]; then php_type=$(cat "$HESTIA/conf/hestia.conf" | grep "LOCAL_PHP" | grep "yes")
find -L /etc/opt/remi/ -name "$backend_type.conf" -exec rm -f {} \; if [ -n "$php_type" ]; then
else find -L /opt/brepo/php* -name "$backend_type.conf" -exec rm -f {} \;
find -L /etc/php/ -type f -name "$backend_type.conf" -exec rm -f {} \; else
fi find -L /etc/opt/remi/ -name "$backend_type.conf" -exec rm -f {} \;
fi
} }
# Prepare web aliases # Prepare web aliases

View File

@@ -1449,6 +1449,56 @@ check_backup_conditions() {
done 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 # Define download function
download_file() { download_file() {
local url=$1 local url=$1
@@ -1511,9 +1561,16 @@ multiphp_count() {
multiphp_versions() { multiphp_versions() {
local -a php_versions_list local -a php_versions_list
local php_ver 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 if [ "$(multiphp_count)" -gt 0 ]; then
for php_ver in $($BIN/v-list-sys-php plain); do 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) php_versions_list+=($php_ver)
done done
echo "${php_versions_list[@]}" echo "${php_versions_list[@]}"
@@ -1522,11 +1579,19 @@ multiphp_versions() {
multiphp_default_version() { multiphp_default_version() {
# Get system wide default php version (set by update-alternatives) # 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 # Check if the system php also has php-fpm enabled, otherwise return
# the most recent php version which does have it installed. # 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)" local all_versions="$(multiphp_versions)"
if [ -n "$all_versions" ]; then if [ -n "$all_versions" ]; then
sys_phpversion="${all_versions##*\ }" sys_phpversion="${all_versions##*\ }"
@@ -1731,3 +1796,30 @@ get_conf_d_name(){
echo "conf.d" echo "conf.d"
fi 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", "name": "filegator/filegator",
"description": "Filegator", "description": "Filegator",
"license": "MIT", "license": "MIT",
"type": "project", "type": "project",
"config": { "repositories": [
"platform": { {
"php": "7.2.5" "type": "git",
} "url": "https://dev.brepo.ru/brepo/phpquoteshellarg.git"
}, }
"require": { ],
"php": "^7.2", "config": {
"monolog/monolog": "^1.24", "platform": {
"nikic/fast-route": "^1.3", "php": "8.1"
"symfony/security-csrf": "^4.4", }
"symfony/http-foundation": "^4.4", },
"dibi/dibi": "^4.1", "require": {
"php-di/php-di": "^6.0", "php": "^8.1",
"rakit/validation": "^1.1", "monolog/monolog": "^1.24",
"league/flysystem": "^1.1", "nikic/fast-route": "^1.3",
"league/flysystem-ziparchive": "^1.0", "symfony/security-csrf": "^4.4",
"league/flysystem-sftp": "^1.0", "symfony/http-foundation": "^4.4",
"hestiacp/phpquoteshellarg": "^1.0" "dibi/dibi": "^4.1",
}, "php-di/php-di": "^6.0",
"authors": [ "rakit/validation": "^1.1",
{ "league/flysystem": "^1.1",
"name": "Milos Stojanovic", "league/flysystem-ziparchive": "^1.0",
"email": "alcalbg@gmail.com" "league/flysystem-sftp": "^1.0",
} "brepo/phpquoteshellarg": "dev-master"
], },
"autoload": { "authors": [
"psr-4": { {
"Filegator\\": "backend" "name": "Milos Stojanovic",
} "email": "alcalbg@gmail.com"
}, }
"autoload-dev": { ],
"psr-4": { "autoload": {
"Tests\\": "tests/backend/" "psr-4": {
} "Filegator\\": "backend"
}, }
"require-dev": { },
"phpunit/phpunit": "^8.0", "autoload-dev": {
"symfony/var-dumper": "^4.4", "psr-4": {
"league/flysystem-memory": "^1.0", "Tests\\": "tests/backend/"
"phpstan/phpstan": "^0.11.8" }
} },
"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 # Hestia Control Panel Installer for RHEL based OS
# https://www.hestiacp.com/ # https://hestiadocs.brepo.ru/
# #
# Currently Supported Versions: # Currently Supported Versions:
# Red Hat Enterprise Linux based distros # Red Hat Enterprise Linux based distros
@@ -14,8 +14,6 @@
# Variables&Functions # # Variables&Functions #
#----------------------------------------------------------# #----------------------------------------------------------#
export PATH=$PATH:/sbin export PATH=$PATH:/sbin
RHOST='rpm.hestiacp.com'
GPG='gpg.hestiacp.com'
VERSION='rhel' VERSION='rhel'
HESTIA='/usr/local/hestia' HESTIA='/usr/local/hestia'
LOG="/root/hst_install_backups/hst_install-$(date +%d%m%Y%H%M).log" 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' VERBOSE='no'
# Define software versions # Define software versions
HESTIA_INSTALL_VER='1.9.0~alpha' HESTIA_INSTALL_VER='1.9.4.rpm~alpha'
# Dependencies # Dependencies
mariadb_v="10.11" 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") multiphp_v=("74" "80" "81" "82" "83")
fi
# default PHP version # default PHP version
php_v="82" 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 software="nginx
httpd.${arch} httpd-tools httpd-itk mod_fcgid mod_suphp mod_ssl 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 MariaDB-client MariaDB-common MariaDB-server
mysql.${arch} mysql-common mysql-server mysql.${arch} mysql-common mysql-server
postgresql-server postgresql sqlite.${arch} postgresql-server postgresql sqlite.${arch}
@@ -97,6 +91,7 @@ help() {
-l, --lang Default language default: en -l, --lang Default language default: en
-y, --interactive Interactive install [yes|no] default: yes -y, --interactive Interactive install [yes|no] default: yes
-I, --nopublicip Use local ip [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 -s, --hostname Set hostname
-e, --email Set admin email -e, --email Set admin email
-p, --password Set admin password -p, --password Set admin password
@@ -208,6 +203,56 @@ validate_email() {
fi 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 # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
@@ -247,6 +292,7 @@ for arg; do
--with-debs) args="${args}-D " ;; --with-debs) args="${args}-D " ;;
--help) args="${args}-h " ;; --help) args="${args}-h " ;;
--nopublicip) args="${args}-I " ;; --nopublicip) args="${args}-I " ;;
--uselocalphp) args="${args}-u" ;;
*) *)
[[ "${arg:0:1}" == "-" ]] || delim="\"" [[ "${arg:0:1}" == "-" ]] || delim="\""
args="${args}${delim}${arg}${delim} " args="${args}${delim}${arg}${delim} "
@@ -256,7 +302,7 @@ done
eval set -- "$args" eval set -- "$args"
# Parsing arguments # 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 case $Option in
a) apache=$OPTARG ;; # Apache a) apache=$OPTARG ;; # Apache
w) phpfpm=$OPTARG ;; # PHP-FPM 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 f) force='yes' ;; # Force install
h) help ;; # Help h) help ;; # Help
I) nopublicip=$OPTARG ;; # NoPublicIP I) nopublicip=$OPTARG ;; # NoPublicIP
u) uselocalphp=$OPTARG ;; # UseLocalPHP
*) help ;; # Print help (default) *) help ;; # Print help (default)
esac esac
done done
@@ -322,6 +369,7 @@ set_default_value 'api' 'yes'
set_default_value 'nopublicip' 'yes' set_default_value 'nopublicip' 'yes'
set_default_port '8083' set_default_port '8083'
set_default_lang 'en' set_default_lang 'en'
set_default_value 'uselocalphp' 'yes'
# Checking software conflicts # Checking software conflicts
if [ "$proftpd" = 'yes' ]; then if [ "$proftpd" = 'yes' ]; then
@@ -462,23 +510,23 @@ esac
install_welcome_message() { install_welcome_message() {
DISPLAY_VER=$(echo $HESTIA_INSTALL_VER | sed "s|~alpha||g" | sed "s|~beta||g") 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 " " echo " "
echo " Hestia Control Panel " echo " Hestia Control Panel(rpm edition) "
if [[ "$HESTIA_INSTALL_VER" =~ "beta" ]]; then if [[ "$HESTIA_INSTALL_VER" =~ "beta" ]]; then
echo " BETA RELEASE " echo " BETA RELEASE "
fi fi
if [[ "$HESTIA_INSTALL_VER" =~ "alpha" ]]; then if [[ "$HESTIA_INSTALL_VER" =~ "alpha" ]]; then
echo " DEVELOPMENT SNAPSHOT " echo " DEVELOPMENT SNAPSHOT "
echo " NOT INTENDED FOR PRODUCTION USE "
echo " USE AT YOUR OWN RISK " echo " USE AT YOUR OWN RISK "
fi fi
echo " ${DISPLAY_VER} " echo " ${DISPLAY_VER} "
echo " www.hestiacp.com " echo " hestiadocs.brepo.ru "
echo " Original: www.hestiacp.com "
echo echo
echo "========================================================================" echo "========================================================================"
echo echo
@@ -684,7 +732,19 @@ echo "[ * ] NGINX"
# Installing Remi PHP repo # Installing Remi PHP repo
echo "[ * ] PHP" 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 # Installing MariaDB repo
if [ "$mysql" = 'yes' ]; then if [ "$mysql" = 'yes' ]; then
@@ -805,10 +865,14 @@ rm -rf $HESTIA > /dev/null 2>&1
#----------------------------------------------------------# #----------------------------------------------------------#
if [ "$phpfpm" = 'yes' ]; then 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} if [ "$uselocalphp" == "yes" ]; then
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 fpm="brepo-php${php_v}-fpm"
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 else
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" 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" software="$software $fpm"
fi fi
@@ -825,6 +889,8 @@ if [ "$apache" = 'no' ]; then
software=$(echo "$software" | sed -e "s/mod_fcgid//") software=$(echo "$software" | sed -e "s/mod_fcgid//")
software=$(echo "$software" | sed -e "s/mod_ssl//") 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/php${php_v}-php.${arch}//")
software=$(echo "$software" | sed -e "s/brepo-php${php_v}-mod-apache//")
mod_php="disable"
fi fi
if [ "$vsftpd" = 'no' ]; then if [ "$vsftpd" = 'no' ]; then
software=$(echo "$software" | sed -e "s/vsftpd//") 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/postgresql-server//")
software=$(echo "$software" | sed -e "s/php${php_v}-php-pgsql.${arch}//") software=$(echo "$software" | sed -e "s/php${php_v}-php-pgsql.${arch}//")
software=$(echo "$software" | sed -e "s/phppgadmin//") 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 fi
if [ "$fail2ban" = 'no' ]; then if [ "$fail2ban" = 'no' ]; then
software=$(echo "$software" | sed -e "s/fail2ban//") 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_suphp//")
software=$(echo "$software" | sed -e "s/mod_fcgid//") 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/php${php_v}-php.${arch}//")
software=$(echo "$software" | sed -e "s/brepo-php${php_v}-mod-apache//")
mod_php="disable"
fi fi
if [ -d "$withrpms" ]; then if [ -d "$withrpms" ]; then
software=$(echo "$software" | sed -e "s/hestia-nginx//") software=$(echo "$software" | sed -e "s/hestia-nginx//")
@@ -935,7 +1006,21 @@ echo "========================================================================"
echo echo
# Create PHP symlink # 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 # Install Hestia packages from local folder
if [ -n "$withrpms" ] && [ -d "$withrpms" ]; then 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. # If a custom port is specified it will be set at the end of the installation process.
write_config_value "BACKEND_PORT" "8083" 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 # Web stack
if [ "$apache" = 'yes' ]; then if [ "$apache" = 'yes' ]; then
write_config_value "WEB_SYSTEM" "httpd" write_config_value "WEB_SYSTEM" "httpd"
@@ -1332,15 +1423,22 @@ if [ "$apache" = 'yes' ]; then
# Enable needed modules # Enable needed modules
if [ "$nginx" = "no" ]; then if [ "$nginx" = "no" ]; then
dnf install -y mod_ssl mod_h2 dnf install -y mod_ssl mod_http2
fi fi
# IDK why those modules still here, but ok. if they are disabled by default # 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 # 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 echo 'LoadModule status_module modules/mod_status.so' > /etc/httpd/conf.modules.d/00-hestia-status.conf
if [ "$phpfpm" = 'yes' ]; then if [ "$phpfpm" = 'yes' ]; then
@@ -1386,12 +1484,21 @@ if [ "$phpfpm" = "yes" ]; then
echo "[ * ] Configuring PHP $php_v..." echo "[ * ] Configuring PHP $php_v..."
# Create www.conf for webmail and php(*)admin # 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 if [ "$uselocalphp" == "yes" ]; then
systemctl enable php${php_v}-php-fpm --now >> $LOG cp -f $HESTIA_INSTALL_DIR/php-fpm/www.conf /opt/brepo/php${php_v}/etc/php-fpm.d
check_result $? "php-fpm start failed" systemctl enable brepo-php-fpm${php_v}.service --now >> $LOG
# Set default php version to $php_v check_result $? "php-fpm start failed"
alternatives --install /usr/bin/php php /usr/bin/php$php_v 1 > /dev/null 2>&1 # Set default php version to $php_v
alternatives --set php /usr/bin/php$php_v > /dev/null 2>&1 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 fi
#----------------------------------------------------------# #----------------------------------------------------------#
@@ -1399,14 +1506,24 @@ fi
#----------------------------------------------------------# #----------------------------------------------------------#
echo "[ * ] Configuring PHP..." 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}') ZONE=$(timedatectl > /dev/null 2>&1 | grep Timezone | awk '{print $2}')
if [ -z "$ZONE" ]; then if [ -z "$ZONE" ]; then
ZONE='UTC' ZONE='UTC'
fi fi
for pconf in $(find /etc/opt/remi/php* -name php.ini); do if [ "$uselocalphp" == "yes" ]; then
sed -i "s%;date.timezone =%date.timezone = $ZONE%g" $pconf for pconf in $(find /opt/brepo/php* -name php.ini); do
sed -i 's%_open_tag = Off%_open_tag = On%g' $pconf sed -i "s%;date.timezone =%date.timezone = $ZONE%g" $pconf
done 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) # Cleanup php session files not changed in the last 7 days (60*24*7 minutes)
echo '#!/bin/sh' > /etc/cron.daily/php-session-cleanup 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_PASSWORD_RESET" "yes"
write_config_value "POLICY_SYSTEM_HIDE_SERVICES" "no" write_config_value "POLICY_SYSTEM_HIDE_SERVICES" "no"
write_config_value "POLICY_SYSTEM_ENABLE_BACON" "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 "DEBUG_MODE" "no"
write_config_value "ENFORCE_SUBDOMAIN_OWNERSHIP" "yes" write_config_value "ENFORCE_SUBDOMAIN_OWNERSHIP" "yes"
write_config_value "USE_SERVER_SMTP" "false" 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/ Documentation: https://hestiadocs.brepo.ru/
Forum: https://forum.hestiacp.com/ 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, 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. 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 # Hestia Control Panel Installation Routine
# Automatic OS detection wrapper # Automatic OS detection wrapper
# https://www.hestiacp.com/ # https://hestiadocs.brepo.ru/
# #
# Currently Supported Operating Systems: # Supported Operating Systems:
# #
# Debian 10, 11 # AlmaLinux, EuroLinux, Red Hat EnterPrise Linux, Rocky Linux, MSVSphere 9
# Ubuntu 20.04, 22.04
# AlmaLinux, EuroLinux, Red Hat EnterPrise Linux, Rocky Linux 8, 9
# #
# ======================================================== # # ======================================================== #
@@ -42,21 +40,7 @@ fi
# Detect OS # Detect OS
if [ -e "/etc/os-release" ] && [ ! -e "/etc/redhat-release" ]; then if [ -e "/etc/os-release" ] && [ ! -e "/etc/redhat-release" ]; then
type=$(grep "^ID=" /etc/os-release | cut -f 2 -d '=') type="NoSupport"
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
elif [ -e "/etc/os-release" ] && [ -e "/etc/redhat-release" ]; then elif [ -e "/etc/os-release" ] && [ -e "/etc/redhat-release" ]; then
type=$(grep "^ID=" /etc/os-release | cut -f 2 -d '"') type=$(grep "^ID=" /etc/os-release | cut -f 2 -d '"')
VERSION=$type VERSION=$type
@@ -71,13 +55,10 @@ fi
no_support_message() { no_support_message() {
echo "****************************************************" echo "****************************************************"
echo "Your operating system (OS) is not supported by" 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 "****************************************************"
echo " Debian 10, 11" echo " Red Hat Enterprise Linux 9 and related versions of"
echo " Ubuntu 20.04, 22.04 LTS" echo " AlmaLinux, Rocky Linux, Oracle Linux Server and EuroLinux, MSVSphere"
# 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 "" echo ""
exit 1 exit 1
} }

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
%global _hardened_build 1 %global _hardened_build 1
Name: hestia Name: hestia
Version: 1.9.3 Version: 1.9.5
Release: 1%{dist} Release: 1%{dist}
Summary: Hestia Control Panel Summary: Hestia Control Panel
Group: System Environment/Base Group: System Environment/Base
@@ -184,6 +184,14 @@ fi
%{_tmpfilesdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf
%changelog %changelog
* 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 * Sun Jan 05 2025 Alexey Berezhok <a@bayrepo.ru> - 1.9.3-1
- Added minor fixes - Added minor fixes
- Added authorization fix for rhel 9.5 - Added authorization fix for rhel 9.5

View File

@@ -123,6 +123,9 @@ if (!empty($installer)) {
$appInstallerInfo = $app_installer->info(); $appInstallerInfo = $app_installer->info();
$supported = false; $supported = false;
$supported_versions = []; $supported_versions = [];
if ($appInstallerInfo["enabled"] != true) {
continue;
}
foreach ($php_versions as $version) { foreach ($php_versions as $version) {
if (in_array($version, $appInstallerInfo["php_support"])) { if (in_array($version, $appInstallerInfo["php_support"])) {
$supported = true; $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); $backend_templates = json_decode(implode("", $output), true);
unset($output); unset($output);
exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var); //exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var);
$is_rhel = str_contains(implode("", $output), "+"); //$is_rhel = str_contains(implode("", $output), "+");
unset($output); //unset($output);
$v_php_versions = [ $v_php_versions = [
"php-5.6", "php-74",
"php-7.0", "php-80",
"php-7.1", "php-81",
"php-7.2", "php-82",
"php-7.3", "php-83",
"php-7.4",
"php-8.0",
"php-8.1",
"php-8.2",
]; ];
if ($is_rhel){
$v_php_versions = [
"php-74",
"php-80",
"php-81",
"php-82",
"php-83",
"php-84",
];
}
sort($v_php_versions); sort($v_php_versions);

View File

@@ -46,7 +46,7 @@ if (!empty($_POST["save"])) {
} }
// List config // 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); $data = json_decode(implode("", $output), true);
unset($output); unset($output);
$v_memory_limit = $data["CONFIG"]["memory_limit"]; $v_memory_limit = $data["CONFIG"]["memory_limit"];

View File

@@ -11,11 +11,32 @@ if ($_SESSION["userContext"] != "admin") {
exit(); 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 // Check POST request
if (!empty($_POST["save"])) { if (!empty($_POST["save"])) {
// Check token // Check token
verify_csrf($_POST); verify_csrf($_POST);
$php_save = "php";
if ($php_version != "default"){
$php_save .= $php_version;
}
// Set restart flag // Set restart flag
$v_restart = "yes"; $v_restart = "yes";
if (empty($_POST["v_restart"])) { if (empty($_POST["v_restart"])) {
@@ -30,7 +51,7 @@ if (!empty($_POST["save"])) {
fwrite($fp, str_replace("\r\n", "\n", $_POST["v_config"])); fwrite($fp, str_replace("\r\n", "\n", $_POST["v_config"]));
fclose($fp); fclose($fp);
exec( 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, $output,
$return_var, $return_var,
); );
@@ -46,7 +67,7 @@ if (!empty($_POST["save"])) {
} }
// List config // 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); $data = json_decode(implode("", $output), true);
unset($output); unset($output);
$v_memory_limit = $data["CONFIG"]["memory_limit"]; $v_memory_limit = $data["CONFIG"]["memory_limit"];

View File

@@ -36,7 +36,7 @@ if (!empty($_POST["save"])) {
); );
check_return_code($return_var, $output); check_return_code($return_var, $output);
unset($output); unset($output);
unlink($new_conf); //unlink($new_conf);
} }
// Set success message // Set success message
@@ -46,7 +46,7 @@ if (!empty($_POST["save"])) {
} }
// List config // 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); $data = json_decode(implode("", $output), true);
unset($output); unset($output);
$v_memory_limit = $data["CONFIG"]["memory_limit"]; $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": { "require": {
"phpmailer/phpmailer": "6.8.0", "phpmailer/phpmailer": "6.8.0",
"hestiacp/phpquoteshellarg": "1.0.2", "brepo/phpquoteshellarg": "dev-master",
"robthree/twofactorauth": "2.0.0" "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", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "bd5fba3223573f480531e48f5e3ce14e", "content-hash": "134682d586741e300ffeae0ccfb99351",
"packages": [ "packages": [
{ {
"name": "hestiacp/phpquoteshellarg", "name": "brepo/phpquoteshellarg",
"version": "v1.0.2", "version": "dev-master",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/hestiacp/phpquoteshellarg.git", "url": "https://dev.brepo.ru/brepo/phpquoteshellarg.git",
"reference": "7fd1a3a648cdc39a3fe2aab78a1a3a0267f92f49" "reference": "943298a03acc3ff7a89eff948534f90d1c6ba950"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/hestiacp/phpquoteshellarg/zipball/7fd1a3a648cdc39a3fe2aab78a1a3a0267f92f49",
"reference": "7fd1a3a648cdc39a3fe2aab78a1a3a0267f92f49",
"shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=8.0"
}, },
"default-branch": true,
"type": "library", "type": "library",
"autoload": { "autoload": {
"files": [ "files": [
"src/Hestiacp/quoteshellarg/quoteshellarg.php" "src/Hestiacp/quoteshellarg/quoteshellarg.php"
] ]
}, },
"notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
"Unlicense" "Unlicense"
], ],
"description": "Improved escape shell arguments for support of special charactars", "description": "Improved escape shell arguments for support of special charactars",
"homepage": "https://github.com/hestiacp", "homepage": "https://dev.brepo.ru/bayrepo/hestiacp",
"keywords": [ "keywords": [
"escapeshellarg", "escapeshellarg",
"quoteshellarg" "quoteshellarg"
], ],
"support": { "time": "2025-02-03T20:07:58+00:00"
"source": "https://github.com/hestiacp/phpquoteshellarg/tree/v1.0.2"
},
"time": "2023-07-23T09:16:27+00:00"
}, },
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
@@ -209,10 +200,13 @@
"packages-dev": [], "packages-dev": [],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": {
"brepo/phpquoteshellarg": 20
},
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": [], "platform": {},
"platform-dev": [], "platform-dev": {},
"plugin-api-version": "2.3.0" "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'; proxyConnect.style.display = 'block';
} }
} }

View File

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

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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:470
#: ../../web/templates/pages/edit_server.php:817 #: ../../web/templates/pages/edit_server.php:817
#: ../../web/templates/pages/edit_user.php:64 #: ../../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:65
#: ../../web/templates/pages/list_db.php:113 #: ../../web/templates/pages/list_db.php:113
#: ../../web/templates/pages/list_db.php:247 #: ../../web/templates/pages/list_db.php:247
@@ -138,6 +135,9 @@ msgstr ""
#: ../../web/templates/pages/login/login_a.php:14 #: ../../web/templates/pages/login/login_a.php:14
#: ../../web/templates/pages/login/reset2fa.php:27 #: ../../web/templates/pages/login/reset2fa.php:27
#: ../../web/templates/pages/login/reset_1.php:14 #: ../../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" msgid "Username"
msgstr "" msgstr ""
@@ -155,11 +155,11 @@ msgstr ""
#: ../../web/templates/pages/edit_server.php:577 #: ../../web/templates/pages/edit_server.php:577
#: ../../web/templates/pages/edit_server.php:829 #: ../../web/templates/pages/edit_server.php:829
#: ../../web/templates/pages/edit_user.php:84 #: ../../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:119
#: ../../web/templates/pages/edit_web.php:438 #: ../../web/templates/pages/edit_web.php:438
#: ../../web/templates/pages/edit_web.php:544 #: ../../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" msgid "Password"
msgstr "" msgstr ""
@@ -266,8 +266,8 @@ msgstr ""
#: ../../web/templates/pages/edit_dns.php:28 #: ../../web/templates/pages/edit_dns.php:28
#: ../../web/templates/pages/edit_dns_rec.php:28 #: ../../web/templates/pages/edit_dns_rec.php:28
#: ../../web/templates/pages/edit_mail.php:38 #: ../../web/templates/pages/edit_mail.php:38
#: ../../web/templates/pages/edit_web.php:59
#: ../../web/templates/pages/generate_ssl.php:18 #: ../../web/templates/pages/generate_ssl.php:18
#: ../../web/templates/pages/edit_web.php:59
msgid "Domain" msgid "Domain"
msgstr "" msgstr ""
@@ -280,7 +280,6 @@ msgstr ""
#: ../../web/templates/pages/add_web.php:47 #: ../../web/templates/pages/add_web.php:47
#: ../../web/templates/pages/edit_dns.php:33 #: ../../web/templates/pages/edit_dns.php:33
#: ../../web/templates/pages/edit_ip.php:35 #: ../../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_dns.php:28
#: ../../web/templates/pages/list_firewall.php:39 #: ../../web/templates/pages/list_firewall.php:39
#: ../../web/templates/pages/list_firewall.php:75 #: ../../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:34
#: ../../web/templates/pages/list_web.php:80 #: ../../web/templates/pages/list_web.php:80
#: ../../web/templates/pages/list_web.php:311 #: ../../web/templates/pages/list_web.php:311
#: ../../web/templates/pages/edit_web.php:76
msgid "IP Address" msgid "IP Address"
msgstr "" msgstr ""
@@ -355,6 +355,8 @@ msgstr ""
#: ../../web/templates/pages/list_firewall.php:30 #: ../../web/templates/pages/list_firewall.php:30
#: ../../web/templates/pages/list_firewall.php:70 #: ../../web/templates/pages/list_firewall.php:70
#: ../../web/templates/pages/list_firewall.php:111 #: ../../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" msgid "Action"
msgstr "" msgstr ""
@@ -919,14 +921,14 @@ msgstr ""
#: ../../web/edit/server/exim4/index.php:44 #: ../../web/edit/server/exim4/index.php:44
#: ../../web/edit/server/fail2ban/index.php:44 #: ../../web/edit/server/fail2ban/index.php:44
#: ../../web/edit/server/httpd/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/mariadb/index.php:44
#: ../../web/edit/server/mysql/index.php:44 #: ../../web/edit/server/mysql/index.php:44
#: ../../web/edit/server/mysqld/index.php:44 #: ../../web/edit/server/mysqld/index.php:44
#: ../../web/edit/server/named/index.php:44 #: ../../web/edit/server/named/index.php:44
#: ../../web/edit/server/nginx/index.php:44 #: ../../web/edit/server/nginx/index.php:44
#: ../../web/edit/server/php-fpm/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/php5-fpm/index.php:44
#: ../../web/edit/server/postgresql/index.php:65 #: ../../web/edit/server/postgresql/index.php:65
#: ../../web/edit/server/proftpd/index.php:44 #: ../../web/edit/server/proftpd/index.php:44
@@ -947,7 +949,7 @@ msgstr ""
msgid "Info (read-only mode): Crontab can only be edited via SSH." msgid "Info (read-only mode): Crontab can only be edited via SSH."
msgstr "" msgstr ""
#: ../../web/edit/server/index.php:1239 #: ../../web/edit/server/index.php:1225
msgid "Inactive session timeout can not lower than 1 minute." msgid "Inactive session timeout can not lower than 1 minute."
msgstr "" msgstr ""
@@ -1036,12 +1038,12 @@ msgstr ""
msgid "Unsupported hash method" msgid "Unsupported hash method"
msgstr "" msgstr ""
#: ../../web/login/index.php:142 ../../web/login/index.php:199 #: ../../web/login/index.php:142 ../../web/login/index.php:204
#: ../../web/login/index.php:222 ../../web/login/index.php:246 #: ../../web/login/index.php:227 ../../web/login/index.php:251
msgid "Invalid username or password" msgid "Invalid username or password"
msgstr "" 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" msgid "Invalid or missing 2FA token"
msgstr "" msgstr ""
@@ -1400,10 +1402,10 @@ msgstr ""
#: ../../web/templates/includes/panel.php:294 #: ../../web/templates/includes/panel.php:294
#: ../../web/templates/pages/add_mail_acc.php:82 #: ../../web/templates/pages/add_mail_acc.php:82
#: ../../web/templates/pages/edit_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/generate_ssl.php:22
#: ../../web/templates/pages/list_mail_acc.php:89 #: ../../web/templates/pages/list_mail_acc.php:89
#: ../../web/templates/pages/list_mail_acc.php:268 #: ../../web/templates/pages/list_mail_acc.php:268
#: ../../web/templates/pages/edit_web.php:64
msgid "Aliases" msgid "Aliases"
msgstr "" msgstr ""
@@ -1514,7 +1516,6 @@ msgstr ""
#: ../../web/templates/pages/edit_server_php.php:6 #: ../../web/templates/pages/edit_server_php.php:6
#: ../../web/templates/pages/edit_server_service.php:6 #: ../../web/templates/pages/edit_server_service.php:6
#: ../../web/templates/pages/edit_user.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/edit_whitelabel.php:6
#: ../../web/templates/pages/list_access_key.php:16 #: ../../web/templates/pages/list_access_key.php:16
#: ../../web/templates/pages/list_access_keys.php:7 #: ../../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_2.php:27
#: ../../web/templates/pages/login/reset_3.php:29 #: ../../web/templates/pages/login/reset_3.php:29
#: ../../web/templates/pages/setup_webapp.php:6 #: ../../web/templates/pages/setup_webapp.php:6
#: ../../web/templates/pages/edit_web.php:6
#: ../../web/templates/pages/extmodules.php:6 #: ../../web/templates/pages/extmodules.php:6
#: ../../web/templates/pages/extmodules_passenger_manager.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" msgid "Back"
msgstr "" msgstr ""
@@ -1593,10 +1597,11 @@ msgstr ""
#: ../../web/templates/pages/edit_server_php.php:11 #: ../../web/templates/pages/edit_server_php.php:11
#: ../../web/templates/pages/edit_server_service.php:11 #: ../../web/templates/pages/edit_server_service.php:11
#: ../../web/templates/pages/edit_user.php:37 #: ../../web/templates/pages/edit_user.php:37
#: ../../web/templates/pages/edit_web.php:19
#: ../../web/templates/pages/edit_whitelabel.php:11 #: ../../web/templates/pages/edit_whitelabel.php:11
#: ../../web/templates/pages/setup_webapp.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_passenger_manager.php:11
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:11
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@@ -1632,9 +1637,9 @@ msgstr ""
#: ../../web/templates/pages/edit_ip.php:69 #: ../../web/templates/pages/edit_ip.php:69
#: ../../web/templates/pages/edit_ip.php:75 #: ../../web/templates/pages/edit_ip.php:75
#: ../../web/templates/pages/edit_mail.php:132 #: ../../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:215
#: ../../web/templates/pages/edit_web.php:398 #: ../../web/templates/pages/edit_web.php:398
#: ../../web/templates/pages/generate_ssl.php:28
msgid "Optional" msgid "Optional"
msgstr "" msgstr ""
@@ -1720,11 +1725,11 @@ msgstr ""
#: ../../web/templates/pages/edit_db.php:43 #: ../../web/templates/pages/edit_db.php:43
#: ../../web/templates/pages/edit_mail_acc.php:46 #: ../../web/templates/pages/edit_mail_acc.php:46
#: ../../web/templates/pages/edit_user.php:85 #: ../../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:120
#: ../../web/templates/pages/edit_web.php:439 #: ../../web/templates/pages/edit_web.php:439
#: ../../web/templates/pages/edit_web.php:545 #: ../../web/templates/pages/edit_web.php:545
#: ../../web/templates/pages/generate_ssl.php:59
#: ../../web/templates/pages/setup_webapp.php:63
msgid "Generate" msgid "Generate"
msgstr "" msgstr ""
@@ -2065,8 +2070,6 @@ msgstr ""
#: ../../web/templates/pages/add_dns.php:140 #: ../../web/templates/pages/add_dns.php:140
#: ../../web/templates/pages/add_dns.php:146 #: ../../web/templates/pages/add_dns.php:146
#: ../../web/templates/pages/add_dns.php:152 #: ../../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:41
#: ../../web/templates/pages/list_access_keys.php:101 #: ../../web/templates/pages/list_access_keys.php:101
#: ../../web/templates/pages/list_access_keys.php:102 #: ../../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:299
#: ../../web/templates/pages/list_web.php:300 #: ../../web/templates/pages/list_web.php:300
#: ../../web/templates/pages/list_web.php:304 #: ../../web/templates/pages/list_web.php:304
#: ../../web/templates/pages/edit_web.php:423
#: ../../web/templates/pages/edit_web.php:530
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@@ -2722,23 +2727,23 @@ msgstr ""
#: ../../web/templates/pages/edit_mail.php:121 #: ../../web/templates/pages/edit_mail.php:121
#: ../../web/templates/pages/edit_server.php:930 #: ../../web/templates/pages/edit_server.php:930
#: ../../web/templates/pages/edit_web.php:204
#: ../../web/templates/pages/list_ssl.php:28 #: ../../web/templates/pages/list_ssl.php:28
#: ../../web/templates/pages/edit_web.php:204
msgid "SSL Certificate" msgid "SSL Certificate"
msgstr "" msgstr ""
#: ../../web/templates/pages/edit_mail.php:122 #: ../../web/templates/pages/edit_mail.php:122
#: ../../web/templates/pages/edit_server.php:938 #: ../../web/templates/pages/edit_server.php:938
#: ../../web/templates/pages/edit_web.php:205
#: ../../web/templates/pages/generate_ssl.php:16 #: ../../web/templates/pages/generate_ssl.php:16
#: ../../web/templates/pages/list_ssl.php:16 #: ../../web/templates/pages/list_ssl.php:16
#: ../../web/templates/pages/edit_web.php:205
msgid "Generate Self-Signed SSL Certificate" msgid "Generate Self-Signed SSL Certificate"
msgstr "" msgstr ""
#: ../../web/templates/pages/edit_mail.php:127 #: ../../web/templates/pages/edit_mail.php:127
#: ../../web/templates/pages/edit_server.php:950 #: ../../web/templates/pages/edit_server.php:950
#: ../../web/templates/pages/edit_web.php:210
#: ../../web/templates/pages/list_ssl.php:55 #: ../../web/templates/pages/list_ssl.php:55
#: ../../web/templates/pages/edit_web.php:210
msgid "SSL Private Key" msgid "SSL Private Key"
msgstr "" msgstr ""
@@ -2874,8 +2879,8 @@ msgid "Enable debug mode"
msgstr "" msgstr ""
#: ../../web/templates/pages/edit_server.php:147 #: ../../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_updates.php:29
#: ../../web/templates/pages/list_services.php:12
msgid "Updates" msgid "Updates"
msgstr "" msgstr ""
@@ -3226,9 +3231,9 @@ msgstr ""
#: ../../web/templates/pages/list_services.php:25 #: ../../web/templates/pages/list_services.php:25
#: ../../web/templates/pages/list_services.php:28 #: ../../web/templates/pages/list_services.php:28
#: ../../web/templates/pages/list_services.php:41 #: ../../web/templates/pages/list_services.php:41
#: ../../web/templates/pages/list_services.php:178 #: ../../web/templates/pages/list_services.php:187
#: ../../web/templates/pages/list_services.php:179 #: ../../web/templates/pages/list_services.php:188
#: ../../web/templates/pages/list_services.php:183 #: ../../web/templates/pages/list_services.php:192
msgid "Restart" msgid "Restart"
msgstr "" msgstr ""
@@ -3335,140 +3340,6 @@ msgstr ""
msgid "Default Name Servers" msgid "Default Name Servers"
msgstr "" 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 #: ../../web/templates/pages/edit_whitelabel.php:33
msgid "White Label Options" msgid "White Label Options"
msgstr "" msgstr ""
@@ -3615,13 +3486,13 @@ msgstr ""
#: ../../web/templates/pages/list_mail_acc.php:56 #: ../../web/templates/pages/list_mail_acc.php:56
#: ../../web/templates/pages/list_packages.php:32 #: ../../web/templates/pages/list_packages.php:32
#: ../../web/templates/pages/list_packages.php:35 #: ../../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_stats.php:29
#: ../../web/templates/pages/list_user.php:41 #: ../../web/templates/pages/list_user.php:41
#: ../../web/templates/pages/list_user.php:54 #: ../../web/templates/pages/list_user.php:54
#: ../../web/templates/pages/list_web.php:41 #: ../../web/templates/pages/list_web.php:41
#: ../../web/templates/pages/list_web.php:49 #: ../../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" msgid "Apply to selected"
msgstr "" msgstr ""
@@ -3639,9 +3510,9 @@ msgstr ""
#: ../../web/templates/pages/list_mail.php:73 #: ../../web/templates/pages/list_mail.php:73
#: ../../web/templates/pages/list_mail_acc.php:83 #: ../../web/templates/pages/list_mail_acc.php:83
#: ../../web/templates/pages/list_packages.php:52 #: ../../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_user.php:80
#: ../../web/templates/pages/list_web.php:76 #: ../../web/templates/pages/list_web.php:76
#: ../../web/templates/pages/list_services.php:100
msgid "Select all" msgid "Select all"
msgstr "" msgstr ""
@@ -3690,12 +3561,12 @@ msgstr ""
#: ../../web/templates/pages/list_mail_acc.php:164 #: ../../web/templates/pages/list_mail_acc.php:164
#: ../../web/templates/pages/list_packages.php:118 #: ../../web/templates/pages/list_packages.php:118
#: ../../web/templates/pages/list_packages.php:119 #: ../../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:144
#: ../../web/templates/pages/list_user.php:145 #: ../../web/templates/pages/list_user.php:145
#: ../../web/templates/pages/list_web.php:194 #: ../../web/templates/pages/list_web.php:194
#: ../../web/templates/pages/list_web.php:195 #: ../../web/templates/pages/list_web.php:195
#: ../../web/templates/pages/list_services.php:152
#: ../../web/templates/pages/list_services.php:153
msgid "Select" msgid "Select"
msgstr "" msgstr ""
@@ -3915,10 +3786,10 @@ msgstr ""
#: ../../web/templates/pages/list_cron.php:133 #: ../../web/templates/pages/list_cron.php:133
#: ../../web/templates/pages/list_cron.php:136 #: ../../web/templates/pages/list_cron.php:136
#: ../../web/templates/pages/list_services.php:158 #: ../../web/templates/pages/extmodules.php:107
#: ../../web/templates/pages/list_services.php:168 #: ../../web/templates/pages/list_services.php:163
#: ../../web/templates/pages/list_services.php:171 #: ../../web/templates/pages/list_services.php:177
#: ../../web/templates/pages/extmodules.php:95 #: ../../web/templates/pages/list_services.php:180
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
@@ -4404,7 +4275,7 @@ msgstr ""
#: ../../web/templates/pages/list_server_info.php:42 #: ../../web/templates/pages/list_server_info.php:42
#: ../../web/templates/pages/list_services.php:106 #: ../../web/templates/pages/list_services.php:106
#: ../../web/templates/pages/list_services.php:208 #: ../../web/templates/pages/list_services.php:217
msgid "CPU" msgid "CPU"
msgstr "" msgstr ""
@@ -4434,83 +4305,6 @@ msgstr ""
msgid "Partially implemented" msgid "Partially implemented"
msgstr "" 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 #: ../../web/templates/pages/list_ssl.php:82
msgid "SSL CSR" msgid "SSL CSR"
msgstr "" msgstr ""
@@ -4553,6 +4347,15 @@ msgstr ""
msgid "Package Names" msgid "Package Names"
msgstr "" 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 #: ../../web/templates/pages/list_user.php:43
msgid "Rebuild User Profile" msgid "Rebuild User Profile"
msgstr "" msgstr ""
@@ -4633,6 +4436,11 @@ msgid_plural "%d web domains"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" 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 #: ../../web/templates/pages/list_webapps.php:29
msgid "Setup" msgid "Setup"
msgstr "" msgstr ""
@@ -4747,59 +4555,188 @@ msgstr ""
msgid "Please make sure ~/web/%s/public_html is empty!" msgid "Please make sure ~/web/%s/public_html is empty!"
msgstr "" 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" msgid "List modules"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:19 #: ../../web/templates/pages/extmodules.php:31
#: ../../web/templates/pages/extmodules.php:50 #: ../../web/templates/pages/extmodules.php:62
msgid "Module ID" msgid "Module ID"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:20 #: ../../web/templates/pages/extmodules.php:32
#: ../../web/templates/pages/extmodules.php:54 #: ../../web/templates/pages/extmodules.php:66
msgid "Module name" msgid "Module name"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:22 #: ../../web/templates/pages/extmodules.php:34
#: ../../web/templates/pages/extmodules.php:78 #: ../../web/templates/pages/extmodules.php:90
msgid "Module description" msgid "Module description"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:23 #: ../../web/templates/pages/extmodules.php:35
#: ../../web/templates/pages/extmodules.php:82 #: ../../web/templates/pages/extmodules.php:94
msgid "Module state" msgid "Module state"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:24 #: ../../web/templates/pages/extmodules.php:36
#: ../../web/templates/pages/extmodules.php:86 #: ../../web/templates/pages/extmodules.php:98
msgid "Requirements" msgid "Requirements"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:25 #: ../../web/templates/pages/extmodules.php:37
#: ../../web/templates/pages/extmodules.php:90 #: ../../web/templates/pages/extmodules.php:102
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:35 #: ../../web/templates/pages/extmodules.php:47
msgid "Enable module" msgid "Enable module"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:38 #: ../../web/templates/pages/extmodules.php:50
#, php-format #, php-format
msgid "Are you sure you want to enable module %s?" msgid "Are you sure you want to enable module %s?"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:42 #: ../../web/templates/pages/extmodules.php:54
msgid "Disable module" msgid "Disable module"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:45 #: ../../web/templates/pages/extmodules.php:57
#, php-format #, php-format
msgid "Are you sure you want to disable module %s?" msgid "Are you sure you want to disable module %s?"
msgstr "" msgstr ""
#: ../../web/templates/pages/extmodules.php:114 #: ../../web/templates/pages/extmodules.php:126
msgid "Extended modules list" msgid "Extended modules list"
msgstr "" msgstr ""
@@ -4819,6 +4756,110 @@ msgstr ""
msgid "Ruby available list" msgid "Ruby available list"
msgstr "" 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 #: ../../web/update/hestia/index.php:20
#, php-format #, php-format
msgid "Error: %s update failed." msgid "Error: %s update failed."

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: hestiacp\n" "Project-Id-Version: hestiacp\n"
"Report-Msgid-Bugs-To: a@bayrepo.ru\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" "Last-Translator: \n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
"Language: ru_RU\n" "Language: ru_RU\n"
@@ -123,9 +123,6 @@ msgstr "База данных"
#: ../../web/templates/pages/edit_server.php:470 #: ../../web/templates/pages/edit_server.php:470
#: ../../web/templates/pages/edit_server.php:817 #: ../../web/templates/pages/edit_server.php:817
#: ../../web/templates/pages/edit_user.php:64 #: ../../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:65
#: ../../web/templates/pages/list_db.php:113 #: ../../web/templates/pages/list_db.php:113
#: ../../web/templates/pages/list_db.php:247 #: ../../web/templates/pages/list_db.php:247
@@ -133,6 +130,9 @@ msgstr "База данных"
#: ../../web/templates/pages/login/login_a.php:14 #: ../../web/templates/pages/login/login_a.php:14
#: ../../web/templates/pages/login/reset2fa.php:27 #: ../../web/templates/pages/login/reset2fa.php:27
#: ../../web/templates/pages/login/reset_1.php:14 #: ../../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" msgid "Username"
msgstr "Аккаунт" msgstr "Аккаунт"
@@ -150,11 +150,11 @@ msgstr "Аккаунт"
#: ../../web/templates/pages/edit_server.php:577 #: ../../web/templates/pages/edit_server.php:577
#: ../../web/templates/pages/edit_server.php:829 #: ../../web/templates/pages/edit_server.php:829
#: ../../web/templates/pages/edit_user.php:84 #: ../../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:119
#: ../../web/templates/pages/edit_web.php:438 #: ../../web/templates/pages/edit_web.php:438
#: ../../web/templates/pages/edit_web.php:544 #: ../../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" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
@@ -272,8 +272,8 @@ msgstr "База данных {%s} успешно создана. / {Откры
#: ../../web/templates/pages/edit_dns.php:28 #: ../../web/templates/pages/edit_dns.php:28
#: ../../web/templates/pages/edit_dns_rec.php:28 #: ../../web/templates/pages/edit_dns_rec.php:28
#: ../../web/templates/pages/edit_mail.php:38 #: ../../web/templates/pages/edit_mail.php:38
#: ../../web/templates/pages/edit_web.php:59
#: ../../web/templates/pages/generate_ssl.php:18 #: ../../web/templates/pages/generate_ssl.php:18
#: ../../web/templates/pages/edit_web.php:59
msgid "Domain" msgid "Domain"
msgstr "Домен" msgstr "Домен"
@@ -286,7 +286,6 @@ msgstr "Домен"
#: ../../web/templates/pages/add_web.php:47 #: ../../web/templates/pages/add_web.php:47
#: ../../web/templates/pages/edit_dns.php:33 #: ../../web/templates/pages/edit_dns.php:33
#: ../../web/templates/pages/edit_ip.php:35 #: ../../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_dns.php:28
#: ../../web/templates/pages/list_firewall.php:39 #: ../../web/templates/pages/list_firewall.php:39
#: ../../web/templates/pages/list_firewall.php:75 #: ../../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:34
#: ../../web/templates/pages/list_web.php:80 #: ../../web/templates/pages/list_web.php:80
#: ../../web/templates/pages/list_web.php:311 #: ../../web/templates/pages/list_web.php:311
#: ../../web/templates/pages/edit_web.php:76
msgid "IP Address" msgid "IP Address"
msgstr "IP адрес" msgstr "IP адрес"
@@ -361,6 +361,8 @@ msgstr "IP-адрес успешно заблокирован."
#: ../../web/templates/pages/list_firewall.php:30 #: ../../web/templates/pages/list_firewall.php:30
#: ../../web/templates/pages/list_firewall.php:70 #: ../../web/templates/pages/list_firewall.php:70
#: ../../web/templates/pages/list_firewall.php:111 #: ../../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" msgid "Action"
msgstr "Действие" msgstr "Действие"
@@ -971,14 +973,14 @@ msgstr "Загрузка файла удаленной резервной коп
#: ../../web/edit/server/exim4/index.php:44 #: ../../web/edit/server/exim4/index.php:44
#: ../../web/edit/server/fail2ban/index.php:44 #: ../../web/edit/server/fail2ban/index.php:44
#: ../../web/edit/server/httpd/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/mariadb/index.php:44
#: ../../web/edit/server/mysql/index.php:44 #: ../../web/edit/server/mysql/index.php:44
#: ../../web/edit/server/mysqld/index.php:44 #: ../../web/edit/server/mysqld/index.php:44
#: ../../web/edit/server/named/index.php:44 #: ../../web/edit/server/named/index.php:44
#: ../../web/edit/server/nginx/index.php:44 #: ../../web/edit/server/nginx/index.php:44
#: ../../web/edit/server/php-fpm/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/php5-fpm/index.php:44
#: ../../web/edit/server/postgresql/index.php:65 #: ../../web/edit/server/postgresql/index.php:65
#: ../../web/edit/server/proftpd/index.php:44 #: ../../web/edit/server/proftpd/index.php:44
@@ -999,7 +1001,7 @@ msgstr "Ошибка: неизвестный идентификатор запи
msgid "Info (read-only mode): Crontab can only be edited via SSH." msgid "Info (read-only mode): Crontab can only be edited via SSH."
msgstr "Информация (read-only режим): Crontab может быть отредактирован только через 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." msgid "Inactive session timeout can not lower than 1 minute."
msgstr "Длительность неактивной сессии не может быть меньше 1 минуты." msgstr "Длительность неактивной сессии не может быть меньше 1 минуты."
@@ -1095,12 +1097,12 @@ msgstr "Аккаунт отключён"
msgid "Unsupported hash method" msgid "Unsupported hash method"
msgstr "Неподдерживаемый метод хеширования" msgstr "Неподдерживаемый метод хеширования"
#: ../../web/login/index.php:142 ../../web/login/index.php:199 #: ../../web/login/index.php:142 ../../web/login/index.php:204
#: ../../web/login/index.php:222 ../../web/login/index.php:246 #: ../../web/login/index.php:227 ../../web/login/index.php:251
msgid "Invalid username or password" msgid "Invalid username or password"
msgstr "Неверный логин или пароль" 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" msgid "Invalid or missing 2FA token"
msgstr "Неверный или отсутствующий токен ДФА" msgstr "Неверный или отсутствующий токен ДФА"
@@ -1480,10 +1482,10 @@ msgstr "Домены"
#: ../../web/templates/includes/panel.php:294 #: ../../web/templates/includes/panel.php:294
#: ../../web/templates/pages/add_mail_acc.php:82 #: ../../web/templates/pages/add_mail_acc.php:82
#: ../../web/templates/pages/edit_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/generate_ssl.php:22
#: ../../web/templates/pages/list_mail_acc.php:89 #: ../../web/templates/pages/list_mail_acc.php:89
#: ../../web/templates/pages/list_mail_acc.php:268 #: ../../web/templates/pages/list_mail_acc.php:268
#: ../../web/templates/pages/edit_web.php:64
msgid "Aliases" msgid "Aliases"
msgstr "Алиасы" msgstr "Алиасы"
@@ -1594,7 +1596,6 @@ msgstr "РЕЗЕРВНОЕ КОПИРОВАНИЕ"
#: ../../web/templates/pages/edit_server_php.php:6 #: ../../web/templates/pages/edit_server_php.php:6
#: ../../web/templates/pages/edit_server_service.php:6 #: ../../web/templates/pages/edit_server_service.php:6
#: ../../web/templates/pages/edit_user.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/edit_whitelabel.php:6
#: ../../web/templates/pages/list_access_key.php:16 #: ../../web/templates/pages/list_access_key.php:16
#: ../../web/templates/pages/list_access_keys.php:7 #: ../../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_2.php:27
#: ../../web/templates/pages/login/reset_3.php:29 #: ../../web/templates/pages/login/reset_3.php:29
#: ../../web/templates/pages/setup_webapp.php:6 #: ../../web/templates/pages/setup_webapp.php:6
#: ../../web/templates/pages/edit_web.php:6
#: ../../web/templates/pages/extmodules.php:6 #: ../../web/templates/pages/extmodules.php:6
#: ../../web/templates/pages/extmodules_passenger_manager.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" msgid "Back"
msgstr "Назад" msgstr "Назад"
@@ -1673,10 +1677,11 @@ msgstr "Назад"
#: ../../web/templates/pages/edit_server_php.php:11 #: ../../web/templates/pages/edit_server_php.php:11
#: ../../web/templates/pages/edit_server_service.php:11 #: ../../web/templates/pages/edit_server_service.php:11
#: ../../web/templates/pages/edit_user.php:37 #: ../../web/templates/pages/edit_user.php:37
#: ../../web/templates/pages/edit_web.php:19
#: ../../web/templates/pages/edit_whitelabel.php:11 #: ../../web/templates/pages/edit_whitelabel.php:11
#: ../../web/templates/pages/setup_webapp.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_passenger_manager.php:11
#: ../../web/templates/pages/extmodules/extmodules_php_brepo_modules_list.php:11
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
@@ -1712,9 +1717,9 @@ msgstr "Коментарий"
#: ../../web/templates/pages/edit_ip.php:69 #: ../../web/templates/pages/edit_ip.php:69
#: ../../web/templates/pages/edit_ip.php:75 #: ../../web/templates/pages/edit_ip.php:75
#: ../../web/templates/pages/edit_mail.php:132 #: ../../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:215
#: ../../web/templates/pages/edit_web.php:398 #: ../../web/templates/pages/edit_web.php:398
#: ../../web/templates/pages/generate_ssl.php:28
msgid "Optional" msgid "Optional"
msgstr "Опционально" msgstr "Опционально"
@@ -1800,11 +1805,11 @@ msgstr "Каждые %s минут"
#: ../../web/templates/pages/edit_db.php:43 #: ../../web/templates/pages/edit_db.php:43
#: ../../web/templates/pages/edit_mail_acc.php:46 #: ../../web/templates/pages/edit_mail_acc.php:46
#: ../../web/templates/pages/edit_user.php:85 #: ../../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:120
#: ../../web/templates/pages/edit_web.php:439 #: ../../web/templates/pages/edit_web.php:439
#: ../../web/templates/pages/edit_web.php:545 #: ../../web/templates/pages/edit_web.php:545
#: ../../web/templates/pages/generate_ssl.php:59
#: ../../web/templates/pages/setup_webapp.php:63
msgid "Generate" msgid "Generate"
msgstr "Сгенерировать" msgstr "Сгенерировать"
@@ -2148,8 +2153,6 @@ msgstr "Серверы имен"
#: ../../web/templates/pages/add_dns.php:140 #: ../../web/templates/pages/add_dns.php:140
#: ../../web/templates/pages/add_dns.php:146 #: ../../web/templates/pages/add_dns.php:146
#: ../../web/templates/pages/add_dns.php:152 #: ../../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:41
#: ../../web/templates/pages/list_access_keys.php:101 #: ../../web/templates/pages/list_access_keys.php:101
#: ../../web/templates/pages/list_access_keys.php:102 #: ../../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:299
#: ../../web/templates/pages/list_web.php:300 #: ../../web/templates/pages/list_web.php:300
#: ../../web/templates/pages/list_web.php:304 #: ../../web/templates/pages/list_web.php:304
#: ../../web/templates/pages/edit_web.php:423
#: ../../web/templates/pages/edit_web.php:530
msgid "Delete" msgid "Delete"
msgstr "Удалить" msgstr "Удалить"
@@ -2812,23 +2817,23 @@ msgstr ""
#: ../../web/templates/pages/edit_mail.php:121 #: ../../web/templates/pages/edit_mail.php:121
#: ../../web/templates/pages/edit_server.php:930 #: ../../web/templates/pages/edit_server.php:930
#: ../../web/templates/pages/edit_web.php:204
#: ../../web/templates/pages/list_ssl.php:28 #: ../../web/templates/pages/list_ssl.php:28
#: ../../web/templates/pages/edit_web.php:204
msgid "SSL Certificate" msgid "SSL Certificate"
msgstr "SSL сертификат" msgstr "SSL сертификат"
#: ../../web/templates/pages/edit_mail.php:122 #: ../../web/templates/pages/edit_mail.php:122
#: ../../web/templates/pages/edit_server.php:938 #: ../../web/templates/pages/edit_server.php:938
#: ../../web/templates/pages/edit_web.php:205
#: ../../web/templates/pages/generate_ssl.php:16 #: ../../web/templates/pages/generate_ssl.php:16
#: ../../web/templates/pages/list_ssl.php:16 #: ../../web/templates/pages/list_ssl.php:16
#: ../../web/templates/pages/edit_web.php:205
msgid "Generate Self-Signed SSL Certificate" msgid "Generate Self-Signed SSL Certificate"
msgstr "Создать самозаверяющий SSL-сертификат" msgstr "Создать самозаверяющий SSL-сертификат"
#: ../../web/templates/pages/edit_mail.php:127 #: ../../web/templates/pages/edit_mail.php:127
#: ../../web/templates/pages/edit_server.php:950 #: ../../web/templates/pages/edit_server.php:950
#: ../../web/templates/pages/edit_web.php:210
#: ../../web/templates/pages/list_ssl.php:55 #: ../../web/templates/pages/list_ssl.php:55
#: ../../web/templates/pages/edit_web.php:210
msgid "SSL Private Key" msgid "SSL Private Key"
msgstr "Закрытый ключ SSL" msgstr "Закрытый ключ SSL"
@@ -2964,8 +2969,8 @@ msgid "Enable debug mode"
msgstr "Включить режим отладки" msgstr "Включить режим отладки"
#: ../../web/templates/pages/edit_server.php:147 #: ../../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_updates.php:29
#: ../../web/templates/pages/list_services.php:12
msgid "Updates" msgid "Updates"
msgstr "Обновления" msgstr "Обновления"
@@ -3318,9 +3323,9 @@ msgstr "Файрвол"
#: ../../web/templates/pages/list_services.php:25 #: ../../web/templates/pages/list_services.php:25
#: ../../web/templates/pages/list_services.php:28 #: ../../web/templates/pages/list_services.php:28
#: ../../web/templates/pages/list_services.php:41 #: ../../web/templates/pages/list_services.php:41
#: ../../web/templates/pages/list_services.php:178 #: ../../web/templates/pages/list_services.php:187
#: ../../web/templates/pages/list_services.php:179 #: ../../web/templates/pages/list_services.php:188
#: ../../web/templates/pages/list_services.php:183 #: ../../web/templates/pages/list_services.php:192
msgid "Restart" msgid "Restart"
msgstr "Перезапуск" msgstr "Перезапуск"
@@ -3427,141 +3432,6 @@ msgstr "Версия PHP для CLI"
msgid "Default Name Servers" msgid "Default Name Servers"
msgstr "Серверы имен" 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 #: ../../web/templates/pages/edit_whitelabel.php:33
msgid "White Label Options" msgid "White Label Options"
msgstr "Настройки \"Белой Этикетки\"" msgstr "Настройки \"Белой Этикетки\""
@@ -3708,13 +3578,13 @@ msgstr "Сортировать по"
#: ../../web/templates/pages/list_mail_acc.php:56 #: ../../web/templates/pages/list_mail_acc.php:56
#: ../../web/templates/pages/list_packages.php:32 #: ../../web/templates/pages/list_packages.php:32
#: ../../web/templates/pages/list_packages.php:35 #: ../../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_stats.php:29
#: ../../web/templates/pages/list_user.php:41 #: ../../web/templates/pages/list_user.php:41
#: ../../web/templates/pages/list_user.php:54 #: ../../web/templates/pages/list_user.php:54
#: ../../web/templates/pages/list_web.php:41 #: ../../web/templates/pages/list_web.php:41
#: ../../web/templates/pages/list_web.php:49 #: ../../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" msgid "Apply to selected"
msgstr "Применить к выбранному" msgstr "Применить к выбранному"
@@ -3732,9 +3602,9 @@ msgstr "Применить к выбранному"
#: ../../web/templates/pages/list_mail.php:73 #: ../../web/templates/pages/list_mail.php:73
#: ../../web/templates/pages/list_mail_acc.php:83 #: ../../web/templates/pages/list_mail_acc.php:83
#: ../../web/templates/pages/list_packages.php:52 #: ../../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_user.php:80
#: ../../web/templates/pages/list_web.php:76 #: ../../web/templates/pages/list_web.php:76
#: ../../web/templates/pages/list_services.php:100
msgid "Select all" msgid "Select all"
msgstr "Выбрать всё" msgstr "Выбрать всё"
@@ -3783,12 +3653,12 @@ msgstr "Время"
#: ../../web/templates/pages/list_mail_acc.php:164 #: ../../web/templates/pages/list_mail_acc.php:164
#: ../../web/templates/pages/list_packages.php:118 #: ../../web/templates/pages/list_packages.php:118
#: ../../web/templates/pages/list_packages.php:119 #: ../../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:144
#: ../../web/templates/pages/list_user.php:145 #: ../../web/templates/pages/list_user.php:145
#: ../../web/templates/pages/list_web.php:194 #: ../../web/templates/pages/list_web.php:194
#: ../../web/templates/pages/list_web.php:195 #: ../../web/templates/pages/list_web.php:195
#: ../../web/templates/pages/list_services.php:152
#: ../../web/templates/pages/list_services.php:153
msgid "Select" msgid "Select"
msgstr "Выбрать" msgstr "Выбрать"
@@ -4005,10 +3875,10 @@ msgstr "Вы уверены, что хотите заморозить дейст
#: ../../web/templates/pages/list_cron.php:133 #: ../../web/templates/pages/list_cron.php:133
#: ../../web/templates/pages/list_cron.php:136 #: ../../web/templates/pages/list_cron.php:136
#: ../../web/templates/pages/list_services.php:158 #: ../../web/templates/pages/extmodules.php:107
#: ../../web/templates/pages/list_services.php:168 #: ../../web/templates/pages/list_services.php:163
#: ../../web/templates/pages/list_services.php:171 #: ../../web/templates/pages/list_services.php:177
#: ../../web/templates/pages/extmodules.php:95 #: ../../web/templates/pages/list_services.php:180
msgid "Edit" msgid "Edit"
msgstr "Изменить" msgstr "Изменить"
@@ -4480,7 +4350,7 @@ msgstr "Панель управления Hestia"
#: ../../web/templates/pages/list_server_info.php:42 #: ../../web/templates/pages/list_server_info.php:42
#: ../../web/templates/pages/list_services.php:106 #: ../../web/templates/pages/list_services.php:106
#: ../../web/templates/pages/list_services.php:208 #: ../../web/templates/pages/list_services.php:217
msgid "CPU" msgid "CPU"
msgstr "Процессор" msgstr "Процессор"
@@ -4510,83 +4380,6 @@ msgstr "Политика"
msgid "Partially implemented" msgid "Partially implemented"
msgstr "Частично реализовано" 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 #: ../../web/templates/pages/list_ssl.php:82
msgid "SSL CSR" msgid "SSL CSR"
msgstr "SSL CSR запрос" msgstr "SSL CSR запрос"
@@ -4628,6 +4421,15 @@ msgstr "Включить автоматические обновления"
msgid "Package Names" msgid "Package Names"
msgstr "Имена пакетов" 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 #: ../../web/templates/pages/list_user.php:43
msgid "Rebuild User Profile" msgid "Rebuild User Profile"
msgstr "Восстановить профиль пользователя" msgstr "Восстановить профиль пользователя"
@@ -4706,6 +4508,11 @@ msgid "%d web domain"
msgid_plural "%d web domains" msgid_plural "%d web domains"
msgstr[0] "" 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 #: ../../web/templates/pages/list_webapps.php:29
msgid "Setup" msgid "Setup"
msgstr "Настроить" msgstr "Настроить"
@@ -4824,59 +4631,189 @@ msgstr ""
msgid "Please make sure ~/web/%s/public_html is empty!" msgid "Please make sure ~/web/%s/public_html is empty!"
msgstr "Убедитесь, что ~/web/%s/public_html пуста!" 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" msgid "List modules"
msgstr "Список модулей" msgstr "Список модулей"
#: ../../web/templates/pages/extmodules.php:19 #: ../../web/templates/pages/extmodules.php:31
#: ../../web/templates/pages/extmodules.php:50 #: ../../web/templates/pages/extmodules.php:62
msgid "Module ID" msgid "Module ID"
msgstr "ID модуля" msgstr "ID модуля"
#: ../../web/templates/pages/extmodules.php:20 #: ../../web/templates/pages/extmodules.php:32
#: ../../web/templates/pages/extmodules.php:54 #: ../../web/templates/pages/extmodules.php:66
msgid "Module name" msgid "Module name"
msgstr "Имя модуля" msgstr "Имя модуля"
#: ../../web/templates/pages/extmodules.php:22 #: ../../web/templates/pages/extmodules.php:34
#: ../../web/templates/pages/extmodules.php:78 #: ../../web/templates/pages/extmodules.php:90
msgid "Module description" msgid "Module description"
msgstr "Описание модуля" msgstr "Описание модуля"
#: ../../web/templates/pages/extmodules.php:23 #: ../../web/templates/pages/extmodules.php:35
#: ../../web/templates/pages/extmodules.php:82 #: ../../web/templates/pages/extmodules.php:94
msgid "Module state" msgid "Module state"
msgstr "Состояние" msgstr "Состояние"
#: ../../web/templates/pages/extmodules.php:24 #: ../../web/templates/pages/extmodules.php:36
#: ../../web/templates/pages/extmodules.php:86 #: ../../web/templates/pages/extmodules.php:98
msgid "Requirements" msgid "Requirements"
msgstr "Зависимости" msgstr "Зависимости"
#: ../../web/templates/pages/extmodules.php:25 #: ../../web/templates/pages/extmodules.php:37
#: ../../web/templates/pages/extmodules.php:90 #: ../../web/templates/pages/extmodules.php:102
msgid "Configuration" msgid "Configuration"
msgstr "Конфигурация" msgstr "Конфигурация"
#: ../../web/templates/pages/extmodules.php:35 #: ../../web/templates/pages/extmodules.php:47
msgid "Enable module" msgid "Enable module"
msgstr "Включить модуль" msgstr "Включить модуль"
#: ../../web/templates/pages/extmodules.php:38 #: ../../web/templates/pages/extmodules.php:50
#, php-format #, php-format
msgid "Are you sure you want to enable module %s?" msgid "Are you sure you want to enable module %s?"
msgstr "Вы уверены, что хотите включить модуль %s?" msgstr "Вы уверены, что хотите включить модуль %s?"
#: ../../web/templates/pages/extmodules.php:42 #: ../../web/templates/pages/extmodules.php:54
msgid "Disable module" msgid "Disable module"
msgstr "Отключить модуль" msgstr "Отключить модуль"
#: ../../web/templates/pages/extmodules.php:45 #: ../../web/templates/pages/extmodules.php:57
#, php-format #, php-format
msgid "Are you sure you want to disable module %s?" msgid "Are you sure you want to disable module %s?"
msgstr "Вы уверены, что хотите отключить модуль %s?" msgstr "Вы уверены, что хотите отключить модуль %s?"
#: ../../web/templates/pages/extmodules.php:114 #: ../../web/templates/pages/extmodules.php:126
msgid "Extended modules list" msgid "Extended modules list"
msgstr "Список расширенных модулей" msgstr "Список расширенных модулей"
@@ -4896,6 +4833,110 @@ msgstr "Вы уверены, что хотите удалить запись?"
msgid "Ruby available list" msgid "Ruby available list"
msgstr "Список доступных ruby" 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 #: ../../web/update/hestia/index.php:20
#, php-format #, php-format
msgid "Error: %s update failed." msgid "Error: %s update failed."

View File

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

View File

@@ -9,7 +9,7 @@ class DokuWikiSetup extends BaseSetup {
protected $appInfo = [ protected $appInfo = [
"name" => "DokuWiki", "name" => "DokuWiki",
"group" => "wiki", "group" => "wiki",
"enabled" => true, "enabled" => false,
"version" => "2023-04-04a", "version" => "2023-04-04a",
"thumbnail" => "dokuwiki-logo.svg", "thumbnail" => "dokuwiki-logo.svg",
]; ];
@@ -57,7 +57,7 @@ class DokuWikiSetup extends BaseSetup {
"template" => "default", "template" => "default",
], ],
"php" => [ "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 = [ protected $appInfo = [
"name" => "Drupal", "name" => "Drupal",
"group" => "cms", "group" => "cms",
"enabled" => "yes", "enabled" => false,
"version" => "latest", "version" => "latest",
"thumbnail" => "drupal-thumb.png", "thumbnail" => "drupal-thumb.png",
]; ];
@@ -30,7 +30,7 @@ class DrupalSetup extends BaseSetup {
"template" => "drupal-composer", "template" => "drupal-composer",
], ],
"php" => [ "php" => [
"supported" => ["8.1", "8.2"], "supported" => ["81", "82"],
], ],
], ],
]; ];

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -10,7 +10,7 @@ class WordpressSetup extends BaseSetup {
protected $appInfo = [ protected $appInfo = [
"name" => "WordPress", "name" => "WordPress",
"group" => "cms", "group" => "cms",
"enabled" => true, "enabled" => false,
"version" => "latest", "version" => "latest",
"thumbnail" => "wp-thumb.png", "thumbnail" => "wp-thumb.png",
]; ];
@@ -61,7 +61,7 @@ class WordpressSetup extends BaseSetup {
"template" => "wordpress", "template" => "wordpress",
], ],
"php" => [ "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'; $spnd_icon_class = 'icon-green';
$state_icon = 'fa-circle-minus icon-red'; $state_icon = 'fa-circle-minus icon-red';
} }
$vers="";
if (in_array($key, $phpfpm)){ if (in_array($key, $phpfpm)){
$edit_url="php"; $edit_url="php";
preg_match('/\d+/', $key, $matches);
$vers=$matches[0] ?? '82';;
} else { } else {
$edit_url=$key; $edit_url=$key;
} }
if (in_array($key, $clamav_names)){ if (in_array($key, $clamav_names)){
$edit_url="clamav-daemon"; $edit_url="clamav-daemon";
} else {
$edit_url=$key;
} }
$cpu = $data[$key]['CPU'] / 10; $cpu = $data[$key]['CPU'] / 10;
@@ -155,7 +156,11 @@
<div class="units-table-cell units-table-heading-cell u-text-bold"> <div class="units-table-cell units-table-heading-cell u-text-bold">
<span class="u-hide-desktop"><?= _("Service") ?>:</span> <span class="u-hide-desktop"><?= _("Service") ?>:</span>
<i class="fas <?= $state_icon ?> u-mr5"></i> <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 ?> <?= $key ?>
</a> </a>
</div> </div>
@@ -164,7 +169,11 @@
<li class="units-table-row-action shortcut-enter" data-key-action="href"> <li class="units-table-row-action shortcut-enter" data-key-action="href">
<a <a
class="units-table-row-action-link" 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") ?>" title="<?= _("Edit") ?>"
> >
<i class="fas fa-pencil icon-orange"></i> <i class="fas fa-pencil icon-orange"></i>