Я пытаюсь получить clj-sandbox, чтобы разрешить def
и defn
.Ошибка Clj-Sandbox?
У меня не было никаких проблем с получением def
работы:
(use 'net.licenser.sandbox
'net.licenser.sandbox.tester
'net.licenser.sandbox.matcher)
(def my-tester
(extend-tester secure-tester (whitelist (function-matcher 'def))))
(def my-sandbox
(stringify-sandbox (new-sandbox :tester my-tester)))
(my-sandbox
"(def a (clojure.core/fn a ([b] (inc b))))")
(println (my-sandbox "(a 5)"))
Однако defn
дает мне проблемы. Похоже, мой код передает принципы песочницы, но терпит неудачу во время исполнения:
; (macroexpand '(defn y [z] (inc z)))
(my-sandbox
"(def y (.withMeta (clojure.core/fn y ([z] (inc z))) (.meta (var y))))")
; java.lang.SecurityException: Exception in sandboxed code.
Является ли это ошибка, или я делаю что-то не так?