Apache EBCDIC 端口

Warning

警告: 本文档尚未更新,未考虑到 Apache HTTP Server 2.0 版中所做的更改。一些信息可能仍然有用,但是请谨慎使用。

Apache EBCDIC 端口概述

Apache HTTP Server 的 1.3 版是第一个版本,其中包括(非 ASCII)大型机机器的端口,该主机使用 EBCDIC 字符集作为其本机代码集。

(这是运行BS2000/OSD os的 SIEMENS 大型机系列。如今,该大型机 OS 具有源自 SVR4 的 POSIX 子系统)。

该端口最初开始于

本文档是描述本机端口的某些设计决策的依据。

Design Goals

EBCDIC 端口的一个目标是保持与(EBCDIC)CERN 服务器的足够的向后兼容性,以使向新服务器的转换有吸引力且容易。这就需要添加一种可配置的方法来定义 HTML 文档是以 ASCII(旧服务器接受的唯一格式)还是以 EBCDIC(POSIX 子系统中的本机文档格式)存储,因此是唯一的实际格式。其他 POSIX 工具(例如grepsed可以在文档上操作)。当前的解决方案是由 Apache 服务器拦截并解释的“伪 MIME 格式”(请参阅下文)。将来的版本可能会通过为所有必须转换的文档定义一个“ ebcdic-handler”来解决该问题。

Technical Solution

由于所有 Apache Importing 和输出均基于 BUFF 数据类型及其方法,因此最简单的解决方案是将转换添加到 BUFF 处理例程中。必须随时可以设置转换,因此添加了 BUFF 标志,该标志定义 BUFF 对象当前是否已启用转换。该标志在 HTTP 协议中的几个地方被修改:

Porting Notes

(当然,对于文本文件,必须做出规定,以便始终以 ASCII 形式提供 EBCDIC 文档)

服务器现在可以读取 EBCDIC 格式的 CGI 脚本输出的标题行,然后发现脚本输出的其余部分为 ASCII(就像 WWW Counter 程序的输出一样:文档主体包含 GIF 图片)。所有 Headers 处理均以本机 EBCDIC 格式完成;然后,服务器根据提供的文档类型确定文档主体(当然,除分块信息外)是否已经是 ASCII 格式,或者是否必须从 EBCDIC 转换而来。

Example:

要在不进行隐式转换的情况下将后缀.ahtml作为原始 ASCII text/html文档提供文件(后缀.ascii作为 ASCII text/plain),请使用以下指令:

AddType text/x-ascii-html .ahtml AddType text/x-ascii-plain .ascii

同样,通过使用AddType配置 MIME 类型“ text/x-ascii-foo”,可以将任何text/foo MIME 类型用作“原始 ASCII”。

文件存放注意事项

Binary Files

服务器将所有带有Content-Type:且不以text/开头的文件视为二进制文件,并且不进行任何转换。二进制文件的示例是 GIF 图像,gzip zipfile 等。

在大型机主机和 Unix 计算机或 Windows PC 之间交换二进制文件时,请确保使用 ftp“ binary”(TYPE I)命令,或从大型机主机使用rcp -b命令(Unix rcp中不支持-b开关' s)。

Text Documents

服务器的默认假设是文本文件(,即 Content-Type:text/开头的所有文件)存储在主机 EBCDIC 的本机字符集中。

服务器端随附的文档

SSI 文档当前必须仅存储在 EBCDIC 中。没有规定在处理之前将其从 ASCII 转换。

Apache 模块的状态

Module Status Notes
core +
mod_access +
mod_actions +
mod_alias +
mod_asis +
mod_auth +
mod_authn_anon +
mod_authn_dbm ? 拥有自己的libdb.a
mod_authz_dbm ? 拥有自己的libdb.a
mod_autoindex +
mod_cern_meta ?
mod_cgi +
mod_digest +
mod_dir +
mod_so - 没有共享库
mod_env +
mod_example - (仅限测试床)
mod_expires +
mod_headers +
mod_imagemap +
mod_include +
mod_info +
mod_log_agent +
mod_log_config +
mod_log_referer +
mod_mime +
mod_mime_magic ? 尚未移植
mod_negotiation +
mod_proxy +
mod_rewrite + untested
mod_setenvif +
mod_speling +
mod_status +
mod_unique_id +
mod_userdir +
mod_usertrack ? untested

第三方模块的状态

Module Status Notes
JK(以前称为 mod_jserv) - JAVA 仍在移植。
mod_php3 + mod_php3使用 LDAP 和 GD 及 FreeType 库运行良好。
mod_put ? untested
mod_session - untested
首页