X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fextra-utils%2Fserver%2Fserver.ts;h=9da2938772fdb904f7a6d37fe4c6778ae55d2c37;hb=f307255e694d290c346749bff68545d5dfc581cf;hp=bc5e1cd5fa12edb34424bba508f61927b1631f5d;hpb=0305db28c98fd6cf43a3c50ba92c76215e99d512;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/extra-utils/server/server.ts b/shared/extra-utils/server/server.ts index bc5e1cd5f..9da293877 100644 --- a/shared/extra-utils/server/server.ts +++ b/shared/extra-utils/server/server.ts @@ -56,6 +56,7 @@ export class PeerTubeServer { port?: number rtmpPort?: number + rtmpsPort?: number parallel?: boolean internalServerNumber: number @@ -154,6 +155,7 @@ export class PeerTubeServer { this.internalServerNumber = this.parallel ? this.randomServer() : this.serverNumber this.rtmpPort = this.parallel ? this.randomRTMP() : 1936 + this.rtmpsPort = this.parallel ? this.randomRTMP() : 1937 this.port = 9000 + this.internalServerNumber this.url = `http://localhost:${this.port}` @@ -218,22 +220,32 @@ export class PeerTubeServer { return new Promise((res, rej) => { const self = this + let aggregatedLogs = '' this.app = fork(join(root(), 'dist', 'server.js'), options.peertubeArgs || [], forkOptions) - const onExit = function () { - return rej(new Error('Process exited')) + const onPeerTubeExit = () => rej(new Error('Process exited:\n' + aggregatedLogs)) + const onParentExit = () => { + if (!this.app || !this.app.pid) return + + try { + process.kill(self.app.pid) + } catch { /* empty */ } } - this.app.on('exit', onExit) + this.app.on('exit', onPeerTubeExit) + process.on('exit', onParentExit) this.app.stdout.on('data', function onStdout (data) { let dontContinue = false + const log: string = data.toString() + aggregatedLogs += log + // Capture things if we want to for (const key of Object.keys(regexps)) { const regexp = regexps[key] - const matches = data.toString().match(regexp) + const matches = log.match(regexp) if (matches !== null) { if (key === 'client_id') self.store.client.id = matches[1] else if (key === 'client_secret') self.store.client.secret = matches[1] @@ -244,7 +256,7 @@ export class PeerTubeServer { // Check if all required sentences are here for (const key of Object.keys(serverRunString)) { - if (data.toString().indexOf(key) !== -1) serverRunString[key] = true + if (log.includes(key)) serverRunString[key] = true if (serverRunString[key] === false) dontContinue = true } @@ -252,18 +264,13 @@ export class PeerTubeServer { if (dontContinue === true) return if (options.hideLogs === false) { - console.log(data.toString()) + console.log(log) } else { + process.removeListener('exit', onParentExit) self.app.stdout.removeListener('data', onStdout) - self.app.removeListener('exit', onExit) + self.app.removeListener('exit', onPeerTubeExit) } - process.on('exit', () => { - try { - process.kill(self.app.pid) - } catch { /* empty */ } - }) - res() }) }) @@ -319,6 +326,7 @@ export class PeerTubeServer { }, storage: { tmp: `test${this.internalServerNumber}/tmp/`, + bin: `test${this.internalServerNumber}/bin/`, avatars: `test${this.internalServerNumber}/avatars/`, videos: `test${this.internalServerNumber}/videos/`, streaming_playlists: `test${this.internalServerNumber}/streaming-playlists/`,