ALT Linux Community general discussions
 help / color / mirror / Atom feed
* Re: [Comm] Вопрос по xinetd
  2005-03-21 10:41 [Comm] Вопрос по xinetd Sergey Shilov
@ 2005-03-21  9:46 ` Eugene Ostapets
  2005-03-24 10:59   ` Sergey Shilov
  0 siblings, 1 reply; 8+ messages in thread
From: Eugene Ostapets @ 2005-03-21  9:46 UTC (permalink / raw)
  To: community

> Доброго времени суток уважаемому All!
> 
> Суть вопроса в том, что может ли служба, запущенная из под xinetd (inetd)
> узнать адрес (имя) удаленного хоста, с которого запрошен ее запуск.
> 
> Можно ли это сделать через server_args, либо каким другим способом?
> 
А слабо посмотреть в первоисточники? :)
Чтение по диагонали telnetd.c дает ответ за 5 секунд - getnameinfo

-- 
С уважением,
Евгений Остапец

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Comm] Вопрос по xinetd
@ 2005-03-21 10:41 Sergey Shilov
  2005-03-21  9:46 ` Eugene Ostapets
  0 siblings, 1 reply; 8+ messages in thread
From: Sergey Shilov @ 2005-03-21 10:41 UTC (permalink / raw)
  To: community

Доброго времени суток уважаемому All!

Суть вопроса в том, что может ли служба, запущенная из под xinetd (inetd)
узнать адрес (имя) удаленного хоста, с которого запрошен ее запуск. 

Можно ли это сделать через server_args, либо каким другим способом?

-- 
С уважением
Сергей Шилов


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] Вопрос по xinetd
  2005-03-24 10:59   ` Sergey Shilov
@ 2005-03-24  9:15     ` Eugene Ostapets
  2005-03-24 12:10       ` Sergey Shilov
  0 siblings, 1 reply; 8+ messages in thread
From: Eugene Ostapets @ 2005-03-24  9:15 UTC (permalink / raw)
  To: community

On Thu, 24 Mar 2005 10:59:16 +0000, Sergey Shilov <hsv@dstszi.gov.ua> wrote:
> В сообщении от 21 Март 2005 09:46 Eugene Ostapets написал(a):
> Ага getpeername + getnameinfo. ;-)))
> 
> Но!
> 
> Как личность слегка обученная РТФМу попробовал сперва
> man  getnameinfo
> и, о чудо, узрел там магическое заклинание:
<skip>
> попытка последовать "Букве зекона" увенчалась крахом с сообщением
> о том, что у sa  (sockaddr) нету поля sa_len ... :-( и т.д.
Это поле есть, если не изменяет мне склероз, в рекомендациях на Socket
API, но кто именно из Unix это реализовал - я не в курсе. Собственно
из-за кучи рекомендаций, которые так и не стали стандартом и
приходиться постоянно приводить типы структур при передаче их в
качестве параметра.
> Рабочий вариант решения задачи (да простят мне апологеты ГЦЦ недостойный стиль)
> выглядит примерно так:
> 
> 
<skip>
> Воникает вполне резонный вопрос - примеры кода в некоторых ман страницах
> реально проверяются на работоспособность, или это известная часть знаменитого
> "метода проблемного обучения" для начинающих программистов?
Да, они проверялись на работоспособность, но см. выше... Те страницы,
которых коснулась рука Linux программистов содержат упоминания о том
что "то-то и то-то" нереализованно, а "это" реализованно иначе...

-- 
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] Вопрос по xinetd
  2005-03-24 12:10       ` Sergey Shilov
@ 2005-03-24 10:18         ` Eugene Ostapets
  2005-03-24 14:21           ` Sergey Shilov
  0 siblings, 1 reply; 8+ messages in thread
From: Eugene Ostapets @ 2005-03-24 10:18 UTC (permalink / raw)
  To: community

On Thu, 24 Mar 2005 12:10:40 +0000, Sergey Shilov <hsv@dstszi.gov.ua> wrote:
> В сообщении от 24 Март 2005 09:15 Eugene Ostapets написал(a):
> 
> > > попытка последовать "Букве зекона" увенчалась крахом с сообщением
> > > о том, что у sa  (sockaddr) нету поля sa_len ... :-( и т.д.
> > Это поле есть
> Извиняюсь за настойчивость но результат
> find /usr/include/ -type f -exec grep sa_len {} \;
> показывает обратное.
Вы предложение дочитали до точки? Или чукча не читатель, чукча
писатель? При чем тут Linux? Socket API, его стандарты и рекомендации
разрабатывались и развивались в другом окружении. И кто-то написал man
страницу, сидя на системе, где эти поля были. То, что для Linux
разработчики решили не тащить рекомендации, которые так и не стали
стандартом остается ровно на совести разработчиков Linux.

-- 
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] Вопрос по xinetd
  2005-03-21  9:46 ` Eugene Ostapets
@ 2005-03-24 10:59   ` Sergey Shilov
  2005-03-24  9:15     ` Eugene Ostapets
  0 siblings, 1 reply; 8+ messages in thread
From: Sergey Shilov @ 2005-03-24 10:59 UTC (permalink / raw)
  To: community

В сообщении от 21 Март 2005 09:46 Eugene Ostapets написал(a):

> А слабо посмотреть в первоисточники? :)
Нееее, не слабо.
Но тут ...src.rpm однако :-)
> Чтение по диагонали telnetd.c дает ответ за 5 секунд - getnameinfo
Ага getpeername + getnameinfo. ;-)))

Но!

Как личность слегка обученная РТФМу попробовал сперва
man  getnameinfo
и, о чудо, узрел там магическое заклинание:
...
EXAMPLES
       The  following code tries to get the numeric hostname and service name,
       for a given socket address. Note that there is no  hardcoded  reference
       to a particular address family.

                struct sockaddr *sa;    /* input */
                char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

                if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), sbuf,
                    sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
                        printf("host=%s, serv=%s\n", hbuf, sbuf);

       The  following  version  checks  if  the  socket  address has a reverse
       address mapping.

                struct sockaddr *sa;    /* input */
                char hbuf[NI_MAXHOST];

                if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf),
                    NULL, 0, NI_NAMEREQD))
                       printf("could not resolve hostname");
                else
                       printf("host=%s\n", hbuf);
...
попытка последовать "Букве зекона" увенчалась крахом с сообщением
о том, что у sa  (sockaddr) нету поля sa_len ... :-( и т.д.
Рабочий вариант решения задачи (да простят мне апологеты ГЦЦ недостойный стиль) 
выглядит примерно так:

void print_remote_info (void) {
    struct sockaddr_storage     addr;
    socklen_t                   addrlen;
    addrlen = sizeof(addr);
    char                        name[NI_MAXHOST];

    if (getpeername(fileno(stdin), (struct sockaddr*)&addr, &addrlen) == 0 ) {
        fprintf(stdout, "Connection handled on file descriptor %d ", fileno(stdin));
        if  ( getnameinfo( (struct sockaddr *)&addr, addrlen,
                         name, sizeof(name), NULL, 0, NI_NUMERICHOST) == 0 ) {
            fprintf(stdout, "IP %s ", ip);
        }
        else {
           fprintf(stderr, "getnameinfo error %s \n\r", strerror(errno));
 }
    }
    else {
          fprintf(stderr, "getpeername error %s \n\r", strerror(errno));
    }     
}

Воникает вполне резонный вопрос - примеры кода в некоторых ман страницах
реально проверяются на работоспособность, или это известная часть знаменитого
"метода проблемного обучения" для начинающих программистов?


-- 
С уважением
Сергей Шилов


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] Вопрос по xinetd
  2005-03-24  9:15     ` Eugene Ostapets
@ 2005-03-24 12:10       ` Sergey Shilov
  2005-03-24 10:18         ` Eugene Ostapets
  0 siblings, 1 reply; 8+ messages in thread
From: Sergey Shilov @ 2005-03-24 12:10 UTC (permalink / raw)
  To: community

В сообщении от 24 Март 2005 09:15 Eugene Ostapets написал(a):

> > попытка последовать "Букве зекона" увенчалась крахом с сообщением
> > о том, что у sa  (sockaddr) нету поля sa_len ... :-( и т.д.
> Это поле есть
Извиняюсь за настойчивость но результат
find /usr/include/ -type f -exec grep sa_len {} \;
показывает обратное.

-- 
С уважением
Сергей Шилов


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] Вопрос по xinetd
  2005-03-24 14:21           ` Sergey Shilov
@ 2005-03-24 12:30             ` Eugene Ostapets
  0 siblings, 0 replies; 8+ messages in thread
From: Eugene Ostapets @ 2005-03-24 12:30 UTC (permalink / raw)
  To: community

On Thu, 24 Mar 2005 14:21:16 +0000, Sergey Shilov <hsv@dstszi.gov.ua> wrote:
> В сообщении от 24 Март 2005 10:18 Eugene Ostapets написал:
> А кто-то запакетил как часть руководств по конкретному дистрибутиву
> > То, что для Linux
> > разработчики решили не тащить рекомендации, которые так и не стали
> > стандартом остается ровно на совести разработчиков Linux.
> И бог им судья, но тут то обсуждается конкретный дистрибутив,
> причем рекомендуемый для обучения программированию в т.ч.
> Разве работоспособность примеров в справочных руководствах
> перестала быть обязательной.
Перечитайте еще раз GPL - там ясно сказано: "Никаких гарантий!"
> 
> Помоему имеет место быть банальный баг в документации.
Ну так напишите автору оригинальной статьи свои соображения! Посмотрю
куда он пошлет Линукс в целом и вас в частности:)

-- 
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] Вопрос по xinetd
  2005-03-24 10:18         ` Eugene Ostapets
@ 2005-03-24 14:21           ` Sergey Shilov
  2005-03-24 12:30             ` Eugene Ostapets
  0 siblings, 1 reply; 8+ messages in thread
From: Sergey Shilov @ 2005-03-24 14:21 UTC (permalink / raw)
  To: community

В сообщении от 24 Март 2005 10:18 Eugene Ostapets написал:

> Вы предложение дочитали до точки? Или чукча не читатель, чукча
> писатель? 
Ага, чукча писатель. Почитал букварь и попробовал написать.
Получилось "Если на клетке с тигром написано "слон" не верь глазам своим".
> При чем тут Linux? 
И действительно причем?
> Socket API, его стандарты и рекомендации  
> разрабатывались и развивались в другом окружении. 
> И кто-то написал man 
> страницу, сидя на системе, где эти поля были. 
А кто-то запакетил как часть руководств по конкретному дистрибутиву 
> То, что для Linux 
> разработчики решили не тащить рекомендации, которые так и не стали
> стандартом остается ровно на совести разработчиков Linux.
И бог им судья, но тут то обсуждается конкретный дистрибутив, 
причем рекомендуемый для обучения программированию в т.ч.
Разве работоспособность примеров в справочных руководствах
перестала быть обязательной.

Помоему имеет место быть банальный баг в документации.

-- 
С уважением
Сергей Шилов


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-03-24 14:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-21 10:41 [Comm] Вопрос по xinetd Sergey Shilov
2005-03-21  9:46 ` Eugene Ostapets
2005-03-24 10:59   ` Sergey Shilov
2005-03-24  9:15     ` Eugene Ostapets
2005-03-24 12:10       ` Sergey Shilov
2005-03-24 10:18         ` Eugene Ostapets
2005-03-24 14:21           ` Sergey Shilov
2005-03-24 12:30             ` Eugene Ostapets

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git