[ 
https://issues.apache.org/jira/browse/JAMES-4091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benoit Tellier updated JAMES-4091:
----------------------------------
    Description: 
h3. Why?

This could be a usefull administrative feature, for instance offered by Dovecot:

(credits chatgpt)

{code:java}
Dovecot: Provides robust administrative tools, including the doveadm who 
command, 
which lists all currently connected users. This functionality is exposed via 
the Dovecot 
Admin socket rather than an HTTP API.
{code}

Given JAMES-4090 we already track opened channels, exposing the users would 
thus be doable easily.

Ref https://manpages.ubuntu.com/manpages/focal/man1/doveadm-who.1.html

This is useful for diagnostic purposes.

h2. API proposal

{code:java}
curl -XGET /servers/channels/btell...@apache.org
{code}

Would return all channels belonging to `btell...@apache.org`:

{code:java}
[
   {
       "protocol": "IMAP",
        "endpoint": "imap-ssl",
        "encrypted": true, // SSLHandler part of the pipeline
        "connectionDate": "2024-11-20T16:00:00Z", // Tracked via an attribute 
to set upon connection
        "remoteAddress": "12.23.45.43:4378",
        "isActive": true,
        "username": "btell...@apache.org",
        "protocolSpecificInformation": {
             "compressed": "true", // CompressHandler part of the pipeline
             "userAgent": "outlook", // Record then read this in the IMAPSession
             "selectedMailbox": "INBOX", // Read the IMAPSession
             "isIdling": "true",  // Inspect behavious in protocol overrides
             "requestCount": "1234"  // channel attribute to be incremented on 
channelRead
         }   
   },
   {
       "protocol": "SMTP",
        "endpoint": "smtp-server-global",
        "encrypted": true, // SSLHandler part of the pipeline
        "connectionDate": "2024-11-20T16:00:00Z", // Tracked via an attribute 
to set upon connection
        "remoteAddress": "12.23.45.43:4378",
        "isActive": true,
        "username": "btell...@apache.org",
        "protocolSpecificInformation": {  }   
   },
...
]
{code}



  was:
h3. Why?

This could be a usefull administrative feature, for instance offered by Dovecot:

(credits chatgpt)

{code:java}
Dovecot: Provides robust administrative tools, including the doveadm who 
command, 
which lists all currently connected users. This functionality is exposed via 
the Dovecot 
Admin socket rather than an HTTP API.
{code}

Given JAMES-4090 we already track opened channels, exposing the users would 
thus be doable easily.

Ref https://manpages.ubuntu.com/manpages/focal/man1/doveadm-who.1.html

This is useful for diagnostic purposes.

h2. API proposal

{code:java}
curl -XGET /servers/channels/btell...@apache.org
{code}

Would return all channels belonging to `btell...@apache.org`:

{code:java}
[
   {
       "protocol": "IMAP",
        "endpoint": "imap-ssl",
        "encrypted": true, // SSLHandler part of the pipeline
        "connectionDate": "2024-11-20T16:00:00Z", // Tracked via an attribute 
to set upon connection
        "remoteAddress": "12.23.45.43:4378",
        "isActive": true,
        "username": "btell...@apache.org",
        "protocolSpecificInformation": {
             "compressed": "true", // CompressHandler part of the pipeline
             "userAgent": "outlook", // Record then read this in the IMAPSession
             "selectedMailbox": "INBOX", // Read the IMAPSession
             "isIdling": "true",  // Inspect behavious in protocol overrides
             "requestCount": "1234",  // channel attribute to be incremented on 
channelRead
         }   
   },
   {
       "protocol": "SMTP",
        "endpoint": "smtp-server-global",
        "encrypted": true, // SSLHandler part of the pipeline
        "connectionDate": "2024-11-20T16:00:00Z", // Tracked via an attribute 
to set upon connection
        "remoteAddress": "12.23.45.43:4378",
        "isActive": true,
        "username": "btell...@apache.org",
        "protocolSpecificInformation": {  }   
   },
...
]
{code}




> Listing connected users
> -----------------------
>
>                 Key: JAMES-4091
>                 URL: https://issues.apache.org/jira/browse/JAMES-4091
>             Project: James Server
>          Issue Type: New Feature
>          Components: IMAPServer, JMAP, SMTPServer
>            Reporter: Benoit Tellier
>            Assignee: Antoine Duprat
>            Priority: Major
>              Labels: security
>
> h3. Why?
> This could be a usefull administrative feature, for instance offered by 
> Dovecot:
> (credits chatgpt)
> {code:java}
> Dovecot: Provides robust administrative tools, including the doveadm who 
> command, 
> which lists all currently connected users. This functionality is exposed via 
> the Dovecot 
> Admin socket rather than an HTTP API.
> {code}
> Given JAMES-4090 we already track opened channels, exposing the users would 
> thus be doable easily.
> Ref https://manpages.ubuntu.com/manpages/focal/man1/doveadm-who.1.html
> This is useful for diagnostic purposes.
> h2. API proposal
> {code:java}
> curl -XGET /servers/channels/btell...@apache.org
> {code}
> Would return all channels belonging to `btell...@apache.org`:
> {code:java}
> [
>    {
>        "protocol": "IMAP",
>         "endpoint": "imap-ssl",
>         "encrypted": true, // SSLHandler part of the pipeline
>         "connectionDate": "2024-11-20T16:00:00Z", // Tracked via an attribute 
> to set upon connection
>         "remoteAddress": "12.23.45.43:4378",
>         "isActive": true,
>         "username": "btell...@apache.org",
>         "protocolSpecificInformation": {
>              "compressed": "true", // CompressHandler part of the pipeline
>              "userAgent": "outlook", // Record then read this in the 
> IMAPSession
>              "selectedMailbox": "INBOX", // Read the IMAPSession
>              "isIdling": "true",  // Inspect behavious in protocol overrides
>              "requestCount": "1234"  // channel attribute to be incremented 
> on channelRead
>          }   
>    },
>    {
>        "protocol": "SMTP",
>         "endpoint": "smtp-server-global",
>         "encrypted": true, // SSLHandler part of the pipeline
>         "connectionDate": "2024-11-20T16:00:00Z", // Tracked via an attribute 
> to set upon connection
>         "remoteAddress": "12.23.45.43:4378",
>         "isActive": true,
>         "username": "btell...@apache.org",
>         "protocolSpecificInformation": {  }   
>    },
> ...
> ]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to