From 871e8dc3cf7918095ad04ec7c04ec88911fbf65e Mon Sep 17 00:00:00 2001 From: fyears <1142836+fyears@users.noreply.github.com> Date: Sat, 27 Jul 2024 14:41:37 +0800 Subject: [PATCH] encode username --- src/fsWebdav.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/fsWebdav.ts b/src/fsWebdav.ts index 1cfd8e0..f493523 100644 --- a/src/fsWebdav.ts +++ b/src/fsWebdav.ts @@ -209,6 +209,13 @@ const tryEncodeURI = (x: string) => { return encodeURI(x); }; +const tryEncodeUsernamePassword = (x: string) => { + if (onlyAscii(x)) { + return x; + } + return unescape(encodeURIComponent(x)); +}; + const parseCustomHeaders = (x: string): Record => { const y = x.trim(); if (y === "") { @@ -281,15 +288,17 @@ export class FakeFsWebdav extends FakeFs { this.webdavConfig.username !== "" && this.webdavConfig.password !== "" ) { + console.debug("hey!"); this.client = createClient(this.webdavConfig.address, { - username: this.webdavConfig.username, - password: this.webdavConfig.password, + username: tryEncodeUsernamePassword(this.webdavConfig.username), + password: tryEncodeUsernamePassword(this.webdavConfig.password), headers: headers, authType: this.webdavConfig.authType === "digest" ? AuthType.Digest : AuthType.Password, }); + console.debug("fuck!"); } else { console.info("no password"); this.client = createClient(this.webdavConfig.address, { @@ -678,8 +687,8 @@ export class FakeFsWebdav extends FakeFs { console.debug(`tmpFolderName=${tmpFolderName}`); const clientForUpload = createClient(uploadServerAddress, { - username: this.webdavConfig.username, - password: this.webdavConfig.password, + username: tryEncodeUsernamePassword(this.webdavConfig.username), + password: tryEncodeUsernamePassword(this.webdavConfig.password), headers: { "Cache-Control": "no-cache", },