Страница 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.