feat: Support multiple shared folders (#810)

This commit is contained in:
Kroese 2024-10-14 16:40:15 +02:00 committed by GitHub
parent 69b450299c
commit 815a3f3c66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 49 additions and 43 deletions

View File

@ -14,25 +14,16 @@ if [[ "$DHCP" == [Yy1]* ]]; then
interface="$VM_NET_DEV" interface="$VM_NET_DEV"
fi fi
share="/data" addShare() {
local dir="$1"
local name="$2"
local comment="$3"
if [ ! -d "$share" ] && [ -d "$STORAGE/data" ]; then mkdir -p "$dir" || return 1
share="$STORAGE/data"
fi
if [ ! -d "$share" ] && [ -d "/shared" ]; then if [ -z "$(ls -A "$dir")" ]; then
share="/shared"
fi
if [ ! -d "$share" ] && [ -d "$STORAGE/shared" ]; then chmod 777 "$dir"
share="$STORAGE/shared"
fi
mkdir -p "$share"
if [ -z "$(ls -A "$share")" ]; then
chmod 777 "$share"
{ echo "--------------------------------------------------------" { echo "--------------------------------------------------------"
echo " $APP for Docker v$(</run/version)..." echo " $APP for Docker v$(</run/version)..."
@ -44,18 +35,32 @@ if [ -z "$(ls -A "$share")" ]; then
echo "To change its location, include the following bind mount in your compose file:" echo "To change its location, include the following bind mount in your compose file:"
echo "" echo ""
echo " volumes:" echo " volumes:"
echo " - \"/home/user/example:/data\"" echo " - \"/home/example:/${name,,}\""
echo "" echo ""
echo "Or in your run command:" echo "Or in your run command:"
echo "" echo ""
echo " -v \"/home/user/example:/data\"" echo " -v \"/home/example:/${name,,}\""
echo "" echo ""
echo "Replace the example path /home/user/example with the desired shared folder." echo "Replace the example path /home/example with the desired shared folder."
echo "" echo ""
} | unix2dos > "$share/readme.txt" } | unix2dos > "$dir/readme.txt"
fi 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"
return 0
}
{ echo "[global]" { echo "[global]"
echo " server string = Dockur" echo " server string = Dockur"
echo " netbios name = $hostname" echo " netbios name = $hostname"
@ -72,17 +77,18 @@ fi
echo " printing = bsd" echo " printing = bsd"
echo " printcap name = /dev/null" echo " printcap name = /dev/null"
echo " disable spoolss = yes" 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" } > "/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 if ! smbd; then
error "Samba daemon failed to start!" error "Samba daemon failed to start!"
smbd -i --debug-stdout || true smbd -i --debug-stdout || true