Страница 1 из 1

Как узнать IP-адрес клиента?

Добавлено: 29 июл 2006, 01:57
BlackEric
Для обеспечения логирования действий пользователя нужно хранить в БД IP-адрес, (а в идеале еще и MAC) с которого было выполнено подключение, время подключения и время отключения от БД.
Можно ли это узнать средствами сервера FireBird или же только пересылать с клиента?

Добавлено: 29 июл 2006, 09:42
kdv
Можно ли это узнать средствами сервера FireBird или же только пересылать с клиента?
только пересылать с клиента.

Добавлено: 29 июл 2006, 11:34
WildSery
kdv писал(а):только пересылать с клиента.
Не совсем так. Для Classic на Линуксе есть решение, с помощью UDF. Я его использую.

Код: Выделить всё

(FreePascal Compiler v.1.9.x или выше)
var
  PID, NetStat: string;
  f: text;

System.Str(getprocessId, PID);
POpen(f,'netstat -np|grep '+PID+'/gds','R');
Readln(f, NetStat);
PClose(f);
А дальше из строки NetStat формируем IP в "нормальном" виде и возвращаем строкой. В полученной строке содержится и IP сервера тоже.

Добавлено: 29 июл 2006, 22:55
BlackEric
У меня SuperServer под Windows. :(

Добавлено: 30 июл 2006, 12:53
Merlin
В FB2 вроде IP можно достать (релизные ноты надо глянуть), а вот MAC имхо только с клиента.

Добавлено: 30 июл 2006, 18:25
CyberMax
Тоже что-то подобное помню про FB 2.0. Но смотрел ноты - ничего не нашел. Либо плохо искал либо в самом деле нельзя.

Добавлено: 30 июл 2006, 21:54
hvlad
См. RDB$GET_CONTEXT

Добавлено: 18 фев 2008, 13:56
BlackEric
Проблема возникла вновь.

FB 2.0.3.

Нужно логировать подключение к базе обязательно IP и желательно системное имя (Sysdba, public и т.д.)

Сейчас я получаю IP из SP, где вызывается rdb$get_context('SYSTEM', 'CLIENT_ADDRESS');

Но я дергаю эту хранимку из моего клиентского приложения, а нужно отследить подключение из любого приложения: IBExpert, isql.exe и другие.

На http://forum.vingrad.ru/forum/topic-135 ... t_0_view_0 есть решение, но оно требует создания триггера для каждой таблицы, что не удобно и позволит отследить только изменение данных, но не чтение, т.к. триггера на select нет.

Что можно сделать?

Добавлено: 18 фев 2008, 14:00
kdv
Что можно сделать?
Firebird 2.1, InterBase 2007.