Skip to content

Commit 34622e4

Browse files
[autofix.ci] apply automated fixes
1 parent 7833db6 commit 34622e4

1 file changed

Lines changed: 83 additions & 14 deletions

File tree

server/api/registry/image-proxy/index.get.ts

Lines changed: 83 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,14 @@ export default defineEventHandler(async event => {
5858
// Verify HMAC signature to ensure this URL was generated server-side
5959
const { imageProxySecret } = useRuntimeConfig()
6060
if (!imageProxySecret || !verifyImageUrl(url, sig, imageProxySecret)) {
61-
return {place: 'sig', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl, imageProxySecret}
61+
return {
62+
place: 'sig',
63+
url,
64+
sig,
65+
reqUrl: event.node.req.url,
66+
reqOrigUrl: event.node.req.originalUrl,
67+
imageProxySecret,
68+
}
6269
// throw createError({
6370
// statusCode: 403,
6471
// message: 'Invalid signature.',
@@ -67,7 +74,13 @@ export default defineEventHandler(async event => {
6774

6875
// Validate URL syntactically
6976
if (!isAllowedImageUrl(url)) {
70-
return {place: 'isAllowedImageUrl', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
77+
return {
78+
place: 'isAllowedImageUrl',
79+
url,
80+
sig,
81+
reqUrl: event.node.req.url,
82+
reqOrigUrl: event.node.req.originalUrl,
83+
}
7184
// throw createError({
7285
// statusCode: 400,
7386
// message: 'Invalid or disallowed image URL.',
@@ -77,7 +90,13 @@ export default defineEventHandler(async event => {
7790
// Resolve hostname via DNS and validate the resolved IP is not private.
7891
// This prevents DNS rebinding attacks where a hostname resolves to a private IP.
7992
if (!(await resolveAndValidateHost(url))) {
80-
return {place: 'resolveAndValidateHost', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
93+
return {
94+
place: 'resolveAndValidateHost',
95+
url,
96+
sig,
97+
reqUrl: event.node.req.url,
98+
reqOrigUrl: event.node.req.originalUrl,
99+
}
81100
// throw createError({
82101
// statusCode: 400,
83102
// message: 'Invalid or disallowed image URL.',
@@ -115,15 +134,27 @@ export default defineEventHandler(async event => {
115134

116135
// Validate the redirect target before following it
117136
if (!isAllowedImageUrl(redirectUrl)) {
118-
return {place: 'isAllowedImageUrl 2', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
137+
return {
138+
place: 'isAllowedImageUrl 2',
139+
url,
140+
sig,
141+
reqUrl: event.node.req.url,
142+
reqOrigUrl: event.node.req.originalUrl,
143+
}
119144
// throw createError({
120145
// statusCode: 400,
121146
// message: 'Redirect to disallowed URL.',
122147
// })
123148
}
124149

125150
if (!(await resolveAndValidateHost(redirectUrl))) {
126-
return {place: 'resolveAndValidateHost 2', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
151+
return {
152+
place: 'resolveAndValidateHost 2',
153+
url,
154+
sig,
155+
reqUrl: event.node.req.url,
156+
reqOrigUrl: event.node.req.originalUrl,
157+
}
127158
// throw createError({
128159
// statusCode: 400,
129160
// message: 'Redirect to disallowed URL.',
@@ -136,7 +167,13 @@ export default defineEventHandler(async event => {
136167
}
137168

138169
if (!response) {
139-
return {place: 'response', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
170+
return {
171+
place: 'response',
172+
url,
173+
sig,
174+
reqUrl: event.node.req.url,
175+
reqOrigUrl: event.node.req.originalUrl,
176+
}
140177
// throw createError({
141178
// statusCode: 502,
142179
// message: 'Failed to fetch image.',
@@ -146,19 +183,31 @@ export default defineEventHandler(async event => {
146183
// Check if we exhausted the redirect limit
147184
if (REDIRECT_STATUSES.has(response.status)) {
148185
await response.body?.cancel()
149-
return {place: 'response 2', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
186+
return {
187+
place: 'response 2',
188+
url,
189+
sig,
190+
reqUrl: event.node.req.url,
191+
reqOrigUrl: event.node.req.originalUrl,
192+
}
150193
// throw createError({
151194
// statusCode: 502,
152-
// message: 'Too many redirects.',
195+
// message: 'Too many redirects.',
153196
// })
154197
}
155198

156199
if (!response.ok) {
157200
await response.body?.cancel()
158-
return {place: 'response 3', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
201+
return {
202+
place: 'response 3',
203+
url,
204+
sig,
205+
reqUrl: event.node.req.url,
206+
reqOrigUrl: event.node.req.originalUrl,
207+
}
159208
// throw createError({
160209
// statusCode: response.status === 404 ? 404 : 502,
161-
// message: `Failed to fetch image: ${response.status}`,
210+
// message: `Failed to fetch image: ${response.status}`,
162211
// })
163212
}
164213

@@ -168,10 +217,16 @@ export default defineEventHandler(async event => {
168217
// embedded JavaScript execution (SVGs can contain <script> tags, event handlers, etc.)
169218
if (!contentType.startsWith('image/') || contentType.includes('svg')) {
170219
await response.body?.cancel()
171-
return {place: 'contentType', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl}
220+
return {
221+
place: 'contentType',
222+
url,
223+
sig,
224+
reqUrl: event.node.req.url,
225+
reqOrigUrl: event.node.req.originalUrl,
226+
}
172227
// throw createError({
173228
// statusCode: 400,
174-
// message: 'URL does not point to an allowed image type.',
229+
// message: 'URL does not point to an allowed image type.',
175230
// })
176231
}
177232

@@ -234,11 +289,25 @@ export default defineEventHandler(async event => {
234289
} catch (error: unknown) {
235290
// Re-throw H3 errors
236291
if (error && typeof error === 'object' && 'statusCode' in error) {
237-
return {place: 'error', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl, error}
292+
return {
293+
place: 'error',
294+
url,
295+
sig,
296+
reqUrl: event.node.req.url,
297+
reqOrigUrl: event.node.req.originalUrl,
298+
error,
299+
}
238300
// throw error
239301
}
240302

241-
return {place: 'error 2', url, sig, reqUrl: event.node.req.url, reqOrigUrl: event.node.req.originalUrl, error}
303+
return {
304+
place: 'error 2',
305+
url,
306+
sig,
307+
reqUrl: event.node.req.url,
308+
reqOrigUrl: event.node.req.originalUrl,
309+
error,
310+
}
242311
// throw createError({
243312
// statusCode: 502,
244313
// message: 'Failed to proxy image.',

0 commit comments

Comments
 (0)