#!/bin/bash # ОЧЕНЬ АККУРАТНЫЙ ребрендинг Open WebUI для iiEasy # Только безопасные замены текста, НЕ трогает код set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" MEDIA_DIR="$PROJECT_DIR/media" CONTAINER_NAME="open-webui" echo "=== АККУРАТНЫЙ ребрендинг Open WebUI для iiEasy ===" echo "⚠ Только безопасные замены текста в интерфейсе" echo "⚠ Код Python/JS НЕ изменяется" echo "⚠ OAuth/Authentik полностью защищены" echo "" # Проверка наличия контейнера if ! docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "Ошибка: Контейнер ${CONTAINER_NAME} не найден." exit 1 fi if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "Ошибка: Контейнер ${CONTAINER_NAME} не запущен." exit 1 fi echo "1. Замена логотипов и favicon..." STATIC_DIRS=( "/app/web/build/_app/immutable" "/app/web/static" "/app/web/build" ) STATIC_DIR="" for dir in "${STATIC_DIRS[@]}"; do if docker exec "${CONTAINER_NAME}" test -d "$dir" 2>/dev/null; then STATIC_DIR="$dir" break fi done if [ -z "$STATIC_DIR" ]; then FAVICON_PATH=$(docker exec "${CONTAINER_NAME}" find /app/web -name "favicon.png" -o -name "favicon.ico" 2>/dev/null | head -1) if [ -n "$FAVICON_PATH" ]; then STATIC_DIR=$(dirname "$FAVICON_PATH") else STATIC_DIR="/app/web/build/_app/immutable" fi fi # Копирование логотипов if [ -f "$MEDIA_DIR/logo.png" ]; then docker cp "$MEDIA_DIR/logo.png" "${CONTAINER_NAME}:${STATIC_DIR}/logo.png" 2>/dev/null || true fi if [ -f "$MEDIA_DIR/favicon.png" ]; then docker cp "$MEDIA_DIR/favicon.png" "${CONTAINER_NAME}:${STATIC_DIR}/favicon.png" 2>/dev/null || true docker cp "$MEDIA_DIR/favicon.png" "${CONTAINER_NAME}:${STATIC_DIR}/favicon.ico" 2>/dev/null || true fi echo "2. Замена текста 'Open WebUI' на 'iiEasyWeb' ТОЛЬКО в HTML/текстовых строках..." # ТОЛЬКО фронтенд HTML/Svelte файлы - заменяем только в текстовом контенте docker exec "${CONTAINER_NAME}" find /app/web -type f \( -name "*.html" -o -name "*.svelte" \) \ ! -path "*/node_modules/*" ! -path "*/.next/*" ! -path "*/dist/*" \ 2>/dev/null | while read file; do # Заменяем только в текстовом контенте между тегами, не в атрибутах или коде if docker exec "${CONTAINER_NAME}" grep -q "Open WebUI" "$file" 2>/dev/null; then echo " HTML/Svelte: $file" # Заменяем только "Open WebUI" (с заглавными) в тексте, не трогаем код docker exec "${CONTAINER_NAME}" sed -i 's/>Open WebUIiiEasyWeb/dev/null || true docker exec "${CONTAINER_NAME}" sed -i 's/Open WebUI/iiEasyWeb/g' "$file" 2>/dev/null || true fi done echo "3. Удаление '(Open WebUI)' из текста интерфейса..." # Только удаляем текст в скобках из HTML docker exec "${CONTAINER_NAME}" find /app/web -type f \( -name "*.html" -o -name "*.svelte" \) \ ! -path "*/node_modules/*" ! -path "*/.next/*" ! -path "*/dist/*" \ 2>/dev/null | while read file; do if docker exec "${CONTAINER_NAME}" grep -q "(Open WebUI)" "$file" 2>/dev/null; then echo " Удаление скобок: $file" docker exec "${CONTAINER_NAME}" sed -i 's/(Open WebUI)//g' "$file" 2>/dev/null || true fi done echo "4. Удаление 'Powered by Open WebUI' футеров..." # Только удаляем строки с "Powered by" docker exec "${CONTAINER_NAME}" find /app/web -type f \( -name "*.html" -o -name "*.svelte" \) \ ! -path "*/node_modules/*" ! -path "*/.next/*" ! -path "*/dist/*" \ 2>/dev/null | while read file; do if docker exec "${CONTAINER_NAME}" grep -q "Powered by.*Open WebUI\|powered by.*Open WebUI" "$file" 2>/dev/null; then echo " Удаление футера: $file" docker exec "${CONTAINER_NAME}" sed -i '/Powered by.*Open WebUI/d' "$file" 2>/dev/null || true docker exec "${CONTAINER_NAME}" sed -i '/powered by.*Open WebUI/d' "$file" 2>/dev/null || true fi done echo "" echo "✓ Изменены ТОЛЬКО текстовые строки в HTML/Svelte" echo "✓ Код Python/JS НЕ изменялся" echo "✓ OAuth/Authentik полностью защищены" echo "" echo "5. Перезапуск контейнера..." docker restart "${CONTAINER_NAME}" >/dev/null 2>&1 || { echo "Предупреждение: Перезапустите вручную: docker restart ${CONTAINER_NAME}" } echo "" echo "=== АККУРАТНЫЙ ребрендинг завершен! ===" echo "" echo "Проверьте:" echo " 1. Откройте https://odo.iieasy.ru" echo " 2. Все должно работать нормально" echo " 3. Текст 'Open WebUI' заменен на 'iiEasyWeb' в интерфейсе" echo "" echo "Если что-то не работает, пересоздайте контейнер:" echo " sudo docker compose stop open-webui" echo " sudo docker compose rm -f open-webui" echo " sudo docker compose up -d open-webui"