Ich benutze Lua 5.1 und ich möchte einige Dateien sandboxieren. setfenv
mit loadfile
scheint Arbeit, aber ich möchte require
auch verwenden, weil ich Mechanismus von bereitgestellt verwenden möchte. Ich habe einige benutzerdefinierte Loader, um eine Datei zu laden, die sich nicht auf der Festplatte befindet. Ist es möglich? Oder gibt es eine alternative Lösung?setfenv mit require-Funktion in Lua
Antwort
Die Lösung hier scheint ziemlich offensichtlich zu sein: Haben Sie die Datei require
nicht die Datei, die das Modul implementiert. Stattdessen haben Sie die d-Datei loadfile
und Sandbox das eigentliche Modul. Es kann dann dieses Modul zurückgeben.
Entschuldigung, ich verstehe es nicht, wie funktioniert diese Lösung? Um das aktuelle Modul zu laden, muss die 'requeste'd Datei' require' erneut aufrufen. Wie auch immer, ich möchte die Module davon abhalten, Sandkästen zu sein. – Noverull
@Noverull: Deshalb habe ich gesagt, dass Sie das eigentliche Modul "laden". Du benutzt 'require' nicht darauf; Sie verwenden 'loadfile' darauf. Module sind nicht besonders; Sie sind nur Lua-Skripte. –
Es bricht die Verwendung von 'require'. Ich habe einige Dateien, die nicht von 'loadfile' geladen werden können. – Noverull
- 1. Lua Variable Scoping mit Setfenv
- 2. Lua globale Variable mit Pfad zur aktuellen Datei?
- 3. Verwechslung mit debug.getlocal in Lua
- 4. Get html mit lua
- 5. Interprozesskommunikation in Lua
- 6. Multithreading in Lua
- 7. "Bitweises UND" in Lua
- 8. Probleme mit TCP/IP in Lua
- 9. Aufzählungen in Lua?
- 10. Lua heredoc mit variabler Interpolation?
- 11. Klonen einer Lua-Tabelle in Lua C API
- 12. lua in Worte aufgeteilt
- 13. Programmierung in Lua, Objekte
- 14. Deklarationsliste in lua
- 15. Was bedeutet # in Lua?
- 16. Split-Saite in Lua?
- 17. Asynchroner Eingang in Lua
- 18. Funktion erstellen in Lua
- 19. aktuelle Zeilennummer in Lua
- 20. Set Bildgröße in lua
- 21. Selbst entfernen in lua
- 22. Probleme mit Vim und Lua?
- 23. Einen Abschluss mit Lua registrieren
- 24. Erstellen von Gifs mit lua
- 25. Lua Tabellenspeicherleck?
- 26. Lua Aufgabenplanung
- 27. Lua Dezimalzeichen?
- 28. Verkettung von Strings in Lua
- 29. Lua - Initialisierung
- 30. Lua Fehlerbehandlung
Ich habe ein [Lua-Modul] (https://github.com/siffiejoe/lua-modjail) geschrieben, das alle Module so weit wie möglich voneinander isoliert. Ich benutze es nicht mehr selbst, aber vielleicht findest du es interessant ... – siffiejoe