mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 09:36:44 +00:00
fix(Code Node): Block selected module imports in python code (#15970)
This commit is contained in:
committed by
GitHub
parent
40850c95b6
commit
1e92729492
@@ -28,6 +28,30 @@ export async function LoadPyodide(packageCacheDir: string): Promise<PyodideInter
|
|||||||
)) as PyodideInterface;
|
)) as PyodideInterface;
|
||||||
|
|
||||||
await pyodideInstance.runPythonAsync(`
|
await pyodideInstance.runPythonAsync(`
|
||||||
|
blocked_modules = ["os"]
|
||||||
|
|
||||||
|
import sys
|
||||||
|
for module_name in blocked_modules:
|
||||||
|
del sys.modules[module_name]
|
||||||
|
|
||||||
|
from importlib.abc import MetaPathFinder
|
||||||
|
from importlib.machinery import ModuleSpec
|
||||||
|
from types import ModuleType
|
||||||
|
from typing import Sequence, Optional
|
||||||
|
|
||||||
|
class ImportBlocker(MetaPathFinder):
|
||||||
|
def find_spec(
|
||||||
|
self,
|
||||||
|
fullname: str,
|
||||||
|
path: Sequence[bytes | str] | None,
|
||||||
|
target: ModuleType | None = None,
|
||||||
|
) -> Optional[ModuleSpec]:
|
||||||
|
if fullname in blocked_modules:
|
||||||
|
raise ModuleNotFoundError(f"Module {fullname!r} is blocked", name=fullname)
|
||||||
|
return None
|
||||||
|
|
||||||
|
sys.meta_path.insert(0, ImportBlocker())
|
||||||
|
|
||||||
from _pyodide_core import jsproxy_typedict
|
from _pyodide_core import jsproxy_typedict
|
||||||
from js import Object
|
from js import Object
|
||||||
`);
|
`);
|
||||||
|
|||||||
Reference in New Issue
Block a user