* [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-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
* 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 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 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 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-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
* 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
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