как правильно писать CGI-скрипты на С/С++?
От: konst  
Дата: 09.08.02 10:05
Оценка:
Столкнулся с такой проблемой: ИИС отказывается запускать скрипт, если он использует функции из user32.dll. Может кто подскажет или ссылку даст на какие-нибудь доки про то, какими длл-ками может пользоваться, а какими — нет скрипт под ИИС5 на 2000ных. В частности наиболее актуален вопрос: может ли такой скрипт слать письма на "чужие" сервера при помощи сокетов?
Re: как правильно писать CGI-скрипты на С/С++?
От: Lexey Россия  
Дата: 10.08.02 10:09
Оценка:
Здравствуйте konst, Вы писали:

K>Столкнулся с такой проблемой: ИИС отказывается запускать скрипт, если он использует функции из user32.dll. Может кто подскажет или ссылку даст на какие-нибудь доки про то, какими длл-ками может пользоваться, а какими — нет скрипт под ИИС5 на 2000ных. В частности наиболее актуален вопрос: может ли такой скрипт слать письма на "чужие" сервера при помощи сокетов?


Фишка скорее всего в том, что у анонимного юзера нет доступа к каталогу system32, где лежат системные dll'и. В таком случае, ты вообще почти никакие вызовы Win32 API не сможешь использовать. Единственный вариант — просить администраторов сервера дать нужные права.
Re[2]: как правильно писать CGI-скрипты на С/С++?
От: konst  
Дата: 10.08.02 13:20
Оценка:
Здравствуйте Lexey, Вы писали:

L>Фишка скорее всего в том, что у анонимного юзера нет доступа к каталогу system32, где лежат системные dll'и. В таком случае, ты вообще почти никакие вызовы Win32 API не сможешь использовать. Единственный вариант — просить администраторов сервера дать нужные права.


Есть или нет доступа — сейчас сказать не могу, но всё же, кажется есть на чтение и/или запуск точно, т.к. скрипт всё же запускается и работает. Беда просто...что происходит — непонятно...как этот ИИС так работает, ну, вообще не давал бы скрипту работать — понятное дело, но скрипт поработает несколько часиков, а потом отказывается выполнять некоторые действия. Таковых насчитали два: обращение к функциям из "user32.dll" и к сокетам. Т.е. через несколько часов работы при вызове такого кода программа виснет и ИИС её через какой-то таймаут срубает:
socks = socket(AF_INET, SOCK_STREAM, 0);

а до этого проходят WSAStartup и gethostbyname соответственно.
Re[3]: как правильно писать CGI-скрипты на С/С++?
От: Lexey Россия  
Дата: 11.08.02 18:49
Оценка:
Здравствуйте konst, Вы писали:

K>Есть или нет доступа — сейчас сказать не могу, но всё же, кажется есть на чтение и/или запуск точно, т.к. скрипт всё же запускается и работает. Беда просто...что происходит — непонятно...как этот ИИС так работает, ну, вообще не давал бы скрипту работать — понятное


Тогда мое предположение отменяется.

>дело, но скрипт поработает несколько часиков, а потом отказывается выполнять некоторые действия. Таковых насчитали два: обращение к функциям из "user32.dll" и к сокетам. Т.е. через несколько часов работы при вызове такого кода программа виснет и ИИС её через какой-то таймаут срубает:

K>
K>socks = socket(AF_INET, SOCK_STREAM, 0);
K>

K>а до этого проходят WSAStartup и gethostbyname соответственно.

Ошибки в программе (типа различного рода утечек) искать не пробовали?
Re[4]: как правильно писать CGI-скрипты на С/С++?
От: konst  
Дата: 12.08.02 08:29
Оценка:
Здравствуйте Lexey, Вы писали:

L>Ошибки в программе (типа различного рода утечек) искать не пробовали?


Нет ещё, не пробовали
Поищу
Очень похоже на утечки, согласен, только у них на сервере всё тогда должно подвисать или как? Хотя, код этот, что виснет, довольно неплохо проверен...
Re[5]: как правильно писать CGI-скрипты на С/С++?
От: Lexey Россия  
Дата: 12.08.02 18:12
Оценка: 3 (1)
Здравствуйте konst, Вы писали:

L>>Ошибки в программе (типа различного рода утечек) искать не пробовали?


K>Нет ещё, не пробовали

K>Поищу
K>Очень похоже на утечки, согласен, только у них на сервере всё тогда должно подвисать или как? Хотя, код этот, что виснет, довольно неплохо проверен...

Нет. IIS позволяет лимитировать ресурсы приложений.
Re[6]: как правильно писать CGI-скрипты на С/С++?
От: konst  
Дата: 13.08.02 06:30
Оценка:
Здравствуйте Lexey, Вы писали:

L>Нет. IIS позволяет лимитировать ресурсы приложений.


Lexey, как я понял, вы хорошо разбираетесь в IIS и веб-программировании. Тогда, начать мне, наверное, надо было с того, что вообще возможно ли CGI-скрипту под IIS и Windows2000:
1) использовать библиотеку сокетов;
2) коннектится к внешним адресам;
3) использовать user32.dll;
4) использовать "свои" dll-ки.
Re[7]: как правильно писать CGI-скрипты на С/С++?
От: Lexey Россия  
Дата: 13.08.02 19:01
Оценка: 2 (1)
Здравствуйте konst, Вы писали:

K>Здравствуйте Lexey, Вы писали:


L>>Нет. IIS позволяет лимитировать ресурсы приложений.


K>Lexey, как я понял, вы хорошо разбираетесь в IIS и веб-программировании. Тогда, начать


Ну, по крайней мере я так думаю.

мне, наверное, надо было с того, что вообще возможно ли CGI-скрипту под IIS и Windows2000:
K>1) использовать библиотеку сокетов;
K>2) коннектится к внешним адресам;
K>3) использовать user32.dll;
K>4) использовать "свои" dll-ки.

Все вполне реально. Можно конечно запретить пункты 1 и 3, настроив права на SYSTEM32 так, что у акаунта, под которым запускается CGI не будет прав на чтение системных библиотек.
2 при большом желании тоже можно запретить, но это уже потребует установки дополнительного ПО
4 тоже можно запретить, поизвращавшись с правами.

Но, по умолчанию такого никто делать скорее всего не станет, ибо все это нафиг не нужно. Достаточно просто ограничить процесс по вычислительным ресурсам и запускать его под каким-нибудь бесправным акаунтом, чтобы он не мог напакостить в системе.
Re[8]: как правильно писать CGI-скрипты на С/С++?
От: Lexey Россия  
Дата: 13.08.02 19:02
Оценка:
Здравствуйте Lexey, Вы писали:

А вообще, насчет САБЖа:
Под IIS правильно не писать CGI.
Под IIS правильно писать ISAPI-расширения.
Re[8]: как правильно писать CGI-скрипты на С/С++?
От: konst  
Дата: 14.08.02 06:31
Оценка:
Здравствуйте Lexey, Вы писали:

L>Но, по умолчанию такого никто делать скорее всего не станет, ибо все это нафиг не нужно. Достаточно просто ограничить процесс по вычислительным ресурсам и запускать его под каким-нибудь бесправным акаунтом, чтобы он не мог напакостить в системе.

Так и есть, никаких необычных настроек IIS-а наши хостеры не применяют и никакого особенного софта.

Спасибо, Lexey, за твои ответы. По крайней мере мне стало ясно, чего надо ожидать и скорее всего надо искать какой-то неочевидный баг...
Re[7]: как правильно писать CGI-скрипты на С/С++?
От: Awaken Украина  
Дата: 14.08.02 20:11
Оценка:
Здравствуйте konst, Вы писали:

K>Здравствуйте Lexey, Вы писали:


L>>Нет. IIS позволяет лимитировать ресурсы приложений.


K>Lexey, как я понял, вы хорошо разбираетесь в IIS и веб-программировании. Тогда, начать мне, наверное, надо было с того, что вообще возможно ли CGI-скрипту под IIS и Windows2000:

зачем CGI когда под IIS нужно писать ISAPI?
ISAPI гораздо производительней ибо использует мультипоточность. также можно(и нужно) настроить уровень изоляции чтобы ISAPI DLL запускалась в отдельном процессе. тогда при критической ошибке DLL не будет валить весь IIS. хотя для отладки удобнее запускать dll внутри inetinfo.exe
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.