cFos PNet 带有的脚本将向用户展示 Javascript 是如何实现服务器功能的。它们被设计为针对客户端浏览器的脚本处理(就像 jQuery)。按照惯例,客户端使用扩展名为 .js 的脚本时,服务器端使用的是扩展名为 .jss 脚本。就是说,cFos PNet “执行”了 .jss 文件,同时发送给浏览器 .js 文件。
您可使用 Visual studio 或 Visual Web Developer 调试脚本。要进行脚本调试,您首先需安装支持远程调试的 Visual studio 或 Visual Web Developer,比如 Visual studio 专业版。设置 c:\programdata\cFos\cFosPNet 文件夹内 GLOBAL.INI 文件 [param] 字段中的 enable_script_debugging=1 的键值来启用脚本调试。
如果您未安装脚本调试器,请将键值设为 0。否则脚本会一直处于暂停状态。您也可通在运行 cfospnet.exe 时添加 -enable_script_debugging 或 -esd 参数来开/关脚本调试。
pub 文件夹内有一个名为 users 的子文件夹,其中又包含拥有 cFos PNet 帐号的用户所对应的各个子文件夹。 用户密码或一些可选填的用户数据被储存在一个名为 PROFILE.TXT 的哈希表中。通过 cFos PNet 内置 HTTP 身份认证而快速登录。pub 文件夹中还有一个名为 www 的子文件夹,其中也有每个用户对应的子文件夹。这个文件夹包含对应用户的可被下载文件。file_op.jss 控制用户能否向此文件夹上传文件。
此脚本根据各个 .htaccess 中的设置来进行认证。因此,您需要获得操作这些目录的相应用户权限。
这里对脚本进行简要描述。您可通过查看源代码了解这些脚本是如何运行的。 | |
makedir2.jss | 如果请求目录中不存在 index.htm 或 index.html 文件,cFos PNet 便会调用此脚本生成目录列表。 脚本利用文件系统对象收集现有目录内容信息。之后载入并解析 XML 模板文件,根据目录内容和 XML 提供的代码生成 HTML 页面。通过修改 XML 模板可更改页面外观或功能性目录。生成的 HTML 文件带有基础的文件维护链接。管理员通过身份验证后可以重命名、删除文件或文件夹,上传文件和新建文件夹。同时,这些操作在客户端的 JQuery 也可以做到,它已普遍用于向 cFos PNet 发送 Ajax 请求。服务器端的 file_op.jss 脚本主要控制 HTTP 身份验证和文件操作功能。 |
file_op.jss | 执行文件操作前需通过身份验证。文件的操作有 重命名, 删除, 新建文件夹。上传需要进行身份验证。由于浏览器总是先将文件全部上传至服务器然后再获取身份验证信息,这会使得文件被重复上传。所以 file_op.jss 的预上传及先发送身份验证信息给浏览器的操作可以避免文件重复上传。浏览器使用 Ajax 请求,向服务器请求 HTTP 身份验证响应(401),之后就可以进行上传了。上传被 upload.jss 重的一个方法控制,该方法使用 cFos PNet 文件对象以上传任意大小文件。 |
user_op.jss | 执行基本用户管理功能: 新建用户, 删除用户, 重置密码 和 打印用户列表。身份验证需要管理员权限。 |
list_op.jss | 因为哈希列表在 cFos PNet 中十分重要,list_op.jss 提供了可以被 Ajax 请求访问的基本列表操作。这需要进行如上文所描述的身份验证。具体来说就是:依据脚本所在的用户选择的必须被验证权限的目录来决定。验证根据在 .htaccess 中指定的 PNet_limitPut来进行。list_op.jss 提供以下操作: get 得到哈希列表中的项的列表。 set 把一个列表的键的值设置为一个列表的值。 save把快照保存到磁盘。 erase Erases a list of keys. clear 清除所有键。 remove 从内存或磁盘中删除列表。 size 返回列表尺寸。 list 列出哈希表中的所有元素。 dyndns.htm 中的 Ajax 使用这些操作来配置 DynDNS。 |
dyndns.jss | 使用私人文件夹中哈希表 dyndns.txt 的配置数据执行 DynDNS 注册或注销功能。 此功能可在服务器启动和关闭时生效(详细配置请看第一章)。 |
get_connections.jss | 用于显示现有 HTTP 连接。HTTP 通过 TCP 向服务器端发送请求。为了加快 HTTP 请求的传送速度,浏览器会再次尝试建立 TCP 连接。实际上,HTTP 请求包只包含一小段信息和一条响应。传送完毕后,浏览器会在几秒内关闭 TCP 连接。所以只能在很短时间内看到使用者的踪影。如果身份验证通过,用户名会随用户 IP 地址同时传回。 |
stretch.jss | 对于网络管理人员而言,将图像调整为适用于网页的尺寸始终是一种负担,所以我们实现了一些使用 cFos PNet 图形对象(GDI+)技术的脚本。它在 URL 查询字符串中加入了文件名,宽(w)和高(h) 3 个参数。如果您提供的图像为任意大小,那您应当只用一个参数来保持图像的长宽比。makedir2.jss 通过调用脚本来显示现有文件夹中所存储图像的缩略图。 |
utils.jss | 一系列简化服务器端脚本处理的实用功能。拥有以下作用: - 打包 Web 服务器对象及其功能。 - 通过一些实用功能扩展 Javascript 字符串对象的功能。 - 对查询字符串或由 POST 生成的数据进行脚本参数比对。 - 实现通过邮件上传,保存,发送小型文件。 - cookies 中使用的 rfc 1123 日期格式。 - cookies。 - 简单的 XML 转换功能。 如果您使用 cFos PNet 运行大型项目,您最好将功能部件打包入模块,而不仅仅是把脚本文件放进去。cFos PNet 支持 common.js 首创的模块参数。 |