sergix44 / XBackBone

A lightweight file manager with full ShareX support and more
https://xbackbone.app
GNU Affero General Public License v3.0
993 stars 81 forks source link

Cannot view s3 uploads /raw, thumbnails fine and local storage fine #543

Open JustaPeriod opened 1 year ago

JustaPeriod commented 1 year ago

System Info

Describe the bug Files uploaded to s3 buckets are not viewable raw. The files upload just fine, and are viewable and downloadable from the bucket or via a different tool, but do not load on xbackbone with /raw. In fact, it seems there is literally no header received when viewing files /raw. I get a completely blank page with no information to inspect in my browser.

Thumbnails display fine though. If I add ?width=500 or similar after /raw the images load fine. And local storage works absolutely fine, files display correctly.

I cannot download other files such as zips or videos. Any file you try to download saves as an empty file with 0 bytes downloaded. Seems identical to what someone else faced in #311

I have tried three different S3 compatible buckets with the exact same results: IDrive E2, Fybe, and Wasabi.

To Reproduce Upload file via website or sharex and visit page.

Expected behavior The files appear neither on the normal link or the /raw link. If I take the raw link and add ?width=1000 to the end or similar, it then displays fine.

Screenshots You can see the image upload is broken here: image But the thumbnail works just fine here: image

Logs XBackBone Log viewing images (no error, but no image loads):

[2023-07-31 13:50:04] app.INFO: User period uploaded new media. ["21"] []
[2023-07-31 14:19:25] app.INFO: User period uploaded new media. ["22"] []

Here's the XBackBone Log after trying to watch a video (url replaced). Probably because it's trying to load an empty stream?

[2023-07-31 15:02:51] app.ERROR: Slim Application Error
Type: RuntimeException
Code: 0
Message: Could not seek in stream.
File: /var/www/example.com/html/vendor/slim/psr7/src/Stream.php
Line: 311
Trace: #0 /var/www/example.com/html/app/Controllers/MediaController.php(498): Slim\Psr7\Stream->seek()
#1 /var/www/example.com/html/app/Controllers/MediaController.php(411): App\Controllers\MediaController->handlePartialRequest()
#2 /var/www/example.com/html/app/Controllers/MediaController.php(163): App\Controllers\MediaController->streamMedia()
#3 [internal function]: App\Controllers\MediaController->getRaw()
#4 /var/www/example.com/html/vendor/php-di/invoker/src/Invoker.php(74): call_user_func_array()
#5 /var/www/example.com/html/vendor/php-di/slim-bridge/src/ControllerInvoker.php(47): Invoker\Invoker->call()
#6 /var/www/example.com/html/vendor/slim/slim/Slim/Routing/Route.php(384): DI\Bridge\Slim\ControllerInvoker->__invoke()
#7 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): Slim\Routing\Route->handle()
#8 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): Slim\MiddlewareDispatcher->handle()
#9 /var/www/example.com/html/vendor/slim/slim/Slim/Routing/Route.php(341): Slim\MiddlewareDispatcher->handle()
#10 /var/www/example.com/html/vendor/slim/slim/Slim/Routing/RouteRunner.php(84): Slim\Routing\Route->run()
#11 /var/www/example.com/html/app/Middleware/InjectMiddleware.php(21): Slim\Routing\RouteRunner->handle()
#12 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(209): App\Middleware\InjectMiddleware->__invoke()
#13 /var/www/example.com/html/app/Middleware/LangMiddleware.php(25): Psr\Http\Server\RequestHandlerInterface@anonymous->handle()
#14 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(209): App\Middleware\LangMiddleware->__invoke()
#15 /var/www/example.com/html/app/Middleware/RememberMiddleware.php(39): Psr\Http\Server\RequestHandlerInterface@anonymous->handle()
#16 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(209): App\Middleware\RememberMiddleware->__invoke()
#17 /var/www/example.com/html/bootstrap/app.php(105): Psr\Http\Server\RequestHandlerInterface@anonymous->handle()
#18 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(313): Closure->{closure}()
#19 /var/www/example.com/html/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(59): Psr\Http\Server\RequestHandlerInterface@anonymous->handle()
#20 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(147): Slim\Middleware\RoutingMiddleware->process()
#21 /var/www/example.com/html/vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(107): Psr\Http\Server\RequestHandlerInterface@anonymous->handle()
#22 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(147): Slim\Middleware\ErrorMiddleware->process()
#23 /var/www/example.com/html/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): Psr\Http\Server\RequestHandlerInterface@anonymous->handle()
#24 /var/www/example.com/html/vendor/slim/slim/Slim/App.php(215): Slim\MiddlewareDispatcher->handle()
#25 /var/www/example.com/html/vendor/slim/slim/Slim/App.php(199): Slim\App->handle()
#26 /var/www/example.com/html/index.php(11): Slim\App->run()
#27 {main} [] []

No apache error log.

Apache Access Log for the image:

IP - - [31/Jul/2023:14:36:27 +0000] "HEAD /xahO4/zERUJOfO85.png HTTP/1.1" 200 639 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 OPR/100.0.0.0"
IP - - [31/Jul/2023:14:36:27 +0000] "GET /xahO4/zERUJOfO85.png HTTP/1.1" 200 12561 "https://example.com/home" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 OPR/100.0.0.0"
IP - - [31/Jul/2023:14:36:27 +0000] "GET /xahO4/zERUJOfO85.png HTTP/1.1" 200 8286 "https://example.com/home" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 OPR/100.0.0.0"
IP - - [31/Jul/2023:14:36:28 +0000] "GET /xahO4/zERUJOfO85.png/raw HTTP/1.1" 200 74355 "https://example.com/xahO4/zERUJOfO85.png" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 OPR/100.0.0.0"
JustaPeriod commented 1 year ago

I found that trying to view it in firefox actually gave me something at least, unlike chrome.

<html><head><meta name="viewport" content="width=device-width; height=device-height;"><link rel="stylesheet" href="resource://content-accessible/ImageDocument.css"><link rel="stylesheet" href="resource://content-accessible/TopLevelImageDocument.css"><title>raw ( Image)</title></head><body><img src="https://example.com/xahO4/zERUJOfO85.png/raw" alt="The image “https://example.com/xahO4/zERUJOfO85.png/raw” cannot be displayed because it contains errors."></body></html>

If I add ?width=500 so it actually loads, here's what I get:

<html><head><meta name="viewport" content="width=device-width; height=device-height;"><link rel="stylesheet" href="resource://content-accessible/ImageDocument.css"><link rel="stylesheet" href="resource://content-accessible/TopLevelImageDocument.css"><title>scaled-2023-07-31_09-19-23.png (PNG Image, 500&nbsp;×&nbsp;217 pixels)</title></head><body><img src="https://example.com/xahO4/zERUJOfO85.png/raw?width=500" alt="https://example.com/xahO4/zERUJOfO85.png/raw?width=500" class="transparent"></body></html>
kymppi commented 1 year ago

I'm experiencing the same problem with S3 and SQLite. Kinda weird, but I don't get any errors in the logs.

kymppi commented 1 year ago

Actually. When reading the nginx logs I saw something:

2023/09/16 16:51:10 [error] 267#267: *1 upstream sent invalid "Content-Length" header: "Content-Length: " while reading response header from upstream, client: 10.42.0.11, server: _, request: "GET /HAbU8/cUxAFelu41.png/raw HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "<domain>", referrer: "https://<domain>/HAbU8/cUxAFelu41.png"
2023/09/16 16:51:24 [error] 267#267: *1 upstream sent invalid "Content-Length" header: "Content-Length: " while reading response header from upstream, client: 10.42.0.11, server: _, request: "GET /HAbU8/cUxAFelu41.png/raw HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "<domain>", referrer: "https://<domain>/HAbU8/cUxAFelu41.png"
2023/09/16 16:52:54 [error] 270#270: *10 upstream sent invalid "Content-Length" header: "Content-Length: " while reading response header from upstream, client: 10.42.0.11, server: _, request: "GET /HAbU8/cUxAFelu41.png/raw HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "<domain>", referrer: "https://<domain>/HAbU8/cUxAFelu41.png"
WhyAydan commented 7 months ago

Having the same issue, is there any update on this?

TonyRL commented 4 months ago

Duplicate of #536

DiegoRodriguezT commented 3 months ago

has anyone been able to fix this?