aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--server/tests/cli/peertube.ts12
-rw-r--r--server/tools/peertube-auth.ts14
2 files changed, 26 insertions, 0 deletions
diff --git a/server/tests/cli/peertube.ts b/server/tests/cli/peertube.ts
index 348438533..fcf7e2e2e 100644
--- a/server/tests/cli/peertube.ts
+++ b/server/tests/cli/peertube.ts
@@ -66,6 +66,18 @@ describe('Test CLI wrapper', function () {
66 await execCLI(`${env} ${cmd} auth add -u ${server.url} -U user_1 -p super_password`) 66 await execCLI(`${env} ${cmd} auth add -u ${server.url} -U user_1 -p super_password`)
67 }) 67 })
68 68
69 it('Should not fail to add a user if there is a slash at the end of the instance URL', async function () {
70 this.timeout(60000)
71
72 const env = getEnvCli(server)
73 let fullServerURL
74 fullServerURL = server.url + '/'
75 await execCLI(`${env} ${cmd} auth add -u ${fullServerURL} -U user_1 -p super_password`)
76
77 fullServerURL = server.url + '/asdfasdf'
78 await execCLI(`${env} ${cmd} auth add -u ${fullServerURL} -U user_1 -p super_password`)
79 })
80
69 it('Should default to this user', async function () { 81 it('Should default to this user', async function () {
70 this.timeout(60000) 82 this.timeout(60000)
71 83
diff --git a/server/tools/peertube-auth.ts b/server/tools/peertube-auth.ts
index 1a4fae4ce..6a0b89fe2 100644
--- a/server/tools/peertube-auth.ts
+++ b/server/tools/peertube-auth.ts
@@ -46,6 +46,15 @@ function isURLaPeerTubeInstance (url: string) {
46 return url.startsWith('http://') || url.startsWith('https://') 46 return url.startsWith('http://') || url.startsWith('https://')
47} 47}
48 48
49function stripExtraneousFromPeerTubeUrl (url: string) {
50 // Get everything before the 3rd /.
51 const urlLength = url.includes('/', 8)
52 ? url.indexOf('/', 8)
53 : url.length
54
55 return url.substr(0, urlLength)
56}
57
49program 58program
50 .name('auth') 59 .name('auth')
51 .usage('[command] [options]') 60 .usage('[command] [options]')
@@ -80,8 +89,13 @@ program
80 } 89 }
81 } 90 }
82 }, async (_, result) => { 91 }, async (_, result) => {
92
83 // Check credentials 93 // Check credentials
84 try { 94 try {
95 // Strip out everything after the domain:port.
96 // @see https://github.com/Chocobozzz/PeerTube/issues/3520
97 result.url = stripExtraneousFromPeerTubeUrl(result.url)
98
85 await getAccessToken(result.url, result.username, result.password) 99 await getAccessToken(result.url, result.username, result.password)
86 } catch (err) { 100 } catch (err) {
87 console.error(err.message) 101 console.error(err.message)