Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить имя клиентского хоста и сетевое имя пользователя? / 7 сообщений из 7, страница 1 из 1
28.05.2007, 20:26
    #34556309
Федор400
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
Как получить имя клиентского хоста и сетевое имя пользователя?
Подойдет реализация через функцию на C++, но как получить атрибуты текущего
соединения?
...
Рейтинг: 0 / 0
28.05.2007, 20:55
    #34556345
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
Федор400Как получить имя клиентского хоста и сетевое имя пользователя?
Подойдет реализация через функцию на C++, но как получить атрибуты текущего
соединения?

Vam syuda
...
Рейтинг: 0 / 0
28.05.2007, 22:36
    #34556459
Федор400
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
Но в указанной вами ссылке http://]http://www.postgresql.org/docs/8.2/static/functions-info.html
нет возможности получить имя клиенского хоста, а только его IP. Аналогично нет и функции для получения сетевого имени пользователя, а только функции для получения имени SQL-пользователя.

Т.е. получается, что информация о хосте выражена очень бедно?

Если-же делать C++ функцию (в своей dll), то как получить доступ к информации о текущем соединении на уровне сокетов?
...
Рейтинг: 0 / 0
28.05.2007, 23:18
    #34556482
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
Федор400Но в указанной вами ссылке http://]http://www.postgresql.org/docs/8.2/static/functions-info.html
нет возможности получить имя клиенского хоста, а только его IP. Аналогично нет и функции для получения сетевого имени пользователя, а только функции для получения имени SQL-пользователя.

Т.е. получается, что информация о хосте выражена очень бедно?


Pardon, a kakoe Postgresu delo do imeni hosta? Ono mojet 125 raz izmenitsia za vremia soedinenia, i chto Postgresu vse vremia DNS zaprosy delat' ?
Tak chto sami delaite na C obratnyy DNS zapros po IP-shniku, i vse.

A chto podozrevaetsia pod setevym imenem polzovatelia, ia voobshe ne ponial...
...
Рейтинг: 0 / 0
30.05.2007, 03:42
    #34559763
ShadyAngel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
А как в Postgresql узнать список процессов, запущенных на машине клиента?
:)
...
Рейтинг: 0 / 0
30.05.2007, 11:53
    #34560571
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
ShadyAngelА как в Postgresql узнать список процессов, запущенных на машине клиента?
:)
Ээээ, а еще он кофе варить не умеет. Да и пылесосит с трудом.

Может чего другого нужно или сформулированно не совсем корректно? А то как бы не СУБДшная зада малость. Особенно под юних-лайк системами.
...
Рейтинг: 0 / 0
30.05.2007, 17:09
    #34562081
Федор400
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского хоста и сетевое имя пользователя?
Мне и надо на C писать. Но нужен доступ к соединению (т.е. структуре Winsock). В ядре PostgreSQL
реализована функция
Код: plaintext
inet_client_addr ()
. Но ее доступ к атрибутам текущего соединения весьма специфичен и не экспортируется наружу библиотеками PostgreSQL. А доступ нужен, т.к. рабочая станция может иметь несколько IP адресов и несколько сетевых карт. Вот, кстати, незамысловатый код этой функции:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Datum
inet_client_addr(PG_FUNCTION_ARGS)
{
	Port	   *port = MyProcPort;
	char		remote_host[NI_MAXHOST];
	int			ret;

	if (port == NULL)
		PG_RETURN_NULL();

	switch (port->raddr.addr.ss_family)
	{
		case AF_INET:
#ifdef HAVE_IPV6
		case AF_INET6:
#endif
			break;
		default:
			PG_RETURN_NULL();
	}

	remote_host[ 0 ] = '\0';

	ret = pg_getnameinfo_all(&port->raddr.addr, port->raddr.salen,
							 remote_host, sizeof(remote_host),
							 NULL,  0 ,
							 NI_NUMERICHOST | NI_NUMERICSERV);
	if (ret)
		PG_RETURN_NULL();

	PG_RETURN_INET_P(network_in(remote_host, false));
}

Но откуда взять
Код: plaintext
MyProcPort
???
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить имя клиентского хоста и сетевое имя пользователя? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]