From 60794439385d5dd4cb50c5b2cd77790825a031a2 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 16 Mar 2026 04:00:15 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=D0=91=D0=B5=D0=B7=20=D1=81=D0=BA=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D1=82=D0=B0/=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=B9;=20Talk=20=D0=B1=D0=B5=D0=B7=20sample;?= =?UTF-8?q?=20install:=20config=20=D0=BE=D1=82=20occ,=20=D0=B7=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/files/lib/Controller/ViewController.php | 2 +- .../Service/SampleConversationsService.php | 2 +- install.sh | 119 +++++------------- .../Files/Template/TemplateManager.php | 4 +- lib/private/legacy/OC_Util.php | 2 +- 5 files changed, 37 insertions(+), 92 deletions(-) diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 74d48a47..81d5e117 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -194,7 +194,7 @@ class ViewController extends Controller { $this->eventDispatcher->dispatchTyped(new LoadViewer()); } - $this->initialState->provideInitialState('templates_enabled', ($this->config->getSystemValueString('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton') !== '') || ($this->config->getSystemValueString('templatedirectory', \OC::$SERVERROOT . '/core/skeleton/Templates') !== '')); + $this->initialState->provideInitialState('templates_enabled', ($this->config->getSystemValueString('skeletondirectory', '') !== '') || ($this->config->getSystemValueString('templatedirectory', '') !== '')); $this->initialState->provideInitialState('templates_path', $this->templateManager->hasTemplateDirectory() ? $this->templateManager->getTemplatePath() : false); $this->initialState->provideInitialState('templates', $this->templateManager->listCreators()); diff --git a/apps/spreed/lib/Service/SampleConversationsService.php b/apps/spreed/lib/Service/SampleConversationsService.php index 994d4e4d..bb70e917 100644 --- a/apps/spreed/lib/Service/SampleConversationsService.php +++ b/apps/spreed/lib/Service/SampleConversationsService.php @@ -49,7 +49,7 @@ class SampleConversationsService { } public function initialCreateSamples(string $userId): void { - if (!$this->appConfig->getAppValueBool('create_samples', true)) { + if (!$this->appConfig->getAppValueBool('create_samples', false)) { return; } diff --git a/install.sh b/install.sh index 70bdb289..2b24dd36 100755 --- a/install.sh +++ b/install.sh @@ -286,16 +286,10 @@ else echo "Используется пароль администратора из переменной окружения" fi -# Генерация секретов -echo "[7/8] Генерация секретов..." -PASSWORD_SALT=$(generate_random) -SECRET=$(generate_random) -INSTANCE_ID=$(generate_instanceid) +# Создание config.php не выполняем — passwordsalt, secret, instanceid создаст occ maintenance:install +echo "[7/8] Подготовка к установке..." -# Создание config.php -echo "[8/8] Создание config.php..." - -# Создать директорию config если нет +# Создать директорию config если нет (occ создаст в ней config.php) mkdir -p "$INSTALL_DIR/config" # Бэкап существующего config.php @@ -304,72 +298,6 @@ if [ -f "$CONFIG_FILE" ]; then echo "✓ Старый config.php сохранен в бэкап" fi -# Создать config.php -cat > "$CONFIG_FILE" < '$PASSWORD_SALT', - 'secret' => '$SECRET', - 'trusted_domains' => - array ( -EOF - -# Добавить trusted domains -IFS=',' read -ra DOMAINS <<< "$TRUSTED_DOMAINS" -for i in "${!DOMAINS[@]}"; do - DOMAIN_CLEAN=$(echo "${DOMAINS[$i]}" | xargs) - echo " $i => '$DOMAIN_CLEAN'," >> "$CONFIG_FILE" -done - -cat >> "$CONFIG_FILE" < " >> "$CONFIG_FILE" - echo " array (" >> "$CONFIG_FILE" - IFS=',' read -ra PROXIES <<< "$TRUSTED_PROXIES" - for i in "${!PROXIES[@]}"; do - PROXY_CLEAN=$(echo "${PROXIES[$i]}" | xargs) - echo " $i => '$PROXY_CLEAN'," >> "$CONFIG_FILE" - done - echo " )," >> "$CONFIG_FILE" -fi - -cat >> "$CONFIG_FILE" < '$DATA_DIR', - 'dbtype' => 'pgsql', - 'version' => '1.0.0', - 'dbname' => '$DB_NAME', - 'dbhost' => '$DB_HOST', - 'dbport' => '$DB_PORT', - 'dbtableprefix' => '$DB_PREFIX', - 'dbuser' => '$DB_USER', - 'dbpassword' => '$DB_PASSWORD', - 'installed' => false, - 'instanceid' => '$INSTANCE_ID', - 'memcache.local' => '\\\\OC\\\\Memcache\\\\APCu', - 'memcache.distributed' => '\\\\OC\\\\Memcache\\\\Redis', - 'memcache.locking' => '\\\\OC\\\\Memcache\\\\Redis', - 'redis' => - array ( - 'host' => '127.0.0.1', - 'port' => 6379, - 'timeout' => 1.5, - 'dbindex' => 0, - ), - 'maintenance' => false, - 'loglevel' => 0, - 'overwrite.cli.url' => '$CLI_URL', - 'htaccess.RewriteBase' => '/', -); -EOF - -chmod 640 "$CONFIG_FILE" -chown root:$APACHE_USER "$CONFIG_FILE" -echo "✓ config.php создан" - # Создание директории данных if [ ! -d "$DATA_DIR" ]; then mkdir -p "$DATA_DIR" @@ -426,19 +354,36 @@ if sudo -u $APACHE_USER php occ maintenance:install \ --admin-pass "$ADMIN_PASSWORD" \ --data-dir "$DATA_DIR" 2>&1; then - echo "✓ F7cloud успешно инициализирован" + echo "✓ F7cloud успешно инициализирован (passwordsalt, secret, instanceid взяты из config, созданного occ)" - # Обновить config.php - установить installed => true - if grep -q "'installed' => false" "$CONFIG_FILE"; then - sed -i "s/'installed' => false/'installed' => true/" "$CONFIG_FILE" - echo "✓ config.php обновлен (installed => true)" - fi - - # Если есть overwriteprotocol, установить https (если прокси использует HTTPS) - if ! grep -q "overwriteprotocol" "$CONFIG_FILE"; then - sed -i "/'htaccess.RewriteBase' => '/a\\ 'overwriteprotocol' => 'https'," "$CONFIG_FILE" - echo "✓ Добавлен overwriteprotocol => https (для работы за прокси)" - fi + # Дополнить config.php: trusted_domains, trusted_proxies, redis, overwriteprotocol (passwordsalt, secret, instanceid уже из occ) + PATCH_PHP=$(mktemp) + cat > "$PATCH_PHP" <<'PATCHEOF' + '127.0.0.1', 'port' => 6379, 'timeout' => 1.5, 'dbindex' => 0); +$CONFIG['maintenance'] = false; +$CONFIG['loglevel'] = 0; +if ($trusted_proxies_str !== '') { + $CONFIG['trusted_proxies'] = array_values(array_filter(array_map('trim', explode(',', $trusted_proxies_str)))); +} +file_put_contents($CONFIG_FILE, "/dev/null && rm -f "$PATCH_PHP" && echo "✓ config.php дополнен (trusted_domains, redis, overwriteprotocol и др.)" + chmod 640 "$CONFIG_FILE" + chown root:$APACHE_USER "$CONFIG_FILE" 2>/dev/null || true # Настройка F7Talk (если приложение установлено) echo "" diff --git a/lib/private/Files/Template/TemplateManager.php b/lib/private/Files/Template/TemplateManager.php index cbb71e30..1061039d 100644 --- a/lib/private/Files/Template/TemplateManager.php +++ b/lib/private/Files/Template/TemplateManager.php @@ -328,8 +328,8 @@ class TemplateManager implements ITemplateManager { $defaultSkeletonDirectory = \OC::$SERVERROOT . '/core/skeleton'; $defaultTemplateDirectory = \OC::$SERVERROOT . '/core/skeleton/Templates'; - $skeletonPath = $this->config->getSystemValueString('skeletondirectory', $defaultSkeletonDirectory); - $skeletonTemplatePath = $this->config->getSystemValueString('templatedirectory', $defaultTemplateDirectory); + $skeletonPath = $this->config->getSystemValueString('skeletondirectory', ''); + $skeletonTemplatePath = $this->config->getSystemValueString('templatedirectory', ''); $isDefaultSkeleton = $skeletonPath === $defaultSkeletonDirectory; $isDefaultTemplates = $skeletonTemplatePath === $defaultTemplateDirectory; $userLang = $this->l10nFactory->getUserLanguage($this->userManager->get($this->userId)); diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php index 6c750148..ff0d37dd 100644 --- a/lib/private/legacy/OC_Util.php +++ b/lib/private/legacy/OC_Util.php @@ -124,7 +124,7 @@ class OC_Util { /** @var LoggerInterface $logger */ $logger = \OC::$server->get(LoggerInterface::class); - $plainSkeletonDirectory = \OC::$server->getConfig()->getSystemValueString('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton'); + $plainSkeletonDirectory = \OC::$server->getConfig()->getSystemValueString('skeletondirectory', ''); $userLang = \OC::$server->get(IFactory::class)->findLanguage(); $skeletonDirectory = str_replace('{lang}', $userLang, $plainSkeletonDirectory); From 04f1611d99dd8cb083479039ed248011c2102c01 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 16 Mar 2026 06:05:06 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20Apache=20=D0=B2=20install.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 2b24dd36..353e7bf2 100755 --- a/install.sh +++ b/install.sh @@ -10,7 +10,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INSTALL_DIR="$SCRIPT_DIR" CONFIG_FILE="$INSTALL_DIR/config/config.php" DATA_DIR="/data" -APACHE_USER="www-data" +# APACHE_USER задаётся ниже после определения типа веб-сервера (apache2 → www-data, httpd → apache) echo "==========================================" echo "F7cloud Client Installation Script" @@ -71,6 +71,33 @@ else exit 1 fi +# Пользователь веб-сервера: под Debian/Ubuntu (apache2) — www-data, под RHEL/CentOS (httpd) — apache +# Переменная окружения APACHE_USER переопределяет автоопределение +if [ -n "${APACHE_USER:-}" ]; then + : # уже задан из окружения +else + if [ "$APACHE_SERVICE" = "httpd" ]; then + APACHE_USER="apache" + else + APACHE_USER="www-data" + fi +fi +# Проверка, что пользователь существует (на некоторых системах есть только www-data) +if ! id "$APACHE_USER" &>/dev/null; then + if [ "$APACHE_USER" = "apache" ]; then + echo "Пользователь apache не найден, используется www-data" + APACHE_USER="www-data" + else + echo "Пользователь www-data не найден, используется apache" + APACHE_USER="apache" + fi +fi +if ! id "$APACHE_USER" &>/dev/null; then + echo "Ошибка: не найден пользователь веб-сервера (ни www-data, ни apache). Создайте пользователя или задайте APACHE_USER." + exit 1 +fi +echo "✓ Пользователь веб-сервера: $APACHE_USER" + echo "✓ Apache установлен" # Включить необходимые модули Apache