Files
iiEsaywebUI/scripts/rebrand_careful.sh

127 lines
5.4 KiB
Bash
Raw Permalink Normal View History

#!/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 WebUI</>iiEasyWeb</g' "$file" 2>/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"