Например, при обращении к модулю «somemodule» при подключении к серверу, привязанному к адресу 123.123.123.123 и порту 8080, при включенной системе безопасности, зная имя пользователя – «mylogin» – и пароль – «mypassword» – строка адреса, которая должна быть введена в браузере, будет выглядеть следующим образом:http://123.123.123.123:8080/somemodule?login=mylogin&password=mypassword
В случае отключенной системы безопасности строка изменится:http://123.123.123.123:8080/somemodule
При возникновении какой-либо ошибки при обработке запроса – как со стороны корректности запроса, так и со стороны возможности выполнить запрошенные действия – в окно браузера выдается сообщение об ошибке.
Ошибка может возникнуть в одной из следующих ситуаций:
· Полученный сервером запрос некорректен – указана неверная версия протокола HTTP, неподдерживаемый метод или сама структура запроса содержит ошибки.
· Запрошенный модуль не может быть найден, либо он поврежден.
· Указанные имя пользователя и пароль недействительны.
Завершение работы сервера возникает в результате приема серверным процессом сигнала SIGINT, соответствующего нажатию клавиатурной комбинации Ctrl+C. Однако, если сервер запущен в фоновом режиме (режиме демона), воздействие на него с помощью клавиатуры не представляется возможным. В этом случае следует послать процессу сигнал с помощью команды оболочки kill или killall:
· kill –INTpid, в этом случае необходимо знать PID запущенного процесса;
· killall –INTlinspy – здесь поиск процесса ведется по имени исполняемого файла.
Вторая команда включена в файл shutdown.sh, представляющий собой сценарий оболочки и завершающий работу программы.
В случае принудительного завершения работы программы, например, с помощью сигнала SIGKILL, серверный сокет не будет закрыт корректно, что приведет к невозможности некоторое время привязаться к тем же адресу и порту, к которым осуществлялась привязка до этого. Кроме того, может возникнуть искажение записываемых в журнальный файл данных – некоторые сообщения могут оказаться потерянными.
Разработанная программа позволяет удаленно наблюдать за состоянием компьютера, работающего под управлением операционной системы Linux. В программе реализована частичная поддержка протокола HTTP/1.1, что позволяет подключиться к ней с помощью браузера, работающего под управлением любой современной операционной системы. Также программа с минимальными изменениями может быть перенесена на большинство современных UNIX-подобных систем в силу того, что при разработке использовались исключительно средства APIPOSIX.
Программа полностью удовлетворяет требованиям технического задания, обеспечивая:
· Возможность гибкой настройки программы, в том числе ее привязка к любому адресу и порту.
· Возможность одновременной обработки запросов от удаленных клиентов за счет использования механизма многопоточности.
· Возможность ограничения количества одновременно обрабатываемых запросов.
· Обеспечение безопасности за счет необходимости указывать имя пользователя и пароль при подключении к серверу; программа использует собственный файл учетных записей.
· Возможность подключения с помощью любого браузера, поддерживающего протокол HTTP/1.0 или HTTP/1.1.
Хотя для решения административных задач уже существуют готовые программные решения, а в качестве HTTP‑сервера в среде Linux, как правило, используется сервер Apache, разработанная программа имеет перед ними определенные преимущества:
· Скорость работы, обеспечиваемая небольшим размером программы и простотой логики ее работы.
· Простота доступа к системной информации Linux.
· Удобочитаемость получаемой информации, что не накладывает требований на квалификацию пользователя.
1. M.Mitchel, J.Oldham, A.Samuel Advanced Linux Programming / Indianapolis, Indiana: Williams, 2004 – 288 с.
2. RFC 1945 – HTTP/1.0 Protocol
3. RFC 2616 – HTTP/1.1 Protocol
4. E.Nemeth, G.Snyder, S.Seebass, T.Hein UNIX System Administration Handbook 3rd Edition / New Jersey: Prentice Hall, 2003 – 925 c., илл.
5. R.Stevens, B.Fenner, A.Rudoff UNIX Network Programming / Addison Wesley, 2003 – 1024 c., илл.