mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-10 11:09:57 +08:00
4d46f75d45
- samba4 config file path: /etc/config/samba4 - samba4 config name: samba4 - samba4 init path: /etc/init.d/samba4 (cherry picked from commit 9ab9dbfb85875a4e239da2adaf45d04c9b83f810)
107 lines
2.0 KiB
Bash
107 lines
2.0 KiB
Bash
#!/bin/sh
|
|
|
|
#
|
|
# D-Team Technology Co.,Ltd. ShenZhen
|
|
# 作者:Vic
|
|
#
|
|
# 警告:对着屏幕的哥们,我们允许你使用此脚本,但不允许你抹去作者的信息,请保留这段话。
|
|
#
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/service.sh
|
|
|
|
global=0
|
|
config_file="/etc/config/samba4"
|
|
|
|
wait_for_init() {
|
|
for i in `seq 30`
|
|
do
|
|
[ -e /tmp/procd.done ] || {
|
|
sleep 1; continue;
|
|
}
|
|
return
|
|
done
|
|
}
|
|
|
|
smb_handle() {
|
|
config_get path $1 path
|
|
if [ "$path" = "$2" ] ;then
|
|
global=1
|
|
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*);;
|
|
*) return;;
|
|
esac
|
|
|
|
path="/dev/$device"
|
|
|
|
wait_for_init
|
|
|
|
cat /proc/mounts | grep -v '/boot\|/opt' | while read j
|
|
do
|
|
str=${j%% *}
|
|
if [ "$str" == $path ];then
|
|
strr=${j#* }
|
|
target=${strr%% *}
|
|
global=0
|
|
config_foreach smb_handle sambashare $target
|
|
name=${target#*/mnt/}
|
|
|
|
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 inherit_owner 'yes'" >> $config_file
|
|
/etc/init.d/samba4 reload
|
|
return
|
|
fi
|
|
fi
|
|
done
|
|
;;
|
|
|
|
remove)
|
|
i=0
|
|
while true
|
|
do
|
|
dev=`uci get samba4.@sambashare[$i].device`
|
|
[ $? -ne 0 ] && break
|
|
|
|
[ "$dev" = "$device" ] && {
|
|
auto=`uci get samba4.@sambashare[$i].auto`
|
|
[ $auto = "1" ] && {
|
|
mount_dir=`uci get samba4.@sambashare[$i].name`
|
|
uci delete samba4.@sambashare[$i]
|
|
uci commit
|
|
/etc/init.d/samba4 reload
|
|
return
|
|
}
|
|
}
|
|
let i+=1
|
|
done
|
|
;;
|
|
esac
|