X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftools%2Fpeertube-auth.ts;h=1a4fae4ced0cd0ace9b003efc169843399500d2c;hb=30664eb856ac38b26f8cf7b07bdf9fde3f78f037;hp=ff5ffb60e90a36a56009df2359df7d0c2c52bec0;hpb=1a12f66d631d28a5a58ebbcd274426f2e6e5d203;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tools/peertube-auth.ts b/server/tools/peertube-auth.ts index ff5ffb60e..1a4fae4ce 100644 --- a/server/tools/peertube-auth.ts +++ b/server/tools/peertube-auth.ts @@ -1,10 +1,14 @@ +// eslint-disable @typescript-eslint/no-unnecessary-type-assertion + +import { registerTSPaths } from '../helpers/register-ts-paths' +registerTSPaths() + import * as program from 'commander' import * as prompt from 'prompt' -import { getSettings, writeSettings, getNetrc } from './cli' -import { isHostValid } from '../helpers/custom-validators/servers' +import { getNetrc, getSettings, writeSettings } from './cli' import { isUserUsernameValid } from '../helpers/custom-validators/users' - -const Table = require('cli-table') +import { getAccessToken } from '../../shared/extra-utils' +import * as CliTable3 from 'cli-table3' async function delInstance (url: string) { const [ settings, netrc ] = await Promise.all([ getSettings(), getNetrc() ]) @@ -24,7 +28,7 @@ async function delInstance (url: string) { async function setInstance (url: string, username: string, password: string, isDefault: boolean) { const [ settings, netrc ] = await Promise.all([ getSettings(), getNetrc() ]) - if (settings.remotes.indexOf(url) === -1) { + if (settings.remotes.includes(url) === false) { settings.remotes.push(url) } @@ -39,7 +43,7 @@ async function setInstance (url: string, username: string, password: string, isD } function isURLaPeerTubeInstance (url: string) { - return isHostValid(url) || (url.includes('localhost')) + return url.startsWith('http://') || url.startsWith('https://') } program @@ -61,6 +65,7 @@ program url: { description: 'instance url', conform: (value) => isURLaPeerTubeInstance(value), + message: 'It should be an URL (https://peertube.example.com)', required: true }, username: { @@ -75,6 +80,14 @@ program } } }, async (_, result) => { + // Check credentials + try { + await getAccessToken(result.url, result.username, result.password) + } catch (err) { + console.error(err.message) + process.exit(-1) + } + await setInstance(result.url, result.username, result.password, program['default']) process.exit(0) @@ -96,10 +109,10 @@ program .action(async () => { const [ settings, netrc ] = await Promise.all([ getSettings(), getNetrc() ]) - const table = new Table({ - head: ['instance', 'login'], - colWidths: [30, 30] - }) + const table = new CliTable3({ + head: [ 'instance', 'login' ], + colWidths: [ 30, 30 ] + }) as any settings.remotes.forEach(element => { if (!netrc.machines[element]) return @@ -120,7 +133,7 @@ program .description('set an existing entry as default') .action(async url => { const settings = await getSettings() - const instanceExists = settings.remotes.indexOf(url) !== -1 + const instanceExists = settings.remotes.includes(url) if (instanceExists) { settings.default = settings.remotes.indexOf(url) @@ -136,10 +149,10 @@ program program.on('--help', function () { console.log(' Examples:') console.log() - console.log(' $ peertube add -u peertube.cpy.re -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD"') - console.log(' $ peertube add -u peertube.cpy.re -U root') - console.log(' $ peertube list') - console.log(' $ peertube del peertube.cpy.re') + console.log(' $ peertube auth add -u https://peertube.cpy.re -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD"') + console.log(' $ peertube auth add -u https://peertube.cpy.re -U root') + console.log(' $ peertube auth list') + console.log(' $ peertube auth del https://peertube.cpy.re') console.log() })