Browse Source

Add :code-block/command-whitelist option

Tienson Qin 3 years ago
parent
commit
6a4fbaa9da

+ 1 - 1
src/main/frontend/components/shell.cljs

@@ -32,7 +32,7 @@
        [:div
         [:h1.title
          "Input command"]
-        [:div.mt-4.mb-4.relative.rounded-md.shadow-sm.max-w-xs
+        [:div.mt-4.mb-4.relative.rounded-md.shadow-sm
          [:input#run-command.form-input.font-mono.block.w-full.sm:text-sm.sm:leading-5
           {:autoFocus true
            :on-key-down util/stop-propagation

+ 1 - 1
src/main/frontend/extensions/code.cljs

@@ -306,7 +306,7 @@
      (when-not (= mode "calc")
        [:div
         [:div.extensions__code-lang
-         (if (contains? (shell-handler/get-commands) (string/lower-case mode))
+         (if (contains? (shell-handler/get-code-block-commands) (string/lower-case mode))
            [:a {:title (str "Run command " mode)
                 :on-click (fn [_e]
                             (let [editor-atom (:editor-atom state)]

+ 9 - 0
src/main/frontend/handler/shell.cljs

@@ -42,12 +42,21 @@
 (def dangerous-commands
   #{"rm" "mv" "rename" "dd" ">" "command" "sudo"})
 
+(def code-block-commands-whitelist
+  #{"alda"})
+
 (defn get-commands
   []
   (set/union (map (comp #(remove string/blank? %) string/lower-case str)
                (:commands-whitelist (state/get-config)))
              commands-whitelist))
 
+(defn get-code-block-commands
+  []
+  (set/union (map (comp #(remove string/blank? %) string/lower-case str)
+               (:code-block/command-whitelist (state/get-config)))
+             code-block-commands-whitelist))
+
 (defn run-command!
   [command]
   (let [[command args] (gp-util/split-first " " command)

+ 3 - 0
templates/config.edn

@@ -299,4 +299,7 @@
 
  ;; Commands that are allowed to be invoked from Logseq.
  :shell/command-whitelist #{}
+
+ ;; Commands that could be executed in code blocks, e.g. alda, dot
+ :code-block/command-whitelist #{}
  }