From a385381dbd5800af63760b3370af5929988847fb Mon Sep 17 00:00:00 2001 From: Lorenzo Venerandi Date: Wed, 4 Mar 2026 12:37:42 +0100 Subject: [PATCH 1/3] feat: add log_id to suspicious activities for detailed request viewing --- src/database.py | 1 + .../jinja2/dashboard/partials/suspicious_table.html | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/database.py b/src/database.py index ab026de..bda6e88 100644 --- a/src/database.py +++ b/src/database.py @@ -1504,6 +1504,7 @@ class DatabaseManager: "path": log.path, "user_agent": log.user_agent, "timestamp": log.timestamp.isoformat(), + "log_id": log.id, } for log in logs ] diff --git a/src/templates/jinja2/dashboard/partials/suspicious_table.html b/src/templates/jinja2/dashboard/partials/suspicious_table.html index 333e8df..1b7f10b 100644 --- a/src/templates/jinja2/dashboard/partials/suspicious_table.html +++ b/src/templates/jinja2/dashboard/partials/suspicious_table.html @@ -8,7 +8,7 @@ Path User-Agent Time - + @@ -24,7 +24,10 @@ {{ activity.path | e }} {{ (activity.user_agent | default(''))[:80] | e }} {{ activity.timestamp | format_ts(time_only=True) }} - + + {% if activity.log_id %} + + {% endif %} From ddc5dcade32a3c6359c459a01242cd38df995b92 Mon Sep 17 00:00:00 2001 From: Lorenzo Venerandi Date: Wed, 4 Mar 2026 12:37:55 +0100 Subject: [PATCH 2/3] feat: add copy to clipboard functionality and update button styles in raw request modal --- .../dashboard/partials/raw_request_modal.html | 9 +++- src/templates/static/css/dashboard.css | 47 +++++++++++++++---- src/templates/static/js/dashboard.js | 14 ++++++ 3 files changed, 59 insertions(+), 11 deletions(-) diff --git a/src/templates/jinja2/dashboard/partials/raw_request_modal.html b/src/templates/jinja2/dashboard/partials/raw_request_modal.html index 06a46bb..e07dc0e 100644 --- a/src/templates/jinja2/dashboard/partials/raw_request_modal.html +++ b/src/templates/jinja2/dashboard/partials/raw_request_modal.html @@ -14,7 +14,14 @@

         
         
     
 
diff --git a/src/templates/static/css/dashboard.css b/src/templates/static/css/dashboard.css
index 5074528..fa5fbae 100644
--- a/src/templates/static/css/dashboard.css
+++ b/src/templates/static/css/dashboard.css
@@ -1108,20 +1108,47 @@ tbody {
     border-top: 1px solid #30363d;
     border-radius: 0 0 6px 6px;
     text-align: right;
+    display: flex;
+    justify-content: flex-end;
+    gap: 8px;
 }
-.raw-request-download-btn {
-    padding: 8px 16px;
-    background: #238636;
-    color: #ffffff;
-    border: none;
+.raw-request-icon-btn {
+    position: relative;
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    width: 36px;
+    height: 36px;
+    background: #21262d;
+    color: #8b949e;
+    border: 1px solid #30363d;
     border-radius: 6px;
-    font-weight: 500;
-    font-size: 13px;
     cursor: pointer;
-    transition: background 0.2s;
+    transition: all 0.2s;
 }
-.raw-request-download-btn:hover {
-    background: #2ea043;
+.raw-request-icon-btn:hover {
+    background: #30363d;
+    color: #58a6ff;
+    border-color: #58a6ff;
+}
+.raw-request-icon-tooltip {
+    position: absolute;
+    bottom: calc(100% + 6px);
+    left: 50%;
+    transform: translateX(-50%);
+    padding: 4px 8px;
+    background: #1c2128;
+    color: #e6edf3;
+    border: 1px solid #30363d;
+    border-radius: 4px;
+    font-size: 11px;
+    white-space: nowrap;
+    opacity: 0;
+    pointer-events: none;
+    transition: opacity 0.15s;
+}
+.raw-request-icon-btn:hover .raw-request-icon-tooltip {
+    opacity: 1;
 }
 
 /* Attack Types Cell Styling */
diff --git a/src/templates/static/js/dashboard.js b/src/templates/static/js/dashboard.js
index e6e848b..329e1e4 100644
--- a/src/templates/static/js/dashboard.js
+++ b/src/templates/static/js/dashboard.js
@@ -111,6 +111,20 @@ document.addEventListener('alpine:init', () => {
             this.rawModal.logId = null;
         },
 
+        async copyRawRequest(event) {
+            if (!this.rawModal.content) return;
+            const btn = event.currentTarget;
+            const originalHTML = btn.innerHTML;
+            const checkIcon = '';
+            try {
+                await navigator.clipboard.writeText(this.rawModal.content);
+                btn.innerHTML = checkIcon;
+            } catch {
+                btn.style.color = '#f85149';
+            }
+            setTimeout(() => { btn.innerHTML = originalHTML; btn.style.color = ''; }, 1500);
+        },
+
         downloadRawRequest() {
             if (!this.rawModal.content) return;
             const blob = new Blob([this.rawModal.content], { type: 'text/plain' });

From dd183924498d3015540f4fd752b55afbd0ea9a59 Mon Sep 17 00:00:00 2001
From: Lorenzo Venerandi 
Date: Wed, 4 Mar 2026 12:38:17 +0100
Subject: [PATCH 3/3] feat: update chart version to 1.1.2 for Krawl honeypot
 server

---
 helm/Chart.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/helm/Chart.yaml b/helm/Chart.yaml
index 812ff4f..49fac76 100644
--- a/helm/Chart.yaml
+++ b/helm/Chart.yaml
@@ -2,8 +2,8 @@ apiVersion: v2
 name: krawl-chart
 description: A Helm chart for Krawl honeypot server
 type: application
-version: 1.1.1
-appVersion: 1.1.1
+version: 1.1.2
+appVersion: 1.1.2
 keywords:
   - honeypot
   - security