mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-28 01:11:21 +08:00
121 lines
2.2 KiB
Bash
121 lines
2.2 KiB
Bash
#!/bin/sh
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/service.sh
|
|
|
|
global=0
|
|
config_file="/etc/config/samba4"
|
|
|
|
[ ! -f /etc/config/samba4 ] && {
|
|
echo "
|
|
config samba
|
|
option workgroup 'WORKGROUP'
|
|
option charset 'UTF-8'
|
|
option description 'Samba on OpenWRT'
|
|
" > $config_file
|
|
}
|
|
|
|
wait_for_init() {
|
|
for i in `seq 30`
|
|
do
|
|
[ -e /tmp/procd.done ] || {
|
|
sleep 1; continue;
|
|
}
|
|
return
|
|
done
|
|
}
|
|
|
|
smb_handle() {
|
|
local path
|
|
config_get path "$1" path
|
|
if [ -n "$path" ]; then
|
|
case "$path" in
|
|
"$2" | "$2"/*) global=1 ;;
|
|
esac
|
|
case "$2" in
|
|
"$path" | "$path"/*) global=1 ;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
chk_en() {
|
|
config_get_bool autoshare "$1" autoshare 1
|
|
[ "$autoshare" -eq 0 ] && exit
|
|
}
|
|
|
|
config_load samba4
|
|
config_foreach chk_en samba4
|
|
|
|
device=`basename "$DEVPATH"`
|
|
|
|
case "$ACTION" in
|
|
add)
|
|
|
|
case "$device" in
|
|
sd*);;
|
|
md*);;
|
|
hd*);;
|
|
mmcblk*);;
|
|
nvme*);;
|
|
*) return;;
|
|
esac
|
|
|
|
path="/dev/$device"
|
|
|
|
wait_for_init
|
|
|
|
grep -v '/boot\|/opt' /proc/mounts | while read -r j
|
|
do
|
|
str=${j%% *}
|
|
if [ "$str" = "$path" ];then
|
|
strr=${j#* }
|
|
target=${strr%% *}
|
|
global=0
|
|
|
|
config_load samba4
|
|
config_foreach smb_handle sambashare "$target"
|
|
|
|
name=${target#*/mnt/}
|
|
name=$(echo "$name" | sed -e "s/^\///")
|
|
|
|
if [ "$global" -eq 0 ] ;then
|
|
echo -e "\n\nconfig sambashare" >> $config_file
|
|
echo -e "\toption auto '1'" >> $config_file
|
|
echo -e "\toption name '$name'" >> $config_file
|
|
echo -e "\toption path '$target'" >> $config_file
|
|
echo -e "\toption read_only 'no'" >> $config_file
|
|
echo -e "\toption guest_ok 'yes'" >> $config_file
|
|
echo -e "\toption create_mask '0666'" >> $config_file
|
|
echo -e "\toption dir_mask '0777'" >> $config_file
|
|
echo -e "\toption device '$device'" >> $config_file
|
|
echo -e "\toption force_root '1'" >> $config_file
|
|
/etc/init.d/samba4 reload
|
|
return
|
|
fi
|
|
fi
|
|
done
|
|
;;
|
|
|
|
remove)
|
|
i=0
|
|
while true
|
|
do
|
|
if ! uci -q get samba4.@sambashare[$i] >/dev/null; then
|
|
break
|
|
fi
|
|
|
|
dev=$(uci -q get samba4.@sambashare[$i].device)
|
|
if [ "$dev" = "$device" ]; then
|
|
auto=$(uci -q get samba4.@sambashare[$i].auto)
|
|
if [ "$auto" = "1" ]; then
|
|
uci delete samba4.@sambashare[$i]
|
|
uci commit samba4
|
|
/etc/init.d/samba4 reload
|
|
return
|
|
fi
|
|
fi
|
|
let i+=1
|
|
done
|
|
;;
|
|
esac
|