Как узнать IP-адрес клиента?
Модератор: kdv
Как узнать IP-адрес клиента?
Для обеспечения логирования действий пользователя нужно хранить в БД IP-адрес, (а в идеале еще и MAC) с которого было выполнено подключение, время подключения и время отключения от БД.
Можно ли это узнать средствами сервера FireBird или же только пересылать с клиента?
Можно ли это узнать средствами сервера FireBird или же только пересылать с клиента?
Не совсем так. Для Classic на Линуксе есть решение, с помощью UDF. Я его использую.kdv писал(а):только пересылать с клиента.
Код: Выделить всё
(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);
Проблема возникла вновь.
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 нет.
Что можно сделать?
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 нет.
Что можно сделать?