New debug mode:

Debug mode is no more triggered by the NODE_ENV value, but by testing
the existance of a file in the plugin data directory.
This commit is contained in:
John Livingston
2023-04-13 15:41:46 +02:00
committed by John Livingston
parent f8b83defb5
commit b4dabfeeb9
11 changed files with 82 additions and 5 deletions

19
server/lib/debug.ts Normal file
View File

@ -0,0 +1,19 @@
import type { RegisterServerOptions } from '@peertube/peertube-types'
import * as path from 'path'
import * as fs from 'fs'
export function isDebugMode (options: RegisterServerOptions): boolean {
const peertubeHelpers = options.peertubeHelpers
const logger = peertubeHelpers.logger
if (!peertubeHelpers.plugin) {
return false
}
const filepath = path.resolve(peertubeHelpers.plugin.getDataDirectoryPath(), 'debug_mode')
logger.debug('Testing debug mode by testing if file exists: ' + filepath)
if (fs.existsSync(filepath)) {
logger.info('Plugin livechat Debug mode is on.')
return true
}
return false
}

View File

@ -5,6 +5,6 @@ export async function diagBackend (test: string, _options: RegisterServerOptions
const result = newResult(test)
result.label = 'Backend connection'
result.ok = true
result.next = 'webchat-video'
result.next = 'debug'
return result
}

View File

@ -0,0 +1,12 @@
import type { RegisterServerOptions } from '@peertube/peertube-types'
import { newResult, TestResult } from './utils'
import { isDebugMode } from '../../lib/debug'
export async function diagDebug (test: string, options: RegisterServerOptions): Promise<TestResult> {
const result = newResult(test)
result.label = 'Test debug mode'
result.ok = true
result.messages = [isDebugMode(options) ? 'Debug mode is ON' : 'Debug mode is OFF']
result.next = 'webchat-video'
return result
}

View File

@ -1,6 +1,7 @@
import type { RegisterServerOptions } from '@peertube/peertube-types'
import { diagBackend } from './backend'
import { TestResult, newResult } from './utils'
import { diagDebug } from './debug'
import { diagProsody } from './prosody'
import { diagVideo } from './video'
@ -9,6 +10,8 @@ export async function diag (test: string, options: RegisterServerOptions): Promi
if (test === 'backend') {
result = await diagBackend(test, options)
} else if (test === 'debug') {
result = await diagDebug(test, options)
} else if (test === 'webchat-video') {
result = await diagVideo(test, options)
} else if (test === 'prosody') {

View File

@ -1,4 +1,4 @@
type nextValue = 'backend' | 'webchat-video' | 'prosody'
type nextValue = 'backend' | 'debug' | 'webchat-video' | 'prosody'
interface MessageWithLevel {
level: 'info' | 'warning' | 'error'

View File

@ -347,7 +347,7 @@ async function ensureProsodyRunning (options: RegisterServerOptions): Promise<vo
return
}
logger.info('Prosody is running')
startProsodyLogRotate(options, filePaths, reloadProsody)
await startProsodyLogRotate(options, filePaths, reloadProsody)
}
async function ensureProsodyNotRunning (options: RegisterServerOptions): Promise<void> {

View File

@ -1,5 +1,6 @@
import type { RegisterServerOptions } from '@peertube/peertube-types'
import type { ProsodyFilePaths } from './config/paths'
import { isDebugMode } from '../debug'
type Rotate = (file: string, options: {
count?: number
@ -32,8 +33,9 @@ async function _rotate (options: RegisterServerOptions, path: string): Promise<v
function startProsodyLogRotate (options: RegisterServerOptions, paths: ProsodyFilePaths, reload: ReloadProsody): void {
const logger = options.peertubeHelpers.logger
const checkInterval = process.env.NODE_ENV === 'test' ? 60 * 1000 : 60 * 60 * 1000 // check every hour
const rotateEvery = process.env.NODE_ENV === 'test' ? 2 * 60 * 1000 : 24 * 60 * 60 * 1000 // rotate every 24hour
const debugMode = isDebugMode(options)
const checkInterval = debugMode ? 60 * 1000 : 60 * 60 * 1000 // check every hour
const rotateEvery = debugMode ? 2 * 60 * 1000 : 24 * 60 * 60 * 1000 // rotate every 24hour
// TODO: also rotate when file is too big
if (logRotate) {