Eu gostaria de uma opção que é uma função que leva vm2
require
como um argumento e retorna uma nova função que deve ser usada em vez de vm2
require
.
Algo relevante: estou usando um sistema de arquivos personalizado para o código enviado pelo usuário. Existe uma maneira de lidar manualmente com as necessidades locais, como require('./otherUserSubmittedFile')
, obtendo o arquivo do sistema de arquivos personalizado e entregando-o a vm2
para o sandbox?
Atualização :
Muito rudimentar, mas implementou algo na linha de arquivos personalizados / virtuais: https://github.com/bartjoyce/vm2-with-custom-fs
O uso seria algo assim:
NodeVM.file('/customfs/main.js', {
require: {
external: true,
root: '/customfs/', // restrict local requires to within the custom fs
},
customfs: {
getFileContents: (filename) => /* handle /customfs/ file read */,
exists: (filename) => /* ... */,
isDirectory: (filename) => /* ... */
}
})
@bartjoyce Eu preciso da mesma coisa! Seu link está quebrado, você o moveu para algum lugar?
@callumlocke Desde então, mudei para outros projetos e parei de manter o código. O código que escrevi está aqui: https://github.com/bartjoyce/vm2/
São 30 commits atrás, mas pelo menos você pode ver as modificações que fiz.
Compromisso importante é este: https://github.com/bartjoyce/vm2/commit/302e910610c0e1f1ef7a1d15a19a02828715f630
Fiz alterações adicionais em vm2 que não estão em meu repo. Se você quiser ver também, me avise.
Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.
Comentários muito úteis
Algo relevante: estou usando um sistema de arquivos personalizado para o código enviado pelo usuário. Existe uma maneira de lidar manualmente com as necessidades locais, como
require('./otherUserSubmittedFile')
, obtendo o arquivo do sistema de arquivos personalizado e entregando-o avm2
para o sandbox?Atualização :
Muito rudimentar, mas implementou algo na linha de arquivos personalizados / virtuais: https://github.com/bartjoyce/vm2-with-custom-fs
O uso seria algo assim: