Procházet zdrojové kódy

feat: Support multiple shared folders (#810)

Kroese před 9 měsíci
rodič
revize
815a3f3c66
1 změnil soubory, kde provedl 53 přidání a 47 odebrání
  1. 53 47
      src/samba.sh

+ 53 - 47
src/samba.sh

@@ -14,47 +14,52 @@ if [[ "$DHCP" == [Yy1]* ]]; then
   interface="$VM_NET_DEV"
 fi
 
-share="/data"
-
-if [ ! -d "$share" ] && [ -d "$STORAGE/data" ]; then
-  share="$STORAGE/data"
-fi
+addShare() {
+  local dir="$1"
+  local name="$2"
+  local comment="$3"
+
+  mkdir -p "$dir" || return 1
+
+  if [ -z "$(ls -A "$dir")" ]; then
+
+    chmod 777 "$dir"
+
+    {      echo "--------------------------------------------------------"
+            echo " $APP for Docker v$(</run/version)..."
+            echo " For support visit $SUPPORT"
+            echo "--------------------------------------------------------"
+            echo ""
+            echo "Using this folder you can share files with the host machine."
+            echo ""
+            echo "To change its location, include the following bind mount in your compose file:"
+            echo ""
+            echo "  volumes:"
+            echo "    - \"/home/example:/${name,,}\""
+            echo ""
+            echo "Or in your run command:"
+            echo ""
+            echo "  -v \"/home/example:/${name,,}\""
+            echo ""
+            echo "Replace the example path /home/example with the desired shared folder."
+            echo ""
+    } | unix2dos > "$dir/readme.txt"
 
-if [ ! -d "$share" ] && [ -d "/shared" ]; then
-  share="/shared"
-fi
+  fi
 
-if [ ! -d "$share" ] && [ -d "$STORAGE/shared" ]; then
-  share="$STORAGE/shared"
-fi
+  {      echo ""
+          echo "[$name]"
+          echo "    path = $dir"
+          echo "    comment = $comment"
+          echo "    writable = yes"
+          echo "    guest ok = yes"
+          echo "    guest only = yes"
+          echo "    force user = root"
+          echo "    force group = root"
+  } >> "/etc/samba/smb.conf"
 
-mkdir -p "$share"
-
-if [ -z "$(ls -A "$share")" ]; then
-
-  chmod 777 "$share"
-
-  {      echo "--------------------------------------------------------"
-          echo " $APP for Docker v$(</run/version)..."
-          echo " For support visit $SUPPORT"
-          echo "--------------------------------------------------------"
-          echo ""
-          echo "Using this folder you can share files with the host machine."
-          echo ""
-          echo "To change its location, include the following bind mount in your compose file:"
-          echo ""
-          echo "  volumes:"
-          echo "    - \"/home/user/example:/data\""
-          echo ""
-          echo "Or in your run command:"
-          echo ""
-          echo "  -v \"/home/user/example:/data\""
-          echo ""
-          echo "Replace the example path /home/user/example with the desired shared folder."
-          echo ""
-  } | unix2dos > "$share/readme.txt"
-
-fi
+  return 0
+}
 
 {      echo "[global]"
         echo "    server string = Dockur"
@@ -72,17 +77,18 @@ fi
         echo "    printing = bsd"
         echo "    printcap name = /dev/null"
         echo "    disable spoolss = yes"
-        echo ""
-        echo "[Data]"
-        echo "    path = $share"
-        echo "    comment = Shared"
-        echo "    writable = yes"
-        echo "    guest ok = yes"
-        echo "    guest only = yes"
-        echo "    force user = root"
-        echo "    force group = root"
 } > "/etc/samba/smb.conf"
 
+share="/data"
+[ ! -d "$share" ] && [ -d "$STORAGE/data" ] && share="$STORAGE/data"
+[ ! -d "$share" ] && [ -d "/shared" ] && share="/shared"
+[ ! -d "$share" ] && [ -d "$STORAGE/shared" ] && share="$STORAGE/shared"
+
+addShare "$share" "Data" "Shared" || error "Failed to create shared folder!"
+
+[ -d "/data2" ] && addShare "/data2" "Data2" "Shared"
+[ -d "/data3" ] && addShare "/data3" "Data3" "Shared"
+
 if ! smbd; then
   error "Samba daemon failed to start!"
   smbd -i --debug-stdout || true