Без скелета/шаблонов для новых пользователей; Talk без sample; install: config от occ, затем дополнение

This commit is contained in:
root 2026-03-16 04:00:15 +00:00
parent b8905de237
commit 6079443938
5 changed files with 37 additions and 92 deletions

View File

@ -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());

View File

@ -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;
}

View File

@ -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" <<EOF
<?php
\$CONFIG = array (
'passwordsalt' => '$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" <<EOF
),
EOF
# Trusted proxies
if [ -n "$TRUSTED_PROXIES" ]; then
echo " 'trusted_proxies' => " >> "$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" <<EOF
'datadirectory' => '$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'
<?php
$CONFIG_FILE = $argv[1];
$trusted_domains_str = $argv[2];
$trusted_proxies_str = isset($argv[3]) ? $argv[3] : '';
$cli_url = $argv[4] ?? '';
$CONFIG = array();
if (is_file($CONFIG_FILE)) { include $CONFIG_FILE; }
$CONFIG['trusted_domains'] = array_values(array_filter(array_map('trim', explode(',', $trusted_domains_str))));
$CONFIG['overwrite.cli.url'] = $cli_url;
$CONFIG['overwriteprotocol'] = 'https';
$CONFIG['htaccess.RewriteBase'] = '/';
$CONFIG['memcache.local'] = '\OC\Memcache\APCu';
$CONFIG['memcache.distributed'] = '\OC\Memcache\Redis';
$CONFIG['memcache.locking'] = '\OC\Memcache\Redis';
$CONFIG['redis'] = array('host' => '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, "<?php\n\$CONFIG = " . var_export($CONFIG, true) . ";\n");
PATCHEOF
php "$PATCH_PHP" "$CONFIG_FILE" "$TRUSTED_DOMAINS" "$TRUSTED_PROXIES" "$CLI_URL" 2>/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 ""

View File

@ -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));

View File

@ -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);