RocketChat / RocketChat/Rocket.Chat
webdav upload failed
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 46.1k
- Forks
- 13.9k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 130
Description
Description:
Steps to reproduce:
Set the file upload to webdav, and the webdav account password is completely correct. But the upload failed
Expected behavior:
success
Actual behavior:
Error: Request failed with status code 404 [ufs: cannot upload file]
Server Setup Information:
- Version of Rocket.Chat Server: 4.6.2
- Operating System: ubuntu 22.04
- Deployment Method: snap
- Number of Running Instances: 1
- DB Replicaset Oplog:
- NodeJS Version: 14.21
- MongoDB Version:4.2.2
Client Setup Information
- Desktop App or Browser Version:web
- Operating System:win10
Additional context
Relevant logs:
{
"level": 35,
"time": "2022-12-03T02:21:24.669Z",
"pid": 5039,
"hostname": "instance-20220809-2252",
"name": "API",
"method": "POST",
"url": "/api/v1/rooms.upload/GENERAL",
"userId": "WB2XXXXXXXX",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62",
"length": "1271474",
"host": "lsp.XXXX",
"referer": "https://lsp.xxxxxxxxxx",
"remoteIP": "172.XXXXX",
"err": {
"type": "errorClass",
"message": "Error: Request failed with status code 404 [ufs: cannot upload file]",
"stack": "Error: Error: Request failed with status code 404 [ufs: cannot upload file]
at MethodInvocation.ufsComplete (packages/jalik:ufs/ufs-methods.js:122:11)
at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1885:12)
at packages/ddp-server/livedata_server.js:1803:15
at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1257:12)
at packages/ddp-server/livedata_server.js:1801:36
at new Promise ()
at Server.applyAsync (packages/ddp-server/livedata_server.js:1800:12)
at Server.apply (packages/ddp-server/livedata_server.js:1739:26)
at Server.call (packages/ddp-server/livedata_server.js:1721:17)
at FileUploadClass._doInsert (app/file-upload/server/lib/FileUpload.js:683:24)
at FileUploadClass.insert (app/file-upload/server/lib/FileUpload.js:710:15)
at FileUploadClass.insertSync (packages/meteor.js:311:21)
at Object.post (app/api/server/v1/rooms.js:112:35)
at app/api/server/api.js:431:96
at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1257:12)
at Object._internalRouteActionHandler [as action] (app/api/server/api.js:431:39)
at Route._callEndpoint (packages/rocketchat_restivus/lib/route.coffee:150:32)
at packages/rocketchat_restivus/lib/route.coffee:59:33
at packages/simple_json-routes.js💯9
=> awaited here:
at Promise.await (/snap/rocketchat-server/1519/programs/server/npm/node_modules/meteor/promise/node_modules/meteor-promise/promise_server.js:60:12)
at Server.apply (packages/ddp-server/livedata_server.js:1752:22)
at Server.call (packages/ddp-server/livedata_server.js:1721:17)
at FileUploadClass._doInsert (app/file-upload/server/lib/FileUpload.js:683:24)
at FileUploadClass.insert (app/file-upload/server/lib/FileUpload.js:710:15)
at FileUploadClass.insertSync (packages/meteor.js:311:21)
at Object.post (app/api/server/v1/rooms.js:112:35)
at app/api/server/api.js:431:96
at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1257:12)
at Object._internalRouteActionHandler [as action] (app/api/server/api.js:431:39)
at Route._callEndpoint (packages/rocketchat_restivus/lib/route.coffee:150:32)
at packages/rocketchat_restivus/lib/route.coffee:59:33
at packages/simple_json-routes.js💯9",
"isClientSafe": true,
"error": "ufs: cannot upload file",
"reason": {
"message": "Request failed with status code 404",
"stack": "Error: Request failed with status code 404
at createError (/snap/rocketchat-server/1519/programs/server/npm/node_modules/webdav/node_modules/axios/lib/core/createError.js:16:15)
at settle (/snap/rocketchat-server/1519/programs/server/npm/node_modules/webdav/node_modules/axios/lib/core/settle.js:17:12)
at RedirectableRequest.handleResponse (/snap/rocketchat-server/1519/programs/server/npm/node_modules/webdav/node_modules/axios/lib/adapters/http.js:210:9)
at RedirectableRequest.emit (events.js:400:28)
at RedirectableRequest.emit (domain.js:475:12)
at RedirectableRequest._processResponse (/snap/rocketchat-server/1519/programs/server/npm/node_modules/follow-redirects/index.js:269:10)
at ClientRequest.RedirectableRequest._onNativeResponse (/snap/rocketchat-server/1519/programs/server/npm/node_modules/follow-redirects/index.js:50:10)
at Object.onceWrapper (events.js:520:26)
at ClientRequest.emit (events.js:400:28)
at ClientRequest.emit (domain.js:475:12)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:647:27)
at HTTPParser.parserOnHeadersComplete (_http_common.js:127:17)
at TLSSocket.socketOnData (_http_client.js:515:22)
at TLSSocket.emit (events.js:400:28)
at TLSSocket.emit (domain.js:475:12)
at addChunk (internal/streams/readable.js:293:12)
at readableAddChunk (internal/streams/readable.js:267:9)
at TLSSocket.Readable.push (internal/streams/readable.js:206:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:188:23)
at TLSWrap.callbackTrampoline (internal/async_hooks.js:130:17)",
"config": {
"url": "https://pan.XXXXXXXXXXXXXXXX",
"method": "get",
"headers": {
"Accept": "application/json, text/plain, /",
"Authorization": "Basic YWRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"User-Agent": "axios/0.19.2"
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"responseType": "stream",
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1
}
},
"errorType": "Meteor.Error"
},
"status": 400,
"responseTime": 1047,
"msg": "Error: Request failed with status code 404 [ufs: cannot upload file]"
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at app/file-upload/server/lib/FileUpload.js and packages/jalik:ufs/ufs-methods.js, following the rooms.upload path shown in the stack trace. Reproduce a WebDAV upload against the reported setup and trace the 404 response from the configured endpoint. Done means the upload succeeds and the failure is covered by a reliable verification or regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- node.js
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100