#!/bin/bash # Установка/восстановление кастомизации F7 Office поверх coolwsd/code-brand. # Запуск: sudo ./install-f7office.sh [--dry-run] # Ожидается запуск из корня репозитория, где есть каталоги etc/ и usr/. set -e DRY_RUN="" [ "$1" = "--dry-run" ] && DRY_RUN="echo" && shift ROOT="" if [ -d "usr/share/coolwsd/browser/dist" ] && [ -d "etc" ]; then ROOT="." elif [ -d "f7office-deploy/usr" ]; then ROOT="f7office-deploy" else echo "Запустите скрипт из корня репозитория (где есть usr/ и etc/)." exit 1 fi COPY() { # Проверка существования источника if [ ! -e "$1" ]; then echo "Предупреждение: источник не существует: $1" return 1 fi # Создаем целевую директорию, если её нет local target_dir=$(dirname "$2") if [ ! -d "$target_dir" ]; then if [ -z "$DRY_RUN" ]; then mkdir -p "$target_dir" if [ $? -ne 0 ]; then echo "Ошибка: Не удалось создать директорию $target_dir" return 1 fi else echo "[DRY-RUN] mkdir -p $target_dir" fi fi # Копируем файл if [ -z "$DRY_RUN" ]; then cp -a "$1" "$2" if [ $? -ne 0 ]; then echo "Ошибка: Не удалось скопировать $1 в $2" return 1 fi else echo "[DRY-RUN] cp -a $1 $2" fi return 0 } # Копирование browser/dist (только изменённые файлы) DIST_SRC="${ROOT}/usr/share/coolwsd/browser/dist" DIST_DST="/usr/share/coolwsd/browser/dist" if [ ! -d "$DIST_DST" ]; then echo "Ошибка: Каталог $DIST_DST не найден." echo "Сначала установите coolwsd и code-brand." echo "" echo "Для Debian/Ubuntu:" echo " apt-get update" echo " apt-get install coolwsd code-brand" exit 1 fi # Дополнительная проверка: проверяем, что coolwsd установлен if ! command -v coolwsd &>/dev/null; then echo "Предупреждение: Команда coolwsd не найдена в PATH." echo "Убедитесь, что coolwsd установлен корректно." fi # Проверяем статус сервиса coolwsd (если доступен systemctl) if command -v systemctl &>/dev/null; then if systemctl is-active --quiet coolwsd 2>/dev/null; then echo "✓ Сервис coolwsd запущен" else echo "⚠ Предупреждение: Сервис coolwsd не запущен." echo " После установки файлов запустите: systemctl start coolwsd" fi fi [ -f "$DIST_SRC/branding.js" ] && COPY "$DIST_SRC/branding.js" "$DIST_DST/" [ -f "$DIST_SRC/branding.css" ] && COPY "$DIST_SRC/branding.css" "$DIST_DST/" [ -f "$DIST_SRC/branding-mobile.css" ] && COPY "$DIST_SRC/branding-mobile.css" "$DIST_DST/" [ -f "$DIST_SRC/branding-tablet.css" ] && COPY "$DIST_SRC/branding-tablet.css" "$DIST_DST/" [ -f "$DIST_SRC/cool.html" ] && COPY "$DIST_SRC/cool.html" "$DIST_DST/" [ -f "$DIST_SRC/wasm.html" ] && COPY "$DIST_SRC/wasm.html" "$DIST_DST/" [ -f "$DIST_SRC/welcome/welcome.html" ] && COPY "$DIST_SRC/welcome/welcome.html" "$DIST_DST/welcome/" [ -f "$DIST_SRC/src/layer/tile/CanvasTileUtils.js" ] && COPY "$DIST_SRC/src/layer/tile/CanvasTileUtils.js" "$DIST_DST/src/layer/tile/" [ -f "$DIST_SRC/src/layer/tile/TileWorker.js" ] && COPY "$DIST_SRC/src/layer/tile/TileWorker.js" "$DIST_DST/src/layer/tile/" # f7cloud — каталог брендинга F7 Office if [ -d "$DIST_SRC/f7cloud" ]; then $DRY_RUN rm -rf "$DIST_DST/f7cloud" $DRY_RUN cp -a "$DIST_SRC/f7cloud" "$DIST_DST/" fi # Конфиги (раскомментируйте при необходимости) # [ -f "${ROOT}/etc/coolwsd/coolwsd.xml" ] && COPY "${ROOT}/etc/coolwsd/coolwsd.xml" /etc/coolwsd/ # [ -f "${ROOT}/etc/apache2/sites-available/collabora-le-ssl.conf" ] && COPY "${ROOT}/etc/apache2/sites-available/collabora-le-ssl.conf" /etc/apache2/sites-available/ if [ -z "$DRY_RUN" ]; then echo "Файлы установлены." # Проверяем, какие файлы были скопированы echo "" echo "Установленные файлы:" [ -f "$DIST_DST/branding.js" ] && echo " ✓ branding.js" || echo " ✗ branding.js (не найден)" [ -f "$DIST_DST/branding.css" ] && echo " ✓ branding.css" || echo " ✗ branding.css (не найден)" [ -f "$DIST_DST/branding-mobile.css" ] && echo " ✓ branding-mobile.css" || echo " ✗ branding-mobile.css (не найден)" [ -f "$DIST_DST/branding-tablet.css" ] && echo " ✓ branding-tablet.css" || echo " ✗ branding-tablet.css (не найден)" [ -f "$DIST_DST/cool.html" ] && echo " ✓ cool.html" || echo " ✗ cool.html (не найден)" [ -f "$DIST_DST/wasm.html" ] && echo " ✓ wasm.html" || echo " ✗ wasm.html (не найден)" [ -f "$DIST_DST/welcome/welcome.html" ] && echo " ✓ welcome/welcome.html" || echo " ✗ welcome/welcome.html (не найден)" [ -f "$DIST_DST/src/layer/tile/CanvasTileUtils.js" ] && echo " ✓ src/layer/tile/CanvasTileUtils.js" || echo " ✗ src/layer/tile/CanvasTileUtils.js (не найден)" [ -f "$DIST_DST/src/layer/tile/TileWorker.js" ] && echo " ✓ src/layer/tile/TileWorker.js" || echo " ✗ src/layer/tile/TileWorker.js (не найден)" [ -d "$DIST_DST/f7cloud" ] && echo " ✓ f7cloud/ (директория брендинга)" || echo " ✗ f7cloud/ (директория не найдена)" echo "" echo "Перезапуск coolwsd..." if command -v systemctl &>/dev/null; then if systemctl restart coolwsd 2>/dev/null; then echo "✓ coolwsd перезапущен успешно" # Проверяем статус после перезапуска sleep 1 if systemctl is-active --quiet coolwsd 2>/dev/null; then echo "✓ coolwsd работает корректно" else echo "⚠ Предупреждение: coolwsd не запустился после перезапуска" echo " Проверьте логи: journalctl -u coolwsd" fi else echo "⚠ Не удалось перезапустить coolwsd автоматически" echo " Запустите вручную: systemctl restart coolwsd" echo " Или проверьте статус: systemctl status coolwsd" fi else echo "⚠ systemctl не найден, перезапустите coolwsd вручную" fi echo "" echo "Готово. F7_Office брендинг установлен." else echo "Dry-run: команды выше не выполнялись." echo "Для реальной установки запустите скрипт без --dry-run" fi