Skript-Verschlüsselung

In diesem Kapitel erfahren Sie, wie Sie die von Ihnen entwickelten FIRERPA-Module oder -Skripte verschlüsseln. Dieses Kapitel befasst sich nicht mit der Verschlüsselung von Skripten auf Ihrem PC, sondern mit Skripten oder Modulen, die in der integrierten Python-Umgebung von FIRERPA ausgeführt werden. Zum Beispiel Module in /data/usr/module/task, /data/usr/module/extension oder Skripte, die mit dem integrierten Python-Befehl ausgeführt werden. Wir stellen entsprechende Werkzeuge zur Verfügung, um Ihnen dabei zu helfen, dies schnell zu erledigen. In diesem Kapitel erfahren Sie, wie Sie Ihre entwickelten Skripte schützen können.

Die Skript-Verschlüsselung erfolgt durch die Konvertierung von Cython in C und die anschließende Kompilierung in eine .so-Datei. Dies hat keinen großen Einfluss auf die Leistung, aber wir empfehlen, nur die Kernlogik zu verschlüsseln und nicht alle Skriptdateien. Verschlüsseln Sie außerdem keine Dateien von Drittanbieter-Bibliotheken, da dies vergeblich ist. Sie sollten immer dem Prinzip „Nur die eigene Logik verschlüsseln“ folgen.

Build-Tool-Image erstellen

Wir sind stark von Docker abhängig, stellen Sie also bitte sicher, dass Docker bereit ist, bevor Sie fortfahren. Klonen Sie nun https://github.com/firerpa/compiler und erstellen Sie das Image gemäß der Dokumentation oder mit dem folgenden Befehl.

docker build -t compiler .

Skript-Code verschlüsseln

Verwenden Sie den folgenden Befehl, um den Quellcode in das Image zu mappen und zu kompilieren. Unterstützte Architekturen (arch) sind arm, arm64, x86, x86_64, die den verschiedenen Architekturen des FIRERPA-Servers entsprechen. Verschiedene Architekturen sind nicht miteinander kompatibel.

docker run -it --rm -v /source/dir:/data compiler:latest compile.sh --arch arm64 /data/my_important_script.py

Normalerweise erhalten Sie nach Ausführung des Befehls im selben Verzeichnis wie das Skript eine Datei namens my_important_script.cpython-39.so. Benennen Sie diese Datei nicht um. Wenn Sie einen anderen Namen verwenden müssen, sollten Sie den Namen des Skripts direkt ändern. Jetzt können Sie in Ihrem veröffentlichten Skript die entsprechende .py-Quelldatei löschen und stattdessen die .so-Datei einfügen.

Achtung

Wenn Ihr Code kein FIRERPA-Modul (`extension`, `task`) ist und nur aus einer einzigen Datei besteht, kann Python die `.so`-Datei nicht direkt ausführen. Sie müssen zusätzlich ein Einstiegs-`.py`-Skript schreiben, um die verschlüsselte `.so`-Datei zu importieren und zu starten. Wenn es sich um ein Modul handelt, legen Sie es einfach in das entsprechende Verzeichnis und starten Sie den Dienst neu.