Apache Версия 2.0 Сервера HTTP
версия 1.3 Apacheского Сервера HTTP - первая версия, которая включает порт в (не-ASCII) машина универсальной ЭВМ, которая использует набор символов расширенного двоично-десятичного кода как его родной codeset.
(это - семья SIEMENS универсальных ЭВМ, управляющих BS2000/OSD operating system . этот РОТ универсальной ЭВМ в настоящее время показывает SVR4-полученную подсистему POSIX).
порт был начат первоначально к
этот документ служит объяснением, чтобы описать некоторые из решений проекта порта на эту машину.
одна цель порта расширенного двоично-десятичного кода состояла в том, чтобы поддержать достаточно назад совместимость с (расширенный двоично-десятичный код) сервер CERN, чтобы сделать переход к новому серверу привлекательным и легким. Это требовало, чтобы дополнение конфигурируемого метода определило, был ли документ HTML сохранен в ASCII (единственный формат, принятый старым сервером) или в расширенном двоично-десятичном коде (родной формат документа в подсистеме POSIX, и поэтому единственный реалистический формат, в который другие инструменты POSIX как
grep
или
sed
мог работать на документах). Текущее решение этого - "псевдо формат пантомимы", который перехвачен и интерпретируется Apacheским сервером (см. ниже). Будущие версии могли бы решить проблему, определяя "ebcdic-тренера" для всех документов, которые должны быть преобразованы.
начиная со всего Apacheского входа и продукции основано на типе данных ЛЮБИТЕЛЯ и его методах, самое легкое решение состояло в том, чтобы добавить преобразование в ЛЮБИТЕЛЯ, обращающегося с рутинами. Преобразование должно быть settable в любое время, таким образом флаг ЛЮБИТЕЛЯ был добавлен, который определяет, позволял ли объект ЛЮБИТЕЛЯ в настоящее время преобразование или нет. Этот флаг изменен в нескольких пунктах в протоколе HTTP:
уместные изменения в источнике
#ifdef
'редактор в две категории:
#ifdef CHARSET_EBCDIC
кодекс, который необходим для любого расширенного двоично-десятичного кода, базировал машину. Это включает переводы характера, различия в смежности этих двух наборов символов, флаги, которые указывают, какая часть протокола HTTP должна быть преобразована и который не делает часть и т.д.
#ifdef _OSD_POSIX
кодекс, который необходим для SIEMENS платформа универсальной ЭВМ BS2000/OSD только. Это имеет дело с, включают различия файла и темы выполнения гнезда, которые только требуются на платформе BS2000/OSD.
возможность перевести между ASCII и расширенным двоично-десятичным кодом на уровне гнезда (на BS2000 POSIX, есть выбор гнезда, который поддерживает это) была преднамеренно
нет
выбранный, потому что поток байта на уровне протокола HTTP состоит из смеси связанных протоколом верениц и связанных непротоколом сырых данных файла. Вереницы протокола HTTP всегда кодируются в ASCII (
GET
запрос, любой Удар головой: линии, большая информация
и т.д.
), тогда как части передачи файла (
то есть.
, ДЖИФ отображает, продукция CGI
и т.д.
) нужно обычно только "проходить" сервером. Это разделение между "вереницей протокола" и "сырые данные" отражено в кодексе сервера функциями как
bgets()
или
rvputs()
для верениц, и функций как
bwrite()
для двоичных данных. Глобальный перевод всего поэтому был бы неадекватным.
(в случае файлов текста конечно, должны быть сделаны условия так, чтобы документам расширенного двоично-десятичного кода всегда служили в ASCII),
этот порт поэтому показывает встроенное преобразование уровня протокола для внутренних сервером верениц (который компилятор перевел к вереницам расширенного двоично-десятичного кода), и таким образом для всех произведенных сервером документов. Твердое закодированное спасение ASCII
\012
и
\015
которые являются вездесущими в кодексе сервера - исключение: они - уже двойное зашифровывание ASCII
\n
и
\r
и не должен быть преобразован к ASCII во второй раз. Это исключение только уместно для произведенных сервером верениц; и
внешний
документы расширенного двоично-десятичного кода, как ожидают, не будут содержать ASCII newline характеры.
исследуя иерархию запроса на рутины управления ЛЮБИТЕЛЯ, я добавил "ebcdic/ascii конверсионный слой", который будет пересечен на каждом, помещает/пишет/получает/получает, и конверсионный флаг, который позволил предоставлению возможности/выведению из строя непрерывные преобразования. Обычно, документ пересекает этот слой дважды из его источника происхождения (файл или продукция CGI) к его предназначению (клиент требования):
file -> Apache
, и
Apache -> client
.
сервер может теперь прочитать линии удара головой продукции CGI-подлинника в формате расширенного двоично-десятичного кода, и затем узнать, что остаток от продукции подлинника находится в ASCII (как в случае продукции программы Прилавка WWW: тело документа содержит изображение ДЖИФА). Вся обработка удара головой сделана в родном формате расширенного двоично-десятичного кода; сервер тогда определяет, основанный на типе служившего документа, находится ли тело документа (за исключением большой информации, конечно) в ASCII уже или должен быть преобразован из расширенного двоично-десятичного кода.
Для документов Текста (текст/равнина типов MIME, текст/HTML и т.д. ), неявный перевод на ASCII может использоваться, или (если пользователи предпочитают хранить некоторые документы в сырой форме ASCII для более быстрого обслуживания, или потому что файлы проживают на УСТАНОВЛЕННОМ NFS директивном дереве), можно служить без преобразования.
пример:
служить файлам с суффиксом
.ahtml
как сырой ASCII
text/html
документ без неявного преобразования (и суффикс
.ascii
как ASCII
text/plain
), используйте директивы:
AddType text/x-ascii-html .ahtml
AddType text/x-ascii-plain .ascii
точно так же любой
text/foo
типу ПАНТОМИМЫ можно служить как "сырой ASCII", формируя тип MIME "
text/x-ascii-foo
"для этого использование
AddType
.
документам нетекста всегда служат "набор из двух предметов" без преобразования. Это, кажется, самый заметный выбор для.
например.
, GIF/ZIP/AU типы файла. Это конечно требует, чтобы пользователь скопировал их хозяину универсальной ЭВМ, использующему "
rcp -b
"двоичный переключатель.
разобранные файлы сервера, как всегда предполагают, находятся в уроженце ( то есть. , расширенный двоично-десятичный код), форматируют как используется на машине, и преобразованы после обработки.
Для продукции CGI, определяет подлинник CGI, необходимо ли преобразование или нет: устанавливая соответствующий Довольный тип, файлы текста могут быть преобразованы, или через продукцию ДЖИФА можно пройти неизмененный. Пример для последнего случая - wwwcount программа, которую мы перенесли также.
все файлы с a
Content-Type:
который не начинается с
text/
расценены как
бинарные файлы
сервером и не подчиненными любому преобразованию. Примеры для бинарных файлов - изображения ДЖИФА, gzip-сжатые файлы и т.п..
обменивая бинарные файлы между хозяином универсальной ЭВМ и машиной Unix или PC Windows, убедитесь, что использовали программу передачи файлов "набор из двух предметов" (
TYPE I
) команда, или использование
rcp -b
команда от хозяина универсальной ЭВМ (
-b
выключатель не поддержан в unix
rcp
's).
предположение по умолчанию о сервере - те Файлы Текста (
то есть.
, все файлы, чей
Content-Type:
запуски с
text/
) сохранены в родном наборе символов хозяина, расширенного двоично-десятичного кода.
документы ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ должны в настоящее время сохраняться в расширенном двоично-десятичном коде только. Никакое условие не сделано преобразовать это из ASCII перед обработкой.
модуль | статус | примечания |
---|---|---|
core
|
+ | |
mod_access
|
+ | |
mod_actions
|
+ | |
mod_alias
|
+ | |
mod_asis
|
+ | |
mod_auth
|
+ | |
mod_auth_anon
|
+ | |
mod_auth_dbm
|
? |
с собственным
libdb.a
|
mod_autoindex
|
+ | |
mod_cern_meta
|
? | |
mod_cgi
|
+ | |
mod_digest
|
+ | |
mod_dir
|
+ | |
mod_so
|
- | никакие разделенные lib |
mod_env
|
+ | |
mod_example
|
- | (проверьте кровать только), |
mod_expires
|
+ | |
mod_headers
|
+ | |
mod_imap
|
+ | |
mod_include
|
+ | |
mod_info
|
+ | |
mod_log_agent
|
+ | |
mod_log_config
|
+ | |
mod_log_referer
|
+ | |
mod_mime
|
+ | |
mod_mime_magic
|
? | не перенесенный все же |
mod_negotiation
|
+ | |
mod_proxy
|
+ | |
mod_rewrite
|
+ | непроверенный |
mod_setenvif
|
+ | |
mod_speling
|
+ | |
mod_status
|
+ | |
mod_unique_id
|
+ | |
mod_userdir
|
+ | |
mod_usertrack
|
? | непроверенный |
модуль | статус | примечания |
---|---|---|
mod_jserv
|
- | ЯВА, все еще перенесенная. |
mod_php3
|
+ |
mod_php3
прекрасные пробеги, с LDAP и GD и библиотеками FreeType.
|
mod_put
|
? | непроверенный |
mod_session
|
- | непроверенный |