From 97823d1cb98fa7865ca44824018e92276146a80d Mon Sep 17 00:00:00 2001
From: ulrich
Date: Thu, 13 Mar 2025 16:28:34 +0000
Subject: [PATCH] evtl. enthaltene Query aus Bild-URI herausgelassen

---
 src/de/uhilger/neon/image/ImageFilter.java |   44 +++++++++++++++++++++++++++++++-------------
 1 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/src/de/uhilger/neon/image/ImageFilter.java b/src/de/uhilger/neon/image/ImageFilter.java
index 1f02274..51f8ff4 100644
--- a/src/de/uhilger/neon/image/ImageFilter.java
+++ b/src/de/uhilger/neon/image/ImageFilter.java
@@ -20,6 +20,7 @@
 import com.sun.net.httpserver.Filter;
 import com.sun.net.httpserver.HttpExchange;
 import de.uhilger.neon.FileServer;
+import de.uhilger.neon.HttpHelper;
 import java.io.IOException;
 
 /**
@@ -60,19 +61,36 @@
   
   @Override
   public void doFilter(HttpExchange exchange, Chain chain) throws IOException {
-    String uriStr = exchange.getRequestURI().toString();
-    //String fName = new HttpHelper().getFileName(exchange);
-    String fName = exchange
-            .getRequestURI()
-            .getPath()
-            .substring(exchange
-                    .getHttpContext()
-                    .getPath()
-                    .length());          
-    ImageWorker worker = new ImageWorker();
-    worker.createImages(exchange.getHttpContext().getAttributes().get(FileServer.ATTR_FILE_BASE).toString(), 
-            fName, uriStr);
-    chain.doFilter(exchange);
+    /*
+      Regex fuer Bilder
+      .+\.jpg|.+\.jpeg|.+\.png
+      (Testen z.B. auf https://regexr.com/)
+    */
+    String pattern = (String) exchange.getHttpContext().getAttributes()
+            .getOrDefault("imageFilterPattern", ".+\\.jpg|.+\\.jpeg|.+\\.png");
+    String uriStr = exchange.getRequestURI().toString().toLowerCase();
+    if(uriStr.contains("?")) {
+      uriStr = uriStr.substring(0, uriStr.indexOf("?"));
+    }
+    try {
+      String fName = new HttpHelper().getFileName(exchange);
+      if(uriStr.matches(pattern)) {
+        String fileBase = (String) exchange.getHttpContext().getAttributes()
+                .get(FileServer.ATTR_FILE_BASE);
+        String fileName = exchange
+                .getRequestURI()
+                .getPath()
+                .substring(exchange
+                        .getHttpContext()
+                        .getPath()
+                        .length());          
+        new ImageWorker().createImages(fileBase, fileName, uriStr);
+      }
+    } catch(IllegalArgumentException ex) {
+      // ungueltiger Dateiname, keine Transformation noetig, tue nichts
+    } finally {
+      chain.doFilter(exchange);
+    }
   }
 
   @Override

--
Gitblit v1.9.3