Thread: Obtaining client IP address

Obtaining client IP address

From
Alexis Paul Bertolini
Date:
Hi,

I need to have a db table containing all connected clients (of a 
distributed application) and among other info, their IP.

If both the client and the server are on the same LAN, no problem, the 
client can supply it's own info. But if they are connected via some sort 
of bridge/router/NAT? For instance, a client on a LAN connects to a 
server over the Internet?

The client has no idea what public IP it has. The server ought to 
know... however I haven't found how I could get this info into my query.

What I need is some sort of procedure whereby the client enrolls onto 
the system and supplies the info...

I hope I made my self clear. If not I can try and be more specific!

Alex.


Re: Obtaining client IP address

From
Michael Fuhr
Date:
On Sat, Feb 25, 2006 at 12:16:31AM +0100, Alexis Paul Bertolini wrote:
> The client has no idea what public IP it has. The server ought to 
> know... however I haven't found how I could get this info into my query.

What version of PostgreSQL are you running?  In 8.0 and later you
can use inet_client_addr().

http://www.postgresql.org/docs/8.1/interactive/functions-info.html

I forget if earlier versions have a way to get the client's IP
address without resorting to hacks (e.g., writing a function in a
privileged language like plperlu and calling netstat or lsof).

-- 
Michael Fuhr


Re: Obtaining client IP address

From
Alexis Paul Bertolini
Date:
Michael Fuhr wrote:
> On Sat, Feb 25, 2006 at 12:16:31AM +0100, Alexis Paul Bertolini wrote:
>   
>> The client has no idea what public IP it has. The server ought to 
>> know... however I haven't found how I could get this info into my query.
>>     
>
> What version of PostgreSQL are you running?  In 8.0 and later you
> can use inet_client_addr().
>
> http://www.postgresql.org/docs/8.1/interactive/functions-info.html
>
> I forget if earlier versions have a way to get the client's IP
> address without resorting to hacks (e.g., writing a function in a
> privileged language like plperlu and calling netstat or lsof).
>
>   
Mmmm, I didn't spot that one, but it did the trick! Thanks!

Alex.