From b573fe461f3bf799ef0c3e45b137915c6ba4e470 Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Thu, 20 Jun 2024 11:21:42 -0400
Subject: [PATCH] i2ptunnel: Reduce severity of access filter errors (Gitlab
 #483)

So they don't prevent the tunnel from starting
Log tweaks
---
 .../src/net/i2p/i2ptunnel/I2PTunnelServer.java    |  5 ++++-
 .../net/i2p/i2ptunnel/access/AccessFilter.java    |  2 +-
 .../access/FileFilterDefinitionElement.java       | 15 ++++++++++++---
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java
index aa9dea2c25..b9e012d7e8 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java
@@ -234,7 +234,10 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
             try {
                 _filter = FilterFactory.createFilter(context, filterDefinition);
             } catch (IOException | InvalidDefinitionException bad) {
-                throw new IllegalArgumentException("Bad filter definition file: " + bad.getMessage(), bad);
+                String msg = "Bad filter definition file: " + filterDefinition + " - filtering disabled: " + bad.getMessage();
+                _log.error(msg, bad);
+                l.log(msg);
+                _filter = null;
             }
         }
 
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java
index 698bb1edb9..bd0cba3916 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java
@@ -236,7 +236,7 @@ class AccessFilter implements StatefulConnectionFilter {
                             syncer.schedule(SYNC_INTERVAL);
                     } catch (IOException bad) {
                         Log log = context.logManager().getLog(AccessFilter.class);
-                       log.log(Log.CRIT, "syncing access list failed", bad);
+                        log.error("syncing access list failed", bad);
                     }
                 }
             });
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FileFilterDefinitionElement.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FileFilterDefinitionElement.java
index cbeedac7eb..b6976060c2 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FileFilterDefinitionElement.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FileFilterDefinitionElement.java
@@ -8,7 +8,9 @@ import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
 
+import net.i2p.I2PAppContext;
 import net.i2p.data.Hash;
+import net.i2p.util.Log;
 
 /**
  * An element of filter definition that reads hashes of remote destinations
@@ -55,7 +57,16 @@ class FileFilterDefinitionElement extends FilterDefinitionElement {
             reader = new BufferedReader(new FileReader(file));
             String b32;
             while((b32 = reader.readLine()) != null) {
-                Hash hash = fromBase32(b32);
+                if (b32.length() == 0)
+                    continue;
+                Hash hash;
+                try {
+                    hash = fromBase32(b32);
+                } catch (InvalidDefinitionException bad32) {
+                    Log log = I2PAppContext.getGlobalContext().logManager().getLog(FileFilterDefinitionElement.class);
+                    log.error("Invalid access list entry \"" + b32 + "\" in " + file, bad32);
+                    continue;
+                }
                 if (map.containsKey(hash))
                     continue;
                 DestTracker newTracker = new DestTracker(hash, threshold);
@@ -64,8 +75,6 @@ class FileFilterDefinitionElement extends FilterDefinitionElement {
                     lastLoaded.put(hash, newTracker);
                 }
             }
-        } catch (InvalidDefinitionException bad32) {
-            throw new IOException("invalid access list entry", bad32);
         } finally {
             if (reader != null) {
                 try { reader.close(); } catch (IOException ignored) {}
-- 
GitLab