mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-30 12:19:13 -04:00
Add button in admin backend to cleanup revisions of a specific pad
This commit is contained in:
parent
491d4af19e
commit
593d1021b6
6 changed files with 64 additions and 4 deletions
|
@ -13,6 +13,7 @@ const settings = require('../../utils/Settings');
|
|||
const UpdateCheck = require('../../utils/UpdateCheck');
|
||||
const padManager = require('../../db/PadManager');
|
||||
const api = require('../../db/API');
|
||||
const cleanup = require('../../utils/Cleanup');
|
||||
|
||||
|
||||
const queryPadLimit = 12;
|
||||
|
@ -252,6 +253,26 @@ exports.socketio = (hookName: string, {io}: any) => {
|
|||
}
|
||||
})
|
||||
|
||||
socket.on('cleanupPadRevisions', async (padId: string) => {
|
||||
const padExists = await padManager.doesPadExists(padId);
|
||||
if (padExists) {
|
||||
logger.info(`Cleanup pad revisions: ${padId}`);
|
||||
try {
|
||||
const result = await cleanup.deleteRevisions(padId, settings.cleanup.keepRevisions)
|
||||
if (result) {
|
||||
socket.emit('results:cleanupPadRevisions', {
|
||||
padId: padId,
|
||||
keepRevisions: settings.cleanup.keepRevisions,
|
||||
});
|
||||
logger.info('successful cleaned up pad: ', padId)
|
||||
}
|
||||
} catch (err: any) {
|
||||
logger.error(`Error in pad ${padId}: ${err.stack || err}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
socket.on('restartServer', async () => {
|
||||
logger.info('Admin request to restart server through a socket on /admin/settings');
|
||||
settings.reloadSettings();
|
||||
|
|
|
@ -39,7 +39,7 @@ const createRevision = async (aChangeset: AChangeSet, timestamp: number, isKeyRe
|
|||
};
|
||||
}
|
||||
|
||||
exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise<void> => {
|
||||
exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise<boolean> => {
|
||||
|
||||
logger.debug('Start cleanup revisions', padId)
|
||||
|
||||
|
@ -48,6 +48,11 @@ exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise<
|
|||
|
||||
logger.debug('Initial pad is valid')
|
||||
|
||||
if (pad.head < keepRevisions) {
|
||||
logger.debug('Pad has not enough revisions')
|
||||
return false
|
||||
}
|
||||
|
||||
padMessageHandler.kickSessionsFromPad(padId)
|
||||
|
||||
const cleanupUntilRevision = pad.head - keepRevisions
|
||||
|
@ -116,6 +121,8 @@ exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise<
|
|||
|
||||
let newPad = await padManager.getPad(padId);
|
||||
await newPad.check();
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
exports.checkTodos = async () => {
|
||||
|
@ -139,8 +146,10 @@ exports.checkTodos = async () => {
|
|||
}
|
||||
|
||||
try {
|
||||
await exports.deleteRevisions(padId, settings.keepRevisions)
|
||||
logger.info('successful cleaned up pad: ', padId)
|
||||
const result = await exports.deleteRevisions(padId, settings.keepRevisions)
|
||||
if (result) {
|
||||
logger.info('successful cleaned up pad: ', padId)
|
||||
}
|
||||
} catch (err: any) {
|
||||
logger.error(`Error in pad ${padId}: ${err.stack || err}`);
|
||||
return;
|
||||
|
|
|
@ -380,6 +380,13 @@ exports.sso = {
|
|||
*/
|
||||
exports.showSettingsInAdminPage = true;
|
||||
|
||||
/*
|
||||
* Settings for cleanup of pads
|
||||
*/
|
||||
exports.cleanup = {
|
||||
keepRevisions: 100,
|
||||
}
|
||||
|
||||
/*
|
||||
* By default, when caret is moved out of viewport, it scrolls the minimum
|
||||
* height needed to make this line visible.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue