http://nostalgy.org.ru ©2004 М.Бабичев 20 марта 2005 г. Использование MS-DOS в сетях TCP/IP JNOS 1.11a можно использовать в качестве простого Web-сервера. Разумеется, данный сервер имеет некоторые существенные ограничения: не поддерживаются длинные имена файлов и каталогов (они должны иметь имя формата 8+3, то есть не более 8 символов в имени и не более 3 символов в расширении). Это связано с ограничениями файловой системы DOS, под которой работает JNOS. Кроме того, отсутствуют виртуальные хосты, невозможно работать с PHP, MySQL :-) и прочее.
Однако не все так плохо! Данная версия JNOS поддерживает SSI
(Server Side Includes). Механизм SSI позволяет вставлять в веб-страницы
т.н. директивы SSI такого вида: Mon, 14 Mar 2005 11:46:42 +0100 Это - местное время генерации страницы. То есть сервер JNOS, когда мы запросили у него данную страницу, обработал директиву и вставил вместо нее текущее время (ориентируясь по системным часам компьютера). Если просмотреть код открытой браузером веб-страницы (меню "Вид" - "В виде HTML" в Internet Explorer), мы не увидим самой директивы, а только текст "Mon, 14 Mar 2005 11:46:42 +0100". Использование директив SSI существенно расширяет возможности сервера JNOS, позволяя создавать т.н. динамические веб-страницы. То есть код этих страниц будет изменяться в зависимости от внешних обстоятельств, например, текущего времени, типа браузера, количества загрузок страницы. Более того. Мы можем одной директивой вставить в одну страницу содержимое другой веб-страницы. Это позволяет легко и просто организовывать единый дизайн всего сайта: на всех страницах сайта помещать одинаковые верхние и нижние колонтитулы, меню... Колонтитулы и меню будут храниться в отдельных файлах HTML. Изменив один такой файл мы сразу меняем дизайн всего сайта с множеством страниц. Это очень удобно! И наконец, мы легко можем организовать статистику (счетчики посещений) на нашем сервере JNOS! В NOS.CFG - файле конфигурации JNOS есть строка типа: HttpStatsDir = c:/ka9nos/wwwstats В ней содержится путь к каталогу, в котором размещаются файлы счетчиков. Вставив в веб-страницу соответствующую директиву, вы создадите файл-счетчик, содержимое которого будет увеличиваться при каждой загрузке страницы. При желании можно отобразить значение счетчика на экране. Вот список директив SSI, поддерживаемых сервером JNOS: echo var="DATE_LOCAL" - отобразить дату и время. Дата и время берутся на сервере из системных часов компьютера echo var="DATE_GMT" - отобразить дату и время по Гринвичевскому меридиану. Дата и время также берутся из системных часов сервера и сдвигаются относительно локального времени echo var="HOSTNAME" - отобразить доменное имя сервера JNOS. Если сервер не имеет имени (а только IP-адрес), будет отображен IP-адрес. echo var="DOCUMENT_URI" - отобразить идентификатор данной страницы (относительный путь). Для страницы, находящейся в корневом каталоге сервера, идентификатор будет выглядеть как "/". Если, например, страница с именем "2.HTM" находится в подкаталоге "1" сервера, идентификатор будет такой: "/1/2.htm" echo var="DOCUMENT_NAME" - отобразить имя и путь данной страницы. Например, если страница с именем 2.HTM находится в подкаталоге "1" сервера, значение переменной DOCUMENT_NAME будет такое: /1/2.htm. Для главной страницы значение переменной будет root.html (хотя сам файл имеет имя ROOT.HTM). Более любопытный случай, когда через директиву "include virtual" в одну страницу вставляется другая, содержащая переменную DOCUMENT_NAME. Если мы, например, к главной странице подключим упомянутую выше страницу 2.HTM, значение переменной будет такое: c:\ka9nos\www\1\2.htm (корневой каталог WWW-сервера c:\ka9nos\www, сам сервер находится в c:\ka9nos). На мой взгляд это - "дыра" в системе защиты, позволяющая хакеру узнать, на каком диске и в каком каталоге находится сервер или корневая веб-директория echo var="LAST_MODIFIED" - отобразить дату и время последней модификации (изменения) данной веб-страницы на сервере echo var="TOTAL_HITS" - отобразить общее количество обращений к веб-серверу (запросов на открытие всех веб-страниц). Это число берется из файла-счетчика TCOUNT.DAT из каталога статистики. Файл TCOUNT.DAT создается и инкрементируется при запросах к серверу независимо от директив SSI echo var="REQ_REFERER" - отобразить ссылку на веб-страницу, загруженную ранее. Некоторые браузеры посылают серверу информацию о URL предыдущей страницы, и сервер использует эти данные при обработке данной директивы. Некоторые браузеры, впрочем, ничего не сообщают серверу. А браузер Arachne 1.70 ссылается на официальный сайт Arachne. Это его право :-) echo var="REQ_AGENT" - отобразить название и версию браузера клиента. Опять же, эта информация поставляется веб-серверу самим браузером по желанию. Некоторые браузеры просто сообщают серверу свое название и версию (Internet Explorer). Некоторые (Arachne) кроме того, указывают разрешение экрана, версию DOS и прочее. Хитрее всех Opera: в ней пользователь может выбрать, что Opera будет сообщать серверу - свое название и версию, либо определенную версию Internet Explorer. Иногда это бывает полезно echo scount="FILENAME" - увеличить значение счетчика на единицу при загрузке веб-страницы с данной директивой. Файл счетчика с именем FILENAME хранится в каталоге статистики, путь к которому указан в файле NOS.CFG (см. выше параметр HttpStatsDir). Имя файла может быть любое допустимое, файлов-счетчиков может быть множество echo dcount="FILENAME" - отобразить при загрузке веб-страницы значение счетчика, хранящегося в файле FILENAME в каталоге статистики. Значение счетчика при этом не меняется.
echo icount="FILENAME" - отобразить и увеличить на единицу
значение счетчика, хранящегося в файле FILENAME в каталоге
статистики. Применение этой директивы аналогична одновременному
использованию двух предыдущих на одной веб-странице.
Например, директивой
include virtual="PATH" - самая "мощная" директива! Позволяет
"вставить" содержимое одной веб-страницы, путь к которой
указан в директиве, в другую веб-страницу в том месте, где
находится директива include. Вставка производится на сервере,
клиент (браузер) получает уже объединенную страницу. Например,
если вставить в файл ROOT.HTM, лежащий в корневом каталоге,
строку
Еще раз напомним, что главная страница сервера должна иметь
имя ROOT.HTM и располагаться в корневом каталоге веб-сервера.
Путь к корневому каталогу сервера на диске указывается
в файле NOS.CFG в строке типа:
А вот главной странице какого-либо подкаталога следует
присвоить имя WELCOME.HTM. Например, если адрес сервера JNOS
192.0.1.1 (как у меня), а в корневом каталоге сервера
создан подкаталог "1", где помещена страница WELCOME.HTM,
то для того, чтобы увидеть эту страницу, достаточно ввести
в строке браузера адрес
Отдельно поговорим о файле ACCESS.WWW, который позволяет
разграничивать доступ разным пользователям к различным
ресурсам сервера. Во-первых, в любом случае файл ACCESS.WWW
должен присутствовать в каталоге /SPOOL сервера JNOS.
Путь к этому каталогу задается в файле NOS.CFG строкой
типа: Итак, для того, чтобы разрешить доступ к одному из каталогов веб-сервера только авторизованному пользователю, надо в файл ACCESS.WWW вставить строку вида: /path Zone user:password
Где /path - путь к закрытому каталогу, относительно корневого
каталога сервера. Zone - название закрытой нами области
сервера (отображается в браузере, в окне авторизации).
user:password - имя пользователя и пароль, закодированные в
формате MIME64. Для того, чтобы задать имя и пароль, нам
понадобится любая утилита, работающая с форматом MIME64/BASE64.
Подходящую утилиту вы можете скачать отсюда:
Поясним все на примере. Пусть у вас есть данная утилита,
MIME64.EXE. В одном каталоге с ней создайте файл, например
IN.TXT и запишите в него строку: Теперь вы хотите закрыть от посторонних подкаталог "1" сервера. В ACCESS.WWW запишем строку: /1 СекретныеФайлы YWRtaW46MTIzNA== Здесь /1 - адрес каталога "1", "СекретныеФайлы" - название нашей закрытой области (мы увидим его при вводе пароля). "YWRtaW46MTIzNA==" - закодированные в MIME64 имя и пароль. А если мы желаем закрыть каталог "1" от ВСЕХ, пишем в ACCESS.WWW такую простую строку: /1 И тогда никто не сможет войти в этот каталог. В какой кодировке делать веб-страницы? В любой! Хоть в KOI-8R, хоть в WIN-1251. Или даже в DOS-866. Сервер JNOS без проблем предоставляет такие страницы пользователю. Главное, чтобы с данной кодировкой нормально работал браузер пользователя. Чтобы все подумали, что у вас сервер UNIX, используйте кодировку KOI-8R :-). В противном случае удобнее использовать кодировку Windows. Зачем вообще нужен веб-сервер JNOS? Ведь есть гораздо более мощные серверы, например Apache. Отвечаю: основное назначение JNOS - маршрутизировать сеть. Старенький дешевый компьютер с DOS+JNOS позволяет соединять вместе несколько сегментов сети, а также соединять локальную сеть с глобальной через сетевую карту или модем (по линии PPP). Значит этот компьютер должен работать круглосуточно или по крайней мере тогда, когда локальной сетью кто-то пользуется. А если маршрутизатор постоянно работает, почему бы не разместить на нем еще и сайт, который к тому же можно обновлять по FTP? Конечно, форум или гостевую на этом сайте сделать сложно, но это не всегда нужно. Например, если JNOS соединяет сеть кафедры института с сетью всего института, на сервере JNOS будет вполне уместен сайт кафедры, где будет вкратце рассказано о кафедре, о сотрудниках; где можно разместить расписание занятий, учебные планы и пособия; где наконец, будут находиться "домашние страницы" студентов, обновляемые студентами через FTP. Помимо всего прочего, на сервере JNOS легко организовать хранилище файлов: общий каталог, доступный всем для чтения, и специальные "домашние" каталоги пользователей, доступные только пользователям-владельцам. Разумеется, сервер JNOS может найти аналогичное применение и в частной фирме, школе, гимназии или домашней сети... Антиквар |