From 3330ed8d1b344ff722b4ab673386a9acf7fe3703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Tue, 10 Sep 2024 17:25:51 +0200 Subject: [PATCH] Disable cleanup by default and show errors in admin area --- admin/src/pages/PadPage.tsx | 21 +++++++++++++++++++++ settings.json.docker | 8 ++++++++ settings.json.template | 8 ++++++++ src/node/hooks/express/adminsettings.ts | 14 ++++++++++++++ src/node/utils/Cleanup.ts | 2 +- src/node/utils/Settings.ts | 1 + 6 files changed, 53 insertions(+), 1 deletion(-) diff --git a/admin/src/pages/PadPage.tsx b/admin/src/pages/PadPage.tsx index 595dd9376..b5db854f5 100644 --- a/admin/src/pages/PadPage.tsx +++ b/admin/src/pages/PadPage.tsx @@ -23,6 +23,7 @@ export const PadPage = ()=>{ const pads = useStore(state=>state.pads) const [currentPage, setCurrentPage] = useState(0) const [deleteDialog, setDeleteDialog] = useState(false) + const [errorText, setErrorText] = useState(null) const [padToDelete, setPadToDelete] = useState('') const pages = useMemo(()=>{ if(!pads){ @@ -72,6 +73,11 @@ export const PadPage = ()=>{ settingsSocket.on('results:cleanupPadRevisions', (data)=>{ let newPads = useStore.getState().pads?.results ?? [] + if (data.error) { + setErrorText(data.error) + return + } + newPads.forEach((pad)=>{ if (pad.padName === data.padId) { pad.revisionNumber = data.keepRevisions @@ -118,6 +124,21 @@ export const PadPage = ()=>{ + + + + +
+
Error occured: {errorText}
+
+ +
+
+
+
+

setSearchTerm(v.target.value)} placeholder={t('ep_admin_pads:ep_adminpads2_search-heading')}/> diff --git a/settings.json.docker b/settings.json.docker index 109f36bfd..da1d51c13 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -171,6 +171,14 @@ */ "showSettingsInAdminPage": "${SHOW_SETTINGS_IN_ADMIN_PAGE:true}", + /* + * Settings for cleanup of pads + */ + "cleanup": { + "enabled": false, + "keepRevisions": 5 + }, + /* The authentication method used by the server. The default value is sso diff --git a/settings.json.template b/settings.json.template index fe10e51b9..2d856f42e 100644 --- a/settings.json.template +++ b/settings.json.template @@ -162,6 +162,14 @@ */ "showSettingsInAdminPage": true, + /* + * Settings for cleanup of pads + */ + "cleanup": { + "enabled": false, + "keepRevisions": 5 + }, + /* * Node native SSL support * diff --git a/src/node/hooks/express/adminsettings.ts b/src/node/hooks/express/adminsettings.ts index 3d30e8fb5..4c60a05ad 100644 --- a/src/node/hooks/express/adminsettings.ts +++ b/src/node/hooks/express/adminsettings.ts @@ -254,6 +254,13 @@ exports.socketio = (hookName: string, {io}: any) => { }) socket.on('cleanupPadRevisions', async (padId: string) => { + if (!settings.cleanup.enabled) { + socket.emit('results:cleanupPadRevisions', { + error: 'Cleanup disabled. Enable cleanup in settings.json: cleanup.enabled => true', + }); + return; + } + const padExists = await padManager.doesPadExists(padId); if (padExists) { logger.info(`Cleanup pad revisions: ${padId}`); @@ -265,9 +272,16 @@ exports.socketio = (hookName: string, {io}: any) => { keepRevisions: settings.cleanup.keepRevisions, }); logger.info('successful cleaned up pad: ', padId) + } else { + socket.emit('results:cleanupPadRevisions', { + error: 'Error cleaning up pad', + }); } } catch (err: any) { logger.error(`Error in pad ${padId}: ${err.stack || err}`); + socket.emit('results:cleanupPadRevisions', { + error: err.toString(), + }); return; } } diff --git a/src/node/utils/Cleanup.ts b/src/node/utils/Cleanup.ts index d0fa0db7d..06361d5db 100644 --- a/src/node/utils/Cleanup.ts +++ b/src/node/utils/Cleanup.ts @@ -48,7 +48,7 @@ exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise< logger.debug('Initial pad is valid') - if (pad.head < keepRevisions) { + if (pad.head <= keepRevisions) { logger.debug('Pad has not enough revisions') return false } diff --git a/src/node/utils/Settings.ts b/src/node/utils/Settings.ts index 535ccbd8c..4d7b421e1 100644 --- a/src/node/utils/Settings.ts +++ b/src/node/utils/Settings.ts @@ -384,6 +384,7 @@ exports.showSettingsInAdminPage = true; * Settings for cleanup of pads */ exports.cleanup = { + enabled: false, keepRevisions: 100, }