#!/bin/bash # БЫСТРЫЙ ребрендинг - оптимизированная версия 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 "" if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "Ошибка: Контейнер ${CONTAINER_NAME} не запущен." exit 1 fi echo "1. Замена логотипов..." STATIC_DIRS=( "/app/web/build/_app/immutable" "/app/web/static" "/app/web/build" ) for dir in "${STATIC_DIRS[@]}"; do if docker exec "${CONTAINER_NAME}" test -d "$dir" 2>/dev/null; then if [ -f "$MEDIA_DIR/logo.png" ]; then docker cp "$MEDIA_DIR/logo.png" "${CONTAINER_NAME}:${dir}/logo.png" 2>/dev/null || true fi if [ -f "$MEDIA_DIR/favicon.png" ]; then docker cp "$MEDIA_DIR/favicon.png" "${CONTAINER_NAME}:${dir}/favicon.png" 2>/dev/null || true docker cp "$MEDIA_DIR/favicon.png" "${CONTAINER_NAME}:${dir}/favicon.ico" 2>/dev/null || true fi fi done echo "2. БЫСТРОЕ удаление '(Open WebUI)' - поиск только в текстовых файлах..." # ОПТИМИЗАЦИЯ: Сначала находим файлы с текстом через grep -l (быстро) # Обрабатываем только нужные типы файлов FILES=$(docker exec "${CONTAINER_NAME}" find /app -type f \ \( -name "*.html" -o -name "*.svelte" -o -name "*.js" -o -name "*.jsx" -o -name "*.ts" -o -name "*.tsx" -o -name "*.json" -o -name "*.css" -o -name "*.mjs" \) \ ! -path "*/node_modules/*" ! -path "*/.next/*" \ ! -path "*/oauth*" ! -path "*/oidc*" ! -path "*authentik*" ! -path "*openid*" \ -exec grep -lE "(Open WebUI)|\(Open WebUI\)|iiEasyWeb.*Open.*WebUI" {} \; 2>/dev/null) if [ -z "$FILES" ]; then echo " Файлов с '(Open WebUI)' не найдено" else COUNT=$(echo "$FILES" | wc -l) echo " Найдено файлов: $COUNT" echo "$FILES" | while read file; do if [ -n "$file" ]; then # Один sed с несколькими командами - быстрее docker exec "${CONTAINER_NAME}" sed -i \ -e 's/(Open WebUI)//g' \ -e 's/\(Open WebUI\)//g' \ -e 's/ (Open WebUI)//g' \ -e 's/ \(Open WebUI\)//g' \ -e 's/iiEasyWeb (Open WebUI)/iiEasyWeb/g' \ -e 's/iiEasyWeb \(Open WebUI\)/iiEasyWeb/g' \ -e 's/iiEasyWeb(Open WebUI)/iiEasyWeb/g' \ -e "s/'(Open WebUI)'//g" \ -e 's/"(Open WebUI)"//g' \ -e 's/`(Open WebUI)`//g' \ -e 's/Войти в iiEasyWeb (Open WebUI)/Войти в iiEasyWeb/g' \ "$file" 2>/dev/null || true fi done echo " Обработка завершена" fi echo "3. Замена ссылок на документацию..." DOC_FILES=$(docker exec "${CONTAINER_NAME}" find /app -type f \ \( -name "*.html" -o -name "*.svelte" -o -name "*.js" -o -name "*.jsx" -o -name "*.ts" -o -name "*.tsx" -o -name "*.json" \) \ ! -path "*/node_modules/*" ! -path "*/.next/*" \ ! -path "*/oauth*" ! -path "*/oidc*" ! -path "*authentik*" ! -path "*openid*" \ -exec grep -lE "docs\.openwebui\.com|open-webui\.com/docs|github\.com/open-webui/docs" {} \; 2>/dev/null) if [ -z "$DOC_FILES" ]; then echo " Файлов со ссылками не найдено" else echo "$DOC_FILES" | while read file; do if [ -n "$file" ]; then docker exec "${CONTAINER_NAME}" sed -i \ -e 's|https://docs.openwebui.com|https://note.iieasy.ru|g' \ -e 's|https://open-webui.com/docs|https://note.iieasy.ru|g' \ -e 's|https://github.com/open-webui/docs|https://note.iieasy.ru|g' \ -e 's|docs\.openwebui\.com|note.iieasy.ru|g' \ -e 's|open-webui\.com/docs|note.iieasy.ru|g' \ "$file" 2>/dev/null || true fi done fi echo "4. Удаление социальных сетей и лицензии..." SOCIAL_FILES=$(docker exec "${CONTAINER_NAME}" find /app -type f \ \( -name "*.html" -o -name "*.svelte" -o -name "*.js" -o -name "*.jsx" -o -name "*.ts" -o -name "*.tsx" \) \ ! -path "*/node_modules/*" ! -path "*/.next/*" \ ! -path "*/oauth*" ! -path "*/oidc*" ! -path "*authentik*" ! -path "*openid*" \ -exec grep -lE "discord|twitter|x\.com|Github Repo|лицензионный|License" {} \; 2>/dev/null) if [ -z "$SOCIAL_FILES" ]; then echo " Файлов с соцсетями не найдено" else echo "$SOCIAL_FILES" | while read file; do if [ -n "$file" ]; then docker exec "${CONTAINER_NAME}" sed -i \ -e '/discord\.gg/d' -e '/discord\.com/d' -e '/Discord/d' \ -e '/twitter\.com/d' -e '/x\.com/d' -e '/X (formerly Twitter)/d' -e '/Twitter/d' -e '/Follow/d' \ -e '/Github Repo/d' -e '/GitHub Repo/d' \ -e '/лицензионный тарифный план/d' -e '/Перейдите на лицензионный/d' \ -e '/расширенные возможности/d' -e '/настраиваемую тематику/d' \ -e '/фирменный стиль/d' -e '/специальную поддержку/d' -e '/Лицензия/d' \ "$file" 2>/dev/null || true fi done fi echo "" echo "5. Перезапуск контейнера..." docker restart "${CONTAINER_NAME}" >/dev/null 2>&1 || { echo "Предупреждение: Перезапустите вручную: docker restart ${CONTAINER_NAME}" } echo "" echo "=== БЫСТРЫЙ ребрендинг завершен! ===" echo "" echo "Очистите кеш браузера (Ctrl+Shift+Delete)"