2021-04-08 02:43:13 +02:00
|
|
|
import { initSettings } from './lib/settings'
|
2021-04-09 19:29:44 +02:00
|
|
|
import { initRouters } from './lib/routers/index'
|
2021-04-13 17:13:41 +02:00
|
|
|
import { ensureProsodyRunning, ensureProsodyNotRunning } from './lib/prosody/ctl'
|
2021-04-09 11:22:46 +02:00
|
|
|
import decache from 'decache'
|
2021-04-08 03:47:55 +02:00
|
|
|
|
2021-04-13 17:13:41 +02:00
|
|
|
// FIXME: in Peertube <= 3.1.0, unregister don't have any parameter.
|
|
|
|
// Using this global variable to fix this.
|
|
|
|
let OPTIONS: RegisterServerOptions | undefined
|
2021-04-07 16:52:38 +02:00
|
|
|
|
2021-04-09 19:39:40 +02:00
|
|
|
async function register (options: RegisterServerOptions): Promise<any> {
|
2021-04-13 17:13:41 +02:00
|
|
|
OPTIONS = options
|
2021-04-08 03:47:55 +02:00
|
|
|
|
2021-04-09 19:39:40 +02:00
|
|
|
await initSettings(options)
|
|
|
|
await initRouters(options)
|
2021-04-13 17:13:41 +02:00
|
|
|
|
|
|
|
await ensureProsodyRunning(options)
|
2019-07-16 16:39:36 +02:00
|
|
|
}
|
|
|
|
|
2021-04-07 17:20:28 +02:00
|
|
|
async function unregister (): Promise<any> {
|
2021-04-13 17:13:41 +02:00
|
|
|
if (OPTIONS) {
|
|
|
|
try {
|
|
|
|
await ensureProsodyNotRunning(OPTIONS)
|
|
|
|
} catch (error) {
|
|
|
|
OPTIONS.peertubeHelpers.logger.error('Error when trying to unload Prosody: ' + (error as string))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-08 03:47:55 +02:00
|
|
|
const module = __filename
|
2021-04-13 17:13:41 +02:00
|
|
|
OPTIONS?.peertubeHelpers.logger.info(`Unloading module ${module}...`)
|
2021-04-09 10:54:51 +02:00
|
|
|
// In peertube <= 3.1.0 sub modules are not removed from require.cache
|
2021-04-08 03:47:55 +02:00
|
|
|
decache(module)
|
2021-04-13 17:13:41 +02:00
|
|
|
OPTIONS?.peertubeHelpers.logger.info(`Successfully unloaded the module ${module}`)
|
|
|
|
OPTIONS = undefined
|
2019-07-16 16:39:36 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
register,
|
|
|
|
unregister
|
|
|
|
}
|