Add project and deployment instruction (docs/DEPLOYMENT.md)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
132
scripts/fix_user_agent.sh
Executable file
132
scripts/fix_user_agent.sh
Executable file
@@ -0,0 +1,132 @@
|
||||
#!/bin/sh
|
||||
# Исправление бага с User-Agent в Open WebUI v0.8.3
|
||||
# Проблема: User-Agent начинается с пробела, что вызывает ошибку "Invalid leading whitespace"
|
||||
|
||||
echo "Применение патча для исправления User-Agent..."
|
||||
|
||||
# Исправляем в retrieval.py
|
||||
FILE="/app/backend/open_webui/routers/retrieval.py"
|
||||
if [ -f "$FILE" ]; then
|
||||
echo "Обработка файла: $FILE"
|
||||
# Ищем все варианты проблемной строки (более агрессивный поиск)
|
||||
PROBLEM_FOUND=0
|
||||
|
||||
# Проверяем наличие проблемной строки в разных вариантах
|
||||
if grep -qE "(github\.com/open-webui|RAG Bot|https://github)" "$FILE" 2>/dev/null; then
|
||||
PROBLEM_FOUND=1
|
||||
fi
|
||||
|
||||
if [ "$PROBLEM_FOUND" -eq 1 ] || grep -q "User-Agent" "$FILE" 2>/dev/null; then
|
||||
echo " Найдены строки с User-Agent, применяем патч..."
|
||||
|
||||
# Более агрессивная замена - ищем любые варианты с пробелом в начале
|
||||
# Исправляем варианты с одинарными кавычками
|
||||
sed -i "s/' (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$FILE"
|
||||
sed -i "s/ '(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$FILE"
|
||||
sed -i "s/'\(https:\/\/github\.com\/open-webui\/open-webui\) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$FILE"
|
||||
|
||||
# Исправляем варианты с двойными кавычками
|
||||
sed -i 's/" (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$FILE"
|
||||
sed -i 's/ "(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$FILE"
|
||||
sed -i 's/"\(https:\/\/github\.com\/open-webui\/open-webui\) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$FILE"
|
||||
|
||||
# Исправляем варианты без кавычек
|
||||
sed -i "s/ (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot/Open-WebUI-RAG-Bot/g" "$FILE"
|
||||
sed -i "s/ \(https:\/\/github\.com\/open-webui\/open-webui\) RAG Bot/Open-WebUI-RAG-Bot/g" "$FILE"
|
||||
|
||||
# Исправляем если используется в headers dict с пробелом
|
||||
sed -i 's/"User-Agent": " (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$FILE"
|
||||
sed -i "s/'User-Agent': ' (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'User-Agent': 'Open-WebUI-RAG-Bot'/g" "$FILE"
|
||||
sed -i 's/"User-Agent": "(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$FILE"
|
||||
|
||||
# Исправляем f-string или конкатенацию
|
||||
sed -i 's/User-Agent.*github\.com.*open-webui.*RAG Bot/User-Agent": "Open-WebUI-RAG-Bot/g' "$FILE"
|
||||
|
||||
# Универсальная замена - ищем любую строку с пробелом перед User-Agent значением
|
||||
sed -i 's/"User-Agent": " [^"]*RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$FILE"
|
||||
sed -i "s/'User-Agent': ' [^']*RAG Bot'/'User-Agent': 'Open-WebUI-RAG-Bot'/g" "$FILE"
|
||||
|
||||
# Исправляем вариант "External Web Loader"
|
||||
sed -i 's/"User-Agent": " (https:\/\/github\.com\/open-webui\/open-webui) External Web Loader"/"User-Agent": "Open-WebUI-External-Web-Loader"/g' "$FILE"
|
||||
|
||||
# Универсальная замена для любых User-Agent с пробелом и github.com/open-webui
|
||||
sed -i 's/"User-Agent": " \([^"]*github\.com\/open-webui[^"]*\)"/"User-Agent": "Open-WebUI-Bot"/g' "$FILE"
|
||||
sed -i "s/'User-Agent': ' \([^']*github\.com\/open-webui[^']*\)'/'User-Agent': 'Open-WebUI-Bot'/g" "$FILE"
|
||||
|
||||
echo "✓ Патч применен к $FILE"
|
||||
else
|
||||
echo " Проблемная строка не найдена в $FILE (возможно, уже исправлена)"
|
||||
fi
|
||||
else
|
||||
echo "⚠ Файл $FILE не найден"
|
||||
fi
|
||||
|
||||
# Исправляем в middleware.py
|
||||
FILE2="/app/backend/open_webui/utils/middleware.py"
|
||||
if [ -f "$FILE2" ]; then
|
||||
echo "Обработка файла: $FILE2"
|
||||
PROBLEM_FOUND2=0
|
||||
|
||||
if grep -qE "(github\.com/open-webui|RAG Bot|https://github)" "$FILE2" 2>/dev/null; then
|
||||
PROBLEM_FOUND2=1
|
||||
fi
|
||||
|
||||
if [ "$PROBLEM_FOUND2" -eq 1 ] || grep -q "User-Agent" "$FILE2" 2>/dev/null; then
|
||||
echo " Найдены строки с User-Agent, применяем патч..."
|
||||
|
||||
# Те же замены что и для retrieval.py
|
||||
sed -i "s/' (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$FILE2"
|
||||
sed -i "s/ '(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$FILE2"
|
||||
sed -i 's/" (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$FILE2"
|
||||
sed -i 's/ "(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$FILE2"
|
||||
sed -i "s/ (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot/Open-WebUI-RAG-Bot/g" "$FILE2"
|
||||
sed -i 's/"User-Agent": " (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$FILE2"
|
||||
sed -i "s/'User-Agent': ' (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'User-Agent': 'Open-WebUI-RAG-Bot'/g" "$FILE2"
|
||||
sed -i 's/"User-Agent": "(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$FILE2"
|
||||
sed -i 's/User-Agent.*github\.com.*open-webui.*RAG Bot/User-Agent": "Open-WebUI-RAG-Bot/g' "$FILE2"
|
||||
sed -i 's/"User-Agent": " [^"]*RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$FILE2"
|
||||
sed -i "s/'User-Agent': ' [^']*RAG Bot'/'User-Agent': 'Open-WebUI-RAG-Bot'/g" "$FILE2"
|
||||
|
||||
# Исправляем вариант "External Web Loader"
|
||||
sed -i 's/"User-Agent": " (https:\/\/github\.com\/open-webui\/open-webui) External Web Loader"/"User-Agent": "Open-WebUI-External-Web-Loader"/g' "$FILE2"
|
||||
|
||||
# Универсальная замена для любых User-Agent с пробелом и github.com/open-webui
|
||||
sed -i 's/"User-Agent": " \([^"]*github\.com\/open-webui[^"]*\)"/"User-Agent": "Open-WebUI-Bot"/g' "$FILE2"
|
||||
sed -i "s/'User-Agent': ' \([^']*github\.com\/open-webui[^']*\)'/'User-Agent': 'Open-WebUI-Bot'/g" "$FILE2"
|
||||
|
||||
echo "✓ Патч применен к $FILE2"
|
||||
else
|
||||
echo " Проблемная строка не найдена в $FILE2 (возможно, уже исправлена)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ищем в других возможных файлах (более агрессивный поиск)
|
||||
echo "Поиск проблемной строки во всех Python файлах..."
|
||||
find /app/backend -name "*.py" -type f 2>/dev/null | while read pyfile; do
|
||||
if [ "$pyfile" != "$FILE" ] && [ "$pyfile" != "$FILE2" ]; then
|
||||
# Проверяем наличие проблемной строки в любом виде
|
||||
if grep -qE "(github\.com/open-webui|RAG Bot|https://github)" "$pyfile" 2>/dev/null; then
|
||||
echo " Обработка файла: $pyfile"
|
||||
# Применяем все варианты замены
|
||||
sed -i "s/' (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$pyfile"
|
||||
sed -i "s/ '(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot'/'Open-WebUI-RAG-Bot'/g" "$pyfile"
|
||||
sed -i 's/" (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$pyfile"
|
||||
sed -i 's/ "(https:\/\/github\.com\/open-webui\/open-webui) RAG Bot"/"Open-WebUI-RAG-Bot"/g' "$pyfile"
|
||||
sed -i "s/ (https:\/\/github\.com\/open-webui\/open-webui) RAG Bot/Open-WebUI-RAG-Bot/g" "$pyfile"
|
||||
sed -i 's/"User-Agent": " [^"]*RAG Bot"/"User-Agent": "Open-WebUI-RAG-Bot"/g' "$pyfile"
|
||||
sed -i "s/'User-Agent': ' [^']*RAG Bot'/'User-Agent': 'Open-WebUI-RAG-Bot'/g" "$pyfile"
|
||||
# Исправляем вариант "External Web Loader"
|
||||
sed -i 's/"User-Agent": " (https:\/\/github\.com\/open-webui\/open-webui) External Web Loader"/"User-Agent": "Open-WebUI-External-Web-Loader"/g' "$pyfile"
|
||||
# Универсальная замена
|
||||
sed -i 's/"User-Agent": " \([^"]*github\.com\/open-webui[^"]*\)"/"User-Agent": "Open-WebUI-Bot"/g' "$pyfile"
|
||||
sed -i "s/'User-Agent': ' \([^']*github\.com\/open-webui[^']*\)'/'User-Agent': 'Open-WebUI-Bot'/g" "$pyfile"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Удаляем скомпилированные Python файлы (.pyc), чтобы они пересобрались
|
||||
echo "Очистка скомпилированных файлов Python..."
|
||||
find /app/backend -name "*.pyc" -delete 2>/dev/null
|
||||
find /app/backend -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null
|
||||
|
||||
echo "Патч применен. Запуск Open WebUI..."
|
||||
Reference in New Issue
Block a user