2017-06-06 1 views
3

Je souhaite partager des modules LUA avec des collègues. Afin d'obtenir la dernière version des modules partagés que je veux stocker et les récupérer avec un serveur Web.exécute lua string en tant que code lua

Ma question est:

Est-il possible de charger directement le code Lua de requête http ou une chaîne?

Je veux réaliser quelque chose comme ça:

module = [[ 
    local sharedModule = {} 
    function sharedModule.greet(name) print("hello " .. name) end 
    return sharedModule 
]] 
greeter = require (module) 
greeter.greet("john") 

Peut-être que ce n'est pas la bonne chose à faire. Y a-t-il une meilleure approche que celle-ci?

+4

Vous recherchez ['load'] (https://devdocs.io/lua~5.3/index#pdf-load). Cependant, je conseillerais d'héberger le module en interne, et de demander aux utilisateurs de le télécharger/l'installer en conséquence. – hjpotter92

+0

@ hjpotter92 Merci pour la réponse rapide. Et merci pour le conseil. Je vais mettre en place un contrôle de sécurité avant d'accéder aux modules lua –

Répondre

2

Il ya a whole section dans Programmation dans Lua consacré à cela. Vos besoins seront directement satisfaits avec loadstring.

Je vérifierais attentivement le code que vous êtes en train d'exécuter, cependant. À tout le moins, la version (exécuter une mauvaise version finirait probablement par toutes sortes de problèmes, si le code en cours d'exécution dépend de l'environnement dans un certain état). Optimisez la somme de contrôle et signez le code, et vérifiez la signature avant de faire quoi que ce soit. Si votre environnement n'est pas protégé, il s'agit essentiellement d'une énorme ouverture de porte dérobée.

Vous pouvez également utiliser la bibliothèque rings pour isoler le code que vous utilisez dans l'environnement Lua lui-même. Il pourrait ne pas être hermétique à la sécurité, mais devrait au moins empêcher le code reçu de planter votre application si/quand il va de travers.