支持在zope中限制执行python脚本。
Products.PythonScripts的Python项目详细描述
产品.pythonscripts
python脚本产品支持 python脚本,将它们公开为zope中的可调用对象 环境。
提供对额外模块的访问
python脚本对象具有数量有限的"安全"模块 默认情况下对他们可用。在与Zope合作的过程中, 您可能希望将其他模块用于脚本 对象。
pythonscripts产品中的utility.py模块提供了 使模块可供脚本对象使用的简单方法 在整个站点范围内。在将模块提供给python之前 脚本,你应该仔细考虑滥用的可能性 或者误用模块,因为所有用户都有权 创建和编辑python脚本将能够使用任何函数 以及模块中定义的类。在某些情况下,您可能希望 创建一个自定义模块,该模块只从 另一个模块并使该自定义模块可用以减少 滥用的风险。
使模块对python脚本可用的最简单方法 您的站点将在产品目录中创建一个新目录 包含一个初始化文件。在zope启动时,这个 "产品"将被导入,并且您所做的任何模块断言 在 初始化中,py 将生效。操作方法如下:
在产品目录中(在 zope安装或在zope安装的根目录中, 根据您的部署模型),创建一个新目录 名字像"globalmodules"。
在新目录中,创建一个名为 .py 的文件
编辑 \u init\uuu.py 文件,并向"allow\u模块"添加调用 函数(位于products.pythonscripts.utility模块中) 传递要启用以供脚本使用的模块的名称。 例如:
# Global module assertions for Python scripts from Products.PythonScripts.Utility import allow_module allow_module('base64') allow_module('re') allow_module('DateTime.DateTime')
此示例添加模块"base64"、"re"和"datetime" "datetime"包中的模块,供python脚本使用。注释 对于包(虚线名称),包路径中的每个模块 将可用于编写对象脚本。
重新启动zope服务器。重新启动后,您启用的模块 在您的定制产品中将提供给python脚本。
在您正在尝试的包/模块中放置安全断言 除非包/模块位于 您的产品目录。
这是因为必须为其 包括要生效的安全断言,但是 需要导入一个没有任何安全性的模块 声明,这违背了 python环境。
Zope Startup进口的产品工作方式不同。 通过在产品目录中放置包/模块,您可以 断言,除其他外,zope检查是安全的 用于安全断言的包/模块。因此,请 放置非zope产品的包或模块时要小心 在产品目录中。