Is it possible to expose the end users IP address?

We use VNC where I work to manage PCs remotely. When talking to a user about a problem (sometimes in spark) whe have to explain how to find their IP address (sure its just a little eyeball in the corner of their screen, but thats beside the point). What would be awesome is if we could expose their IP address when you hover over a username. Then if they have their chat client open, I could just hover over their name and their IP would show up. Is that possible?

I’m not sure it is possible, and it sounds unsafe. It all comes down to if the server actually passes along any IP address.

abuthemagician wrote:

I could just hover over their name and their IP would show up. Is that possible?

No, that’s not possible. XMPP protocol does not transmit the IP address, because clients do normally only communicate with the server. IP address is only than transmitted, if a user starts e.g. a filetransfer and does not use a proxy server. This is a security feature. Other protocols like ICQ do send the IP address always, which is very unsafe…

However, the server does obviously have to know the IP address. So it should be possible to write some kind of server plugin, e.g. a server-side bot, that is able to retrieve this information. This bot could be restricted to some group of admins and could also provide further information like shared group or roster things.

An example would be the Helga bot:

[10:35:10] <Coolcat> info martin.weusten
[10:35:10] <helga.jabber.rwth-aachen.de> martin.********@jabber.rwth-aachen.de/Psi (5)
Status: 'Online'
ClientInfo: Psi 0.12-RC2 | Fedora release 9 (Sulphur) Helga-Settings:
registered = true
public = true
seeadmins = true Member of the following groups:
Jabber Admins, NewUsers, lehr-lufgi2-progra-8 (*), news-jabber (*) (*) Moderator-Rights.

thanks i will look into the bot idea

All the IP addresses of your connected users are listed in the admin web site. It should be possible to write a plugin to show that data via the client.

You can get the IP addresses of each connected resource of each user using the SessionManager:

String username = "username";
Collection<ClientSession> userSessions = SessionManager.getInstance().getSessions(username);
Iterator<ClientSession> itrSessions = userSessions.iterator();
while (itrSessions.hasNext()) {
    ClientSession session = itrSessions.next();
    String ipAddress = session.getHostAddress();
}