From 96e53ff06ae1451e1f730c6e980ff9e0d105706e Mon Sep 17 00:00:00 2001 From: Alex O'Ree Date: Sun, 14 Dec 2025 14:13:31 -0500 Subject: [PATCH] JSPWIKI-205 adds an override for obfuscating or deobfuscating data for the file based page provider. Enables a relatively easy path for integrators to provide their own encryption mechanism for wiki page content stored on disk --- .../wiki/providers/AbstractFileProvider.java | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java index 29e4ac9d8d..7a8a26bdfc 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/providers/AbstractFileProvider.java @@ -257,8 +257,31 @@ private String getPageText( final String page ) { // This is okay. LOG.info( "New page '" + page + "'" ); } - - return result; + + return deobfuscate(result); + } + + /** + * An api hook to provide obfuscation of data before it's written to disk. + * Useful for wiring in your own custom encryption mechanism if so desired. + * @since 3.0.0 + * + * @param pageContent + * @return + */ + public String obfuscate(String pageContent) { + return pageContent; + } + + /** + * An api hook to provide deobfuscation of data before it's written to disk. + * Useful for wiring in your own custom decryption mechanism if so desired. + * @since 3.0.0 + * @param pageContent + * @return + */ + public String deobfuscate(String pageContent) { + return pageContent; } /** @@ -268,7 +291,7 @@ private String getPageText( final String page ) { public void putPageText( final Page page, final String text ) throws ProviderException { final File file = findPage( page.getName() ); try( final PrintWriter out = new PrintWriter( new OutputStreamWriter( Files.newOutputStream( file.toPath() ), m_encoding ) ) ) { - out.print( text ); + out.print( obfuscate(text) ); } catch( final IOException e ) { LOG.error( "Saving failed", e ); }