Fix peertube tools auth

pull/4736/head
Chocobozzz 2022-01-20 09:33:49 +01:00
parent d511df2890
commit 4abc7b053a
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 34 additions and 25 deletions

View File

@ -153,7 +153,7 @@ function isProdInstance () {
}
function getAppNumber () {
return process.env.NODE_APP_INSTANCE
return process.env.NODE_APP_INSTANCE || ''
}
// ---------------------------------------------------------------------------

View File

@ -73,14 +73,13 @@ function getRemoteObjectOrDie (
): { url: string, username: string, password: string } {
const options = program.opts()
const manualOptionMode = options.url || options.username || options.password
// Check parameters validity
if (manualOptionMode || settings.remotes.length === 0 || Object.keys(netrc.machines).length === 0) {
function exitIfNoOptions (options: string[], errorPrefix: string = '') {
let exit = false
for (const key of [ 'url', 'username', 'password' ]) {
for (const key of options) {
if (!options[key]) {
if (exit === false && errorPrefix) console.error(errorPrefix)
console.error(`--${key} field is required`)
exit = true
}
@ -89,26 +88,36 @@ function getRemoteObjectOrDie (
if (exit) process.exit(-1)
}
if (!manualOptionMode) {
let url: string = options.url
let username: string = options.username
let password: string = options.password
if (!url && settings.default !== -1) url = settings.remotes[settings.default]
const machine = netrc.machines[url]
if (!username && machine) username = machine.login
if (!password && machine) password = machine.password
return { url, username, password }
// If username or password are specified, both are mandatory
if (options.username || options.password) {
exitIfNoOptions([ 'username', 'password' ])
}
return {
url: options.url,
username: options.username,
password: options.password
// If no available machines, url, username and password args are mandatory
if (Object.keys(netrc.machines).length === 0) {
exitIfNoOptions([ 'url', 'username', 'password' ], 'No account found in netrc')
}
if (settings.remotes.length === 0 || settings.default === -1) {
exitIfNoOptions([ 'url' ], 'No default instance found')
}
let url: string = options.url
let username: string = options.username
let password: string = options.password
if (!url && settings.default !== -1) url = settings.remotes[settings.default]
const machine = netrc.machines[url]
if ((!username || !password) && !machine) {
console.error('Cannot find existing configuration for %s.', url)
process.exit(-1)
}
if (!username && machine) username = machine.login
if (!password && machine) password = machine.password
return { url, username, password }
}
function buildCommonVideoOptions (command: Command) {

View File

@ -47,7 +47,7 @@ function stripExtraneousFromPeerTubeUrl (url: string) {
? url.indexOf('/', 8)
: url.length
return url.substr(0, urlLength)
return url.substring(0, urlLength)
}
program
@ -89,7 +89,7 @@ program
// Check credentials
try {
// Strip out everything after the domain:port.
// @see https://github.com/Chocobozzz/PeerTube/issues/3520
// See https://github.com/Chocobozzz/PeerTube/issues/3520
result.url = stripExtraneousFromPeerTubeUrl(result.url)
const server = buildServer(result.url)