Jelajahi Sumber

fix: safe path join

charlie 3 tahun lalu
induk
melakukan
5373da2deb
2 mengubah file dengan 5 tambahan dan 5 penghapusan
  1. 3 4
      src/main/frontend/fs/capacitor_fs.cljs
  2. 2 1
      src/main/frontend/utils.js

+ 3 - 4
src/main/frontend/fs/capacitor_fs.cljs

@@ -139,15 +139,14 @@
   [repo-dir file-path content]
   (let [repo-dir (js/decodeURI repo-dir)
         file-path (js/decodeURI file-path)
-        backup-root (util/node-path.join repo-dir backup-dir)
+        backup-root (util/safe-path-join repo-dir backup-dir)
         backup-dir-parent (util/node-path.dirname file-path)
         backup-dir-parent (string/replace backup-dir-parent repo-dir "")
         backup-dir-name (util/node-path.name file-path)
         file-extname (util/node-path.extname file-path)
-        new-path (util/node-path.join
+        new-path (util/safe-path-join
                   backup-root backup-dir-parent backup-dir-name
-                  (str (string/replace (.toISOString (js/Date.)) ":" "_") ".Mobile" file-extname))]
-    (prn "====> Ready Backup mobile file::" repo-dir "++++" file-path "++++" new-path)
+                  (str (string/replace (.toISOString (js/Date.)) ":" "_") "." (mobile-util/platform) file-extname))]
     (.writeFile Filesystem (clj->js {:data      content
                                      :path      (js/encodeURI new-path)
                                      :encoding  (.-UTF8 Encoding)

+ 2 - 1
src/main/frontend/utils.js

@@ -317,7 +317,8 @@ export const nodePath = Object.assign({}, path, {
 
     try {
       orURI = new URL(input)
-      input = orURI.pathname
+      input = input.replace(orURI.protocol, '')
+        .replace(/^\/+/, '/')
     } catch (_e) {}
 
     input = path.join(input, ...paths)