From 59969db16c43a5e013730942c6892f44ecbc86b4 Mon Sep 17 00:00:00 2001 From: zzz <zzz@i2pmail.org> Date: Sun, 17 Jan 2021 09:32:23 -0500 Subject: [PATCH] Sybil: Limit stored analysis files if no console to view them Reduce stored file time to 10 days Min stored time is 2 * analysis interval --- .../java/src/net/i2p/router/sybil/Analysis.java | 3 ++- .../src/net/i2p/router/sybil/PersistSybil.java | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/sybil/Analysis.java b/router/java/src/net/i2p/router/sybil/Analysis.java index fc826406b8..c3f86ae190 100644 --- a/router/java/src/net/i2p/router/sybil/Analysis.java +++ b/router/java/src/net/i2p/router/sybil/Analysis.java @@ -96,7 +96,8 @@ public class Analysis extends JobImpl implements RouterApp { public static final boolean DEFAULT_BLOCK = true; public static final double DEFAULT_BLOCK_THRESHOLD = 50.0; public static final long DEFAULT_BLOCK_TIME = 7*24*60*60*1000L; - public static final long DEFAULT_REMOVE_TIME = 30*24*60*60*1000L; + public static final long DEFAULT_REMOVE_TIME = 10*24*60*60*1000L; + public static final long SHORT_REMOVE_TIME = 2*24*60*60*1000L; public static final long DEFAULT_FREQUENCY = 24*60*60*1000L; public static final float MIN_BLOCK_POINTS = 12.01f; diff --git a/router/java/src/net/i2p/router/sybil/PersistSybil.java b/router/java/src/net/i2p/router/sybil/PersistSybil.java index a79d1a0e84..fb97013ad4 100644 --- a/router/java/src/net/i2p/router/sybil/PersistSybil.java +++ b/router/java/src/net/i2p/router/sybil/PersistSybil.java @@ -19,6 +19,8 @@ import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import net.i2p.I2PAppContext; +import net.i2p.app.ClientApp; +import net.i2p.app.ClientAppManager; import net.i2p.data.Base64; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; @@ -179,7 +181,18 @@ public class PersistSybil { * @since 0.9.41 */ public synchronized void removeOld() { - long age = _context.getProperty(Analysis.PROP_REMOVETIME, Analysis.DEFAULT_REMOVE_TIME); + // if we don't have a console, don't keep too many + long removeTime = Analysis.SHORT_REMOVE_TIME; + ClientAppManager cmgr = _context.clientAppManager(); + if (cmgr != null) { + ClientApp console = cmgr.getRegisteredApp("console"); + if (console != null) + removeTime = Analysis.DEFAULT_REMOVE_TIME; + } + long age = _context.getProperty(Analysis.PROP_REMOVETIME, removeTime); + long freq2 = 2 * _context.getProperty(Analysis.PROP_FREQUENCY, Analysis.DEFAULT_FREQUENCY); + if (age < freq2) + age = freq2; if (age < 60*1000) return; long cutoff = _context.clock().now() - age; -- GitLab