This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit fd152559c7899d380b5eb18d988a61e96c1cad83
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Thu Nov 21 10:44:16 2024 +0100

    JAMES-4091 Add userAgent to IMAP channel description
---
 .../main/java/org/apache/james/imap/processor/IdProcessor.java    | 1 +
 .../main/java/org/apache/james/imapserver/netty/IMAPServer.java   | 8 ++++++--
 .../integration/memory/MemoryWebAdminServerIntegrationTest.java   | 8 +++++---
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java
index 07a38e02ca..d0599b70c6 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java
@@ -67,6 +67,7 @@ public class IdProcessor extends 
AbstractMailboxProcessor<IDRequest> implements
 
         String mailUserAgent = 
request.getParameters().map(Object::toString).orElse("NIL");
         addMailUserAgentToMDC(session, mailUserAgent);
+        session.setAttribute("userAgent", mailUserAgent);
 
         return logMailUserAgent(mailUserAgent)
             .then(unsolicitedResponses(session, responder, false))
diff --git 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
index a9bac1194a..f1d8853e2d 100644
--- 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
+++ 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
@@ -22,7 +22,9 @@ import java.net.InetSocketAddress;
 import java.net.MalformedURLException;
 import java.net.SocketAddress;
 import java.net.URISyntaxException;
+import java.time.Clock;
 import java.time.Duration;
+import java.time.Instant;
 import java.util.LinkedHashMap;
 import java.util.Optional;
 import java.util.Set;
@@ -67,7 +69,6 @@ import com.google.common.collect.ImmutableSet;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import io.netty.channel.ChannelPipeline;
 import io.netty.channel.group.DefaultChannelGroup;
@@ -389,7 +390,10 @@ public class IMAPServer extends 
AbstractConfigurableAsyncServer implements ImapC
                             .orElse(""),
                         "isIdling", 
Boolean.toString(imapSession.flatMap(session -> 
Optional.ofNullable(session.getSelected()))
                             .map(SelectedMailbox::isIdling)
-                            .orElse(false))));
+                            .orElse(false)),
+                        "userAgent", imapSession.flatMap(s -> 
Optional.ofNullable(s.getAttribute("userAgent")))
+                            .map(Object::toString)
+                            .orElse("")));
             });
     }
 
diff --git 
a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
 
b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
index 3c7821de06..caf94d403e 100644
--- 
a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
+++ 
b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
@@ -61,8 +61,9 @@ class MemoryWebAdminServerIntegrationTest extends 
WebAdminServerIntegrationTest
 
         server.getProbe(DataProbeImpl.class).addUser(USERNAME, PASSWORD);
 
-        testIMAPClient.connect(LOCALHOST_IP, imapPort)
-            .login(USERNAME, PASSWORD)
+        testIMAPClient.connect(LOCALHOST_IP, imapPort);
+        testIMAPClient.sendCommand("ID (\"name\" \"Thunderbird\" \"version\" 
\"102.7.1\")");
+        testIMAPClient.login(USERNAME, PASSWORD)
             .select("INBOX");
 
         when()
@@ -74,6 +75,7 @@ class MemoryWebAdminServerIntegrationTest extends 
WebAdminServerIntegrationTest
             .body("[0].endpoint", is("imapserver"))
             .body("[0].username", is("bob@domain"))
             .body("[0].isEncrypted", is(false))
-            .body("[0].isEncrypted", is(false));
+            .body("[0].isEncrypted", is(false))
+            .body("[0].protocolSpecificInformation.userAgent", 
is("{name=Thunderbird, version=102.7.1}"));
     }
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to