支持在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产品的包或模块时要小心 在产品目录中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
未处理java Google PubSub-resent消息   java CannotAcquireLockException+LockAcquisitionException   atlassian fisheye如何处理“C:\Program Files\Java\jre7\bin\server\JVM.dll”中缺少“服务器”JVM的问题   jboss 6.3 eap linux环境中ear部署中的java问题   java SQL顺序字符串主键   java ascii shift程序几乎适用于整个字符串   java中excel工作表中的一条记录插入多条记录所需的sql逻辑   java这个方法如何计算Rational(1)。hashCode()?1的分子或分母本身就是1   java为什么在循环中的数组中分配引用后会出现NullPointerException?   java Seam 2中内置工厂的优势是什么   远程运行Java项目的eclipse   标记化Java中的标记化源代码   java从大文件中读取前缀后的值   java使用EntityManager调用PostgreSQL过程   java阅读行每隔一行跳过一行