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

View File

@ -47,7 +47,7 @@ function stripExtraneousFromPeerTubeUrl (url: string) {
? url.indexOf('/', 8) ? url.indexOf('/', 8)
: url.length : url.length
return url.substr(0, urlLength) return url.substring(0, urlLength)
} }
program program
@ -89,7 +89,7 @@ program
// Check credentials // Check credentials
try { try {
// Strip out everything after the domain:port. // 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) result.url = stripExtraneousFromPeerTubeUrl(result.url)
const server = buildServer(result.url) const server = buildServer(result.url)