mirror of
https://github.com/kenzok8/small-package
synced 2025-01-08 13:27:36 +08:00
121 lines
2.3 KiB
Bash
121 lines
2.3 KiB
Bash
#!/bin/sh
|
|
|
|
#
|
|
# D-Team Technology Co.,Ltd. ShenZhen
|
|
# 作者:Vic
|
|
#
|
|
# 警告:对着屏幕的哥们,我们允许你使用此脚本,但不允许你抹去作者的信息,请保留这段话。
|
|
#
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/service.sh
|
|
|
|
global=0
|
|
config_file="/etc/config/ksmbd"
|
|
|
|
[ ! -f /etc/config/ksmbd ] && {
|
|
echo "
|
|
config globals
|
|
option 'workgroup' 'WORKGROUP'
|
|
option 'description' 'Ksmbd on OpenWrt'
|
|
" > $config_file
|
|
}
|
|
|
|
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 ksmbd
|
|
config_foreach chk_en ksmbd
|
|
|
|
device=`basename $DEVPATH`
|
|
|
|
case "$ACTION" in
|
|
add)
|
|
|
|
case "$device" in
|
|
sd*);;
|
|
md*);;
|
|
hd*);;
|
|
*) return;;
|
|
esac
|
|
|
|
path="/dev/$device"
|
|
|
|
wait_for_init
|
|
|
|
[ "$(uci -q get ksmbd.@globals[0].autoshare)" == "1" ] && {
|
|
/etc/init.d/ksmbd restart
|
|
exit 0;
|
|
}
|
|
|
|
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 share $target
|
|
name=${target#*/mnt/}
|
|
name=$(echo $name | sed -e "s/^\///")
|
|
if [ $global -eq 0 ] ;then
|
|
echo -e "\n\nconfig share" >> $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/ksmbd reload
|
|
return
|
|
fi
|
|
fi
|
|
done
|
|
uci -q set ksmbd.@globals[0].autoshare='1'
|
|
uci commit ksmbd
|
|
;;
|
|
|
|
remove)
|
|
i=0
|
|
while true
|
|
do
|
|
dev=`uci get ksmbd.@share[$i].device`
|
|
[ $? -ne 0 ] && break
|
|
|
|
[ "$dev" = "$device" ] && {
|
|
auto=`uci get ksmbd.@share[$i].auto`
|
|
[ $auto = "1" ] && {
|
|
mount_dir=`uci get ksmbd.@share[$i].name`
|
|
uci delete ksmbd.@share[$i]
|
|
uci commit
|
|
/etc/init.d/ksmbd reload
|
|
return
|
|
}
|
|
}
|
|
let i+=1
|
|
done
|
|
;;
|
|
esac
|