mirror of https://github.com/Chocobozzz/PeerTube
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import * as express from 'express'
|
|
import { UserRight } from '../../../../shared/models/users'
|
|
import { asyncMiddleware, authenticate, ensureUserHasRight } from '../../../middlewares'
|
|
import { updateServerRedundancyValidator } from '../../../middlewares/validators/redundancy'
|
|
import { ServerModel } from '../../../models/server/server'
|
|
import { removeRedundancyOf } from '../../../lib/redundancy'
|
|
import { logger } from '../../../helpers/logger'
|
|
|
|
const serverRedundancyRouter = express.Router()
|
|
|
|
serverRedundancyRouter.put('/redundancy/:host',
|
|
authenticate,
|
|
ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW),
|
|
asyncMiddleware(updateServerRedundancyValidator),
|
|
asyncMiddleware(updateRedundancy)
|
|
)
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
export {
|
|
serverRedundancyRouter
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
async function updateRedundancy (req: express.Request, res: express.Response, next: express.NextFunction) {
|
|
const server = res.locals.server as ServerModel
|
|
|
|
server.redundancyAllowed = req.body.redundancyAllowed
|
|
|
|
await server.save()
|
|
|
|
// Async, could be long
|
|
removeRedundancyOf(server.id)
|
|
.catch(err => logger.error('Cannot remove redundancy of %s.', server.host, err))
|
|
|
|
return res.sendStatus(204)
|
|
}
|