import type { Router , Request , Response , NextFunction } from 'express' ; import { diag } from '../diagnostic' ; import { getBaseStaticRoute , isUserAdmin } from '../helpers' ; import { asyncMiddleware } from '../middlewares/async' ; async function initSettingsRouter ( options ) { const { peertubeHelpers , getRouter } = options ; const router = getRouter ( ) ; const logger = peertubeHelpers . logger ; router . get ( '/diagnostic' , asyncMiddleware ( async ( req , res , _next ) => { logger . info ( 'Accessing peertube-plugin-livechat diagnostic tool.' ) ; const src = getBaseStaticRoute ( options ) + 'settings/settings.js' ; res . status ( 200 ) ; res . type ( 'html' ) ; res . send ( '<html><body><div>Loading...</div></body><script src="' + src + '"></script></html>' ) ; } ) ) ; router . post ( '/diagnostic/test' , asyncMiddleware ( async ( req , res , _next ) => { if ( ! res . locals . authenticated ) { res . sendStatus ( 403 ) ; return ; } if ( ! await isUserAdmin ( options , res ) ) { res . sendStatus ( 403 ) ; return ; } const test = req . body . test || '' ; logger . info ( 'Accessing peertube-plugin-livechat diagnostic tool, test "' + test + '".' ) ; const result = await diag ( test , options ) ; res . status ( 200 ) ; res . json ( result ) ; } ) ) ; return router ; } export { initSettingsRouter } ;