Skip to main content

Provides support for restricted execution of Python scripts in Zope 4.

Project description

Overview

The Python Scripts product provides support for restricted execution of Python scripts, exposing them as callable objects within the Zope environment.

Providing access to extra modules

Python script objects have a limited number of “safe” modules available to them by default. In the course of working with Zope, you will probably wish to make other modules available to script objects.

The Utility.py module in the PythonScripts products provides a simple way to make modules available for use by script objects on a site-wide basis. Before making a module available to Python scripts, you should carefully consider the potential for abuse or misuse of the module, since all users with permission to create and edit Python scripts will be able to use any functions and classes defined in the module. In some cases, you may want to create a custom module that just imports a subset of names from another module and make that custom module available to reduce the risk of abuse.

The easiest way to make modules available to Python scripts on your site is to create a new directory in your Products directory containing an __init__.py file. At Zope startup time, this “product” will be imported, and any module assertions you make in the __init__.py will take effect. Here’s how to do it:

  • In your Products directory (either in lib/python of your Zope installation or in the root of your Zope install, depending on your deployment model), create a new directory with a name like “GlobalModules”.

  • In the new directory, create a file named __init__.py.

  • Edit the __init__.py file, and add calls to the ‘allow_module’ function (located in the Products.PythonScripts.Utility module), passing the names of modules to be enabled for use by scripts. For example:

    # Global module assertions for Python scripts
    from Products.PythonScripts.Utility import allow_module
    
    allow_module('base64')
    allow_module('re')
    allow_module('DateTime.DateTime')

    This example adds the modules ‘base64’, ‘re’ and the ‘DateTime’ module in the ‘DateTime’ package for use by Python scripts. Note that for packages (dotted names), each module in the package path will become available to script objects.

  • Restart your Zope server. After restarting, the modules you enabled in your custom product will be available to Python scripts.

Placing security assertions within the package/module you are trying to import will not work unless that package/module is located in your Products directory.

This is because that package/module would have to be imported for its included security assertions to take effect, but to do that would require importing a module without any security declarations, which defeats the point of the restricted Python environment.

Products work differently as they are imported at Zope startup. By placing a package/module in your Products directory, you are asserting, among other things, that it is safe for Zope to check that package/module for security assertions. As a result, please be careful when place packages or modules that are not Zope Products in the Products directory.

Changelog

4.2 (2018-10-11)

  • Add support for Python 3.7.

  • Drop support for Python 3.4.

  • Force recompilation of scripts as the compiled code is now stored on __code__ instead of func_code.

  • Add a Python 3 compatible default script. https://github.com/zopefoundation/Products.PythonScripts/pull/10

  • Fix security declaration for Products.PythonScripts.standard which was broken since version 3.0. https://github.com/zopefoundation/Zope/issues/209

  • Fix HTTP-500 error which occurred when entering code containing a syntax error in a PythonScript. It is now rendered as error message like other errors. (#11)

  • Update the tests to RestrictedPython >= 4.0b4, thus requiring at lest this version. (#17)

  • Update HTML code of ZMI for Bootstrap ZMI. (#16)

  • Drop support for historical versions which no longer exist since Zope 4.0a2.

4.1 (2017-06-19)

  • Add support for Python 3.4 up to 3.6.

4.0.1 (2017-02-06)

  • Remove bobobase_modification_time from edit template.

4.0 (2016-08-06)

  • Add compatibility with webdav changes in Zope 4.0a2.

3.0 (2016-07-18)

  • Remove HelpSys support.

2.13.2 (2012-09-09)

  • Correct module security declaration for our standard module.

2.13.1 (2012-09-09)

  • LP #1047318: Adjust tests.

2.13.0 (2010-07-10)

  • Released as separate package.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Products.PythonScripts-4.2.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Products.PythonScripts-4.2-py2.py3-none-any.whl (32.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file Products.PythonScripts-4.2.tar.gz.

File metadata

  • Download URL: Products.PythonScripts-4.2.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.10.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.7 CPython/2.7.15

File hashes

Hashes for Products.PythonScripts-4.2.tar.gz
Algorithm Hash digest
SHA256 4c2655a6c92eddf29f61bb99141b146e867f248f24af32d751d3a6c93f19c24c
MD5 8f241dbb5dc736c9a92998ae1ea21035
BLAKE2b-256 d97cd1a729e9bc291d93c2bd96449347591f15b78b8e8cdad164d5e855458a7c

See more details on using hashes here.

File details

Details for the file Products.PythonScripts-4.2-py2.py3-none-any.whl.

File metadata

  • Download URL: Products.PythonScripts-4.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 32.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.10.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.7 CPython/2.7.15

File hashes

Hashes for Products.PythonScripts-4.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ed99bbb3ecda066a9d9a7782cccd7b64a20149f47997ced6d65e7b8c6c838eeb
MD5 797deea88de17b2897f0798cca34f04f
BLAKE2b-256 21c3ec1957d96542ebe9fed7336a4bef7b25cf8145eefa41725bd4ffba682f36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page