Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support FAQs Entwicklung PythonScripts Ich möchte innerhalb eines PythonScripts Standard Python Module wie "re" oder "os" benutzen. Beim Ausführen meldet Zope jedoch immer eine "Unauthorized" Exception.
Eine Ebene höher

Frage

Ich möchte innerhalb eines PythonScripts Standard Python Module wie "re" oder "os" benutzen. Beim Ausführen meldet Zope jedoch immer eine "Unauthorized" Exception.

Antwort

Alle PythonScript werden innerhalb von Zope in einer Sandbox mit eingeschränkten Rechten ausgeführt. Nur eine kleine Anzahl von Modulen kann direkt importiert werden.

Wenn man andere Module zulassen will so muß man den Instruktionen in "lib/python/Products/PythonScripts/README.txt" folgen:

  • unter lib/python/Products ein neues Verzeichnis "GlobalModules" anlegen
  • innerhalb des neuen Verzeichnisses eine Datei names "__init__.py" anlegen
  • editieren Sie __init__.py und rufen Sie die allow_module Methode auf (zu Importieren aus Products.PythonScripts.Utility).

    Beispiel:

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

Wenn man vollen Zugriff auf alle Python Module benötigt, sollte man drüber nachdenken, ob man den Code nicht besser in einer ExternalMethod oder gleich in einem Filesystem-basierten Zope Produkt unterbringt.

Als weitere Alternative kann man TrustedExecutables von Dieter Maurer verwenden. Diese implementieren PythonScript und Pagetemplate Funktionalitäten ohne jegliche Sicherheitschecks. Achtung: TrustedExecutables sollte man wirklich nur dann und dort einsetzen, wenn man sich über die Sicherheitsauswirkungen genaustens im Klaren ist.


Letzte Änderung: 30.04.2006 • Autor: ajung