mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-05 08:10:14 +00:00
fix: add i18n translation key and fix security validation path in SaveImageTool
This commit is contained in:
parent
1632659c02
commit
7f1cab989f
19 changed files with 69 additions and 15 deletions
|
|
@ -36,21 +36,7 @@ export class SaveImageTool extends BaseTool<"save_image"> {
|
|||
return
|
||||
}
|
||||
|
||||
// Validate access via .rooignore
|
||||
const accessAllowed = task.rooIgnoreController?.validateAccess(relPath)
|
||||
if (!accessAllowed) {
|
||||
await task.say("rooignore_error", relPath)
|
||||
pushToolResult(formatResponse.rooIgnoreError(relPath))
|
||||
return
|
||||
}
|
||||
|
||||
// Check write protection
|
||||
const isWriteProtected = task.rooProtectedController?.isWriteProtected(relPath) || false
|
||||
|
||||
const fullPath = path.resolve(task.cwd, relPath)
|
||||
const isOutsideWorkspace = isPathOutsideWorkspace(fullPath)
|
||||
|
||||
// Validate the image data format
|
||||
// Validate the image data format first (to determine finalPath)
|
||||
const base64Match = data.match(/^data:image\/(png|jpeg|jpg|gif|webp|svg\+xml);base64,(.+)$/)
|
||||
if (!base64Match) {
|
||||
await task.say("error", t("tools:saveImage.invalidDataFormat"))
|
||||
|
|
@ -74,6 +60,20 @@ export class SaveImageTool extends BaseTool<"save_image"> {
|
|||
finalPath = `${finalPath}.${ext}`
|
||||
}
|
||||
|
||||
// Validate access via .rooignore (using finalPath after extension is added)
|
||||
const accessAllowed = task.rooIgnoreController?.validateAccess(finalPath)
|
||||
if (!accessAllowed) {
|
||||
await task.say("rooignore_error", finalPath)
|
||||
pushToolResult(formatResponse.rooIgnoreError(finalPath))
|
||||
return
|
||||
}
|
||||
|
||||
// Check write protection (using finalPath after extension is added)
|
||||
const isWriteProtected = task.rooProtectedController?.isWriteProtected(finalPath) || false
|
||||
|
||||
const fullPath = path.resolve(task.cwd, finalPath)
|
||||
const isOutsideWorkspace = isPathOutsideWorkspace(fullPath)
|
||||
|
||||
const sharedMessageProps = {
|
||||
tool: "saveImage" as const,
|
||||
path: getReadablePath(task.cwd, finalPath),
|
||||
|
|
|
|||
3
src/i18n/locales/ca/tools.json
generated
3
src/i18n/locales/ca/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Es requereix autenticació de Roo Code Cloud per a la generació d'imatges. Inicia sessió a Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Format de dades d'imatge no vàlid. S'esperava una URL de dades base64 (p. ex., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/de/tools.json
generated
3
src/i18n/locales/de/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Roo Code Cloud-Authentifizierung ist für die Bildgenerierung erforderlich. Bitte melde dich bei Roo Code Cloud an."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Roo Code Cloud authentication is required for image generation. Please sign in to Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/es/tools.json
generated
3
src/i18n/locales/es/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Se requiere autenticación de Roo Code Cloud para la generación de imágenes. Por favor, inicia sesión en Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/fr/tools.json
generated
3
src/i18n/locales/fr/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "L'authentification Roo Code Cloud est requise pour la génération d'images. Veuillez vous connecter à Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/hi/tools.json
generated
3
src/i18n/locales/hi/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "छवि निर्माण के लिए Roo Code Cloud प्रमाणीकरण आवश्यक है। कृपया Roo Code Cloud में साइन इन करें।"
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/id/tools.json
generated
3
src/i18n/locales/id/tools.json
generated
|
|
@ -30,5 +30,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Autentikasi Roo Code Cloud diperlukan untuk menghasilkan gambar. Silakan masuk ke Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/it/tools.json
generated
3
src/i18n/locales/it/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "L'autenticazione Roo Code Cloud è richiesta per la generazione di immagini. Accedi a Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/ja/tools.json
generated
3
src/i18n/locales/ja/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "画像生成にはRoo Code Cloud認証が必要です。Roo Code Cloudにサインインしてください。"
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/ko/tools.json
generated
3
src/i18n/locales/ko/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "이미지 생성에는 Roo Code Cloud 인증이 필요합니다. Roo Code Cloud에 로그인하세요."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/nl/tools.json
generated
3
src/i18n/locales/nl/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Roo Code Cloud-authenticatie is vereist voor het genereren van afbeeldingen. Log in bij Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/pl/tools.json
generated
3
src/i18n/locales/pl/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Uwierzytelnienie Roo Code Cloud jest wymagane do generowania obrazów. Zaloguj się do Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/pt-BR/tools.json
generated
3
src/i18n/locales/pt-BR/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "A autenticação do Roo Code Cloud é necessária para geração de imagens. Faça login no Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/ru/tools.json
generated
3
src/i18n/locales/ru/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Для генерации изображений требуется аутентификация Roo Code Cloud. Войдите в Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/tr/tools.json
generated
3
src/i18n/locales/tr/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Görüntü oluşturma için Roo Code Cloud kimlik doğrulaması gereklidir. Lütfen Roo Code Cloud'da oturum açın."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/vi/tools.json
generated
3
src/i18n/locales/vi/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "Yêu cầu xác thực Roo Code Cloud để tạo hình ảnh. Vui lòng đăng nhập vào Roo Code Cloud."
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/zh-CN/tools.json
generated
3
src/i18n/locales/zh-CN/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "图像生成需要 Roo Code Cloud 认证。请登录 Roo Code Cloud。"
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
src/i18n/locales/zh-TW/tools.json
generated
3
src/i18n/locales/zh-TW/tools.json
generated
|
|
@ -27,5 +27,8 @@
|
|||
"roo": {
|
||||
"authRequired": "圖像生成需要 Roo Code Cloud 認證。請登入 Roo Code Cloud。"
|
||||
}
|
||||
},
|
||||
"saveImage": {
|
||||
"invalidDataFormat": "Invalid image data format. Expected a base64 data URL (e.g., 'data:image/png;base64,...')."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue