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