diff --git a/docker-compose.deps.yml b/docker-compose.deps.yml index bf8479759..919c88a10 100644 --- a/docker-compose.deps.yml +++ b/docker-compose.deps.yml @@ -1,15 +1,19 @@ version: "3.7" services: - imgproxy: - image: darthsim/imgproxy:latest - container_name: rere-imgproxy + thumbor: + image: mvhirsch/thumbor:latest + container_name: thumbor restart: always ports: - - 2873:8080 + - 2873:8888 environment: - - IMGPROXY_ENABLE_WEBP_DETECTION=true - - IMGPROXY_ENABLE_AVIF_DETECTION=true - - IMGPROXY_READ_TIMEOUT=30 - - IMGPROXY_DOWNLOAD_TIMEOUT=30 - - IMGPROXY_TRUSTED_SIGNATURES=follow - - IMGPROXY_IGNORE_SSL_VERIFICATION=true + - HTTP_LOADER_FORWARD_HEADERS_WHITELIST=["Referer"] + - AUTO_WEBP=True + - HTTP_LOADER_CONNECT_TIMEOUT=10 + - HTTP_LOADER_REQUEST_TIMEOUT=30 + - RESULT_STORAGE_STORES_UNSAFE=True + volumes: + - thumbor:/usr/local/thumbor/result_storage + +volumes: + thumbor: diff --git a/src/main/window.ts b/src/main/window.ts index 05159d84e..b34aa0ebd 100644 --- a/src/main/window.ts +++ b/src/main/window.ts @@ -67,13 +67,27 @@ export function createWindow(): void { ] mainWindow.webContents.session.webRequest.onBeforeSendHeaders( (details, callback) => { - const refererMatch = refererMatchs.find((item) => - item.url.test(details.url), - ) + let trueUrl + if ( + process.env["VITE_IMGPROXY_URL"] && + details.url.startsWith(process.env["VITE_IMGPROXY_URL"]) + ) { + trueUrl = decodeURIComponent( + details.url.replace( + new RegExp( + `^${process.env["VITE_IMGPROXY_URL"]}/unsafe/\\d+x\\d+\/`, + ), + "", + ), + ) + } else { + trueUrl = details.url + } + const refererMatch = refererMatchs.find((item) => item.url.test(trueUrl)) callback({ requestHeaders: { ...details.requestHeaders, - Referer: refererMatch?.referer || details.url, + Referer: refererMatch?.referer || trueUrl, }, }) }, diff --git a/src/renderer/src/lib/img-proxy.ts b/src/renderer/src/lib/img-proxy.ts index cc04ab237..0ca65a00f 100644 --- a/src/renderer/src/lib/img-proxy.ts +++ b/src/renderer/src/lib/img-proxy.ts @@ -7,5 +7,5 @@ export const getProxyUrl = ({ width: number height: number }) => { - return `${import.meta.env.VITE_IMGPROXY_URL}/follow/rs:fill:${width}:${height}/plain/${url}` + return `${import.meta.env.VITE_IMGPROXY_URL}/unsafe/${width}x${height}/${encodeURIComponent(url)}` }