Rockety的 Karrigell 使用体验

1. Karrigell

1.1. 配置文件

配置选项在配置文件中设定。默认为服务器目录中的Karrigell.ini。你可以在命令行把它设为其它的文件。

配置文件分为几个部分:

1.1.1. [Directories]

root

设置root选项为根目录的完整路径,你从那里发布文档。初始安装这一项没有设定,默认为服务器目录。

protected

受保护目录列表;对于这些目录中的每个脚本,执行前都会先执行一个叫AuthentScript.py的脚本。这个AuthentScript.py必须由管理员创建并放进目录。

默认,只有admin目录是受保护的。用“;”分割来添加更多的目录。

allow_directory_listing

如果一个url对应的目录没有index文件,由本项来决定谁可以看这个目录的内容:

all = 所有人

none = 没有人

admin = 只有管理员 - 它的登录密码由admin目录中的k_password.py来配置。

默认值是“admin”。

1.1.2. [Applications]

映射扩展名的MIME类型;据我所知这可以在Netscape上工作,但IE上不行。

1.1.3. [Alias]

你可以为某个目录指定一个别名。例如,如果你创建这个别名:scripts = C:\My Documents\Karrigell scripts,那么[http://localhost/scripts/index.htm]这个url就会访问c:\My Documents\Karrigell scripts\index.htm这个文件。

1.1.4. [Server]

port

设置服务器端口(默认为80)

debug

这个选项指定debug级别。如果设置为1,所有被导入的模块在每次导入时都会被重置,所以如果你改动了某个被导入的脚本你也不必重启服务器。

silent

如果这个选项被设置为1,控制台窗口就不打印任何消息。

zip

如果这个选项被设置为1,并且用户代理支持gzip编码(大多数浏览器支持),服务器压缩发送给用户代理的数据。这减少用户网络负荷,但多少会增加一点服务器的负荷。

global

这个选项指定所有脚本运行时需要导入的模块的路径。如果有这样一行:

   global = %(base)s/myScript.py; %(base)s/myScript.py

则myScript和myScript模块都可以在所有脚本的名称空间中可用。

ignore

如果找不到就忽略的url列表(返回HTTP代码204而不是404)。默认忽略/favicon.ico。

1.1.5. [Translation]

指定应用程序使用的语言,无论浏览器的该选项是什么。如果不想做任何转译,就设置为lang=default,如果想使用英语,设置为lang=en,以此类推。

装载配置文件前karrigell设定了一个基本变量,它的值是服务器目录。参考默认配置文件Karrigell.ini中的%(base)s/。

1.2. 编程

在karrigell中编程有几中风格:

它们都会在这份文档中被描述,它们都使用同样的方式访问HTTP环境和表单域。

1.2.1. 访问HTTP环境

HTTP环境访问可以通过脚本名称空间中的全局变量来完成:

print HEADERS

将会得到:

{'accept-language': 'zh-cn,zh;q=0.5', 'accept-encoding': 'gzip,deflate', 'keep-alive': '300', 'accept': 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'user-agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.12) Gecko/20050919 Firefox/1.0.7', 'accept-charset': 'gb2312,utf-8;q=0.7,*;q=0.7', 'connection': 'keep-alive', 'cookie': 'sessionId=XWPqs2hw', 'host': 'localhost'}

大小写不敏感

{'Content-Type': 'text/html'}