127 lines
5.4 KiB
Bash
Executable File
127 lines
5.4 KiB
Bash
Executable File
#!/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"
|