This reverts commit fd569e5e9d
.
After an extra review & discussion few concerns were raised regarding
that feature:
1) It reacts to hotplug.d "block" events instead of more accurate (but
currently unavailable) "mount" events.
2) It requires *something* to mount block device before samba hotplug.d
gets fired. Otherwise samba_add_section() will just return.
3) It doesn't reload Samba which some users may expect
4) It operates on /etc/ which is not a right place for autogenerated
ephemeral config.
5) It doesn't include any cleanup for non-existing shares.
Cc: Rosy Song <rosysong@rosinson.com>
Cc: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
master
parent
3c899aaf11
commit
ae622c93b3
@ -1,89 +0,0 @@ |
||||
#!/bin/sh |
||||
# |
||||
# Copyright (C) 2018 OpenWrt.org |
||||
# Copyright (C) 2018 rosysong@rosinson.com |
||||
# |
||||
|
||||
. /lib/functions.sh |
||||
|
||||
FLAG_DEV_TYPE= |
||||
FLAG_DEV_MOPT= |
||||
FLAG_HAS_SECT= |
||||
|
||||
samba_dev_filter() { # <devname> <[path,/dev/]> |
||||
case $1 in |
||||
${2}mtdblock*|\ |
||||
${2}ubi*) |
||||
FLAG_DEV_TYPE="mtd" |
||||
;; |
||||
${2}loop*|\ |
||||
${2}mmcblk*|\ |
||||
${2}sd*|\ |
||||
${2}hd*|\ |
||||
${2}md*|\ |
||||
${2}nvme*|\ |
||||
${2}vd*|\ |
||||
${2}xvd*) |
||||
FLAG_DEV_TYPE="not-mtd" |
||||
;; |
||||
*) |
||||
[ -b ${2}${1} ] && FLAG_DEV_TYPE="not-mtd" |
||||
[ -b /dev/mapper/$1 ] && FLAG_DEV_TYPE="not-mtd" |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
samba_cfg_lookup() { # <section> <name> |
||||
config_get name $1 name |
||||
[ "$name" = "$2" ] || return |
||||
FLAG_HAS_SECT=y |
||||
} |
||||
|
||||
samba_cfg_delete() { # <section> <name> |
||||
config_get name $1 name |
||||
[ "$name" = "$2" ] || return |
||||
uci -q delete samba.$1 |
||||
} |
||||
|
||||
samba_find_mount_point() { # <devname> |
||||
# search mount point in /proc/mounts |
||||
while read l; do |
||||
local d=$(echo $l | awk '/^\/dev/ {print $1}') |
||||
[ "$d" = "/dev/$1" ] || continue |
||||
|
||||
FLAG_DEV_MOPT=$(echo $l | awk '/^\/dev/ {print $2}') |
||||
break |
||||
done < /proc/mounts |
||||
} |
||||
|
||||
_samba_add_section() { # <devname> <mount point> |
||||
uci -q batch <<-EOF |
||||
add samba sambashare |
||||
set samba.@sambashare[-1].browseable='yes' |
||||
set samba.@sambashare[-1].name='$1' |
||||
set samba.@sambashare[-1].path='$2' |
||||
set samba.@sambashare[-1].users='root' |
||||
set samba.@sambashare[-1].read_only='no' |
||||
set samba.@sambashare[-1].guest_ok='yes' |
||||
set samba.@sambashare[-1].create_mask='0755' |
||||
set samba.@sambashare[-1].dir_mask='0755' |
||||
EOF |
||||
} |
||||
|
||||
samba_add_section() { # <devname> [<mount point>] |
||||
FLAG_HAS_SECT= |
||||
FLAG_DEV_MOPT= |
||||
|
||||
config_foreach samba_cfg_lookup sambashare $1 |
||||
[ -z "$FLAG_HAS_SECT" ] || return |
||||
|
||||
samba_find_mount_point $1 |
||||
[ -n "$FLAG_DEV_MOPT" ] || return |
||||
|
||||
[ -n "$2" -a "$2" = "$FLAG_DEV_MOPT" ] || \ |
||||
_samba_add_section $1 $FLAG_DEV_MOPT |
||||
} |
||||
|
||||
samba_delete_section() { # <devname> |
||||
config_foreach samba_cfg_delete sambashare $1 |
||||
} |
@ -1,11 +0,0 @@ |
||||
. /lib/samba/samba.sh |
||||
|
||||
samba_dev_filter $DEVNAME |
||||
[ "$FLAG_DEV_TYPE" = "not-mtd" ] || exit |
||||
|
||||
config_load samba |
||||
case $ACTION in |
||||
add) samba_add_section $DEVNAME;; |
||||
remove) samba_delete_section $DEVNAME;; |
||||
esac |
||||
uci commit samba |
Loading…
Reference in new issue