diff --git a/package/emortal/autosamba/Makefile b/package/emortal/autosamba/Makefile index 51701fc607..0e228a0c27 100644 --- a/package/emortal/autosamba/Makefile +++ b/package/emortal/autosamba/Makefile @@ -25,12 +25,11 @@ define Package/autosamba/description endef define Build/Compile - true endef define Package/autosamba/install $(INSTALL_DIR) $(1)/etc/hotplug.d/block - $(INSTALL_BIN) ./files/20-smb $(1)/etc/hotplug.d/block/20-smb + $(INSTALL_BIN) ./files/20-smb $(1)/etc/hotplug.d/block/ endef $(eval $(call BuildPackage,autosamba)) diff --git a/package/emortal/autosamba/files/20-smb b/package/emortal/autosamba/files/20-smb old mode 100755 new mode 100644 index 72e6faf751..ae00f8140d --- a/package/emortal/autosamba/files/20-smb +++ b/package/emortal/autosamba/files/20-smb @@ -1,32 +1,33 @@ #!/bin/sh -# -# D-Team Technology Co.,Ltd. ShenZhen -# 作者:Vic -# + +# +# D-Team Technology Co.,Ltd. ShenZhen +# 作者:Vic # # 警告:对着屏幕的哥们,我们允许你使用此脚本,但不允许你抹去作者的信息,请保留这段话。 # + . /lib/functions.sh . /lib/functions/service.sh global=0 -config_file="/etc/config/samba" +config_file="/etc/config/samba4" wait_for_init() { - for i in `seq 30` - do - [ -e /tmp/procd.done ] || { - sleep 1; continue; - } - return - done + 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 + config_get path $1 path + if [ "$path" = "$2" ] ;then + global=1 + fi } chk_en() { @@ -34,67 +35,68 @@ chk_en() { [ $autoshare -eq 0 ] && exit } -config_load samba -config_foreach chk_en samba +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 + case "$device" in + sd*);; + md*);; + hd*);; + mmcblk*);; + *) return;; + esac - cat /proc/mounts | 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/} + path="/dev/$device" - 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 - /etc/init.d/samba reload + 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 + fi + fi + done ;; + remove) i=0 while true do - - dev=`uci get samba.@sambashare[$i].device` + dev=`uci get samba4.@sambashare[$i].device` [ $? -ne 0 ] && break - + [ "$dev" = "$device" ] && { - auto=`uci get samba.@sambashare[$i].auto` + auto=`uci get samba4.@sambashare[$i].auto` [ $auto = "1" ] && { - mount_dir=`uci get samba.@sambashare[$i].name` - uci delete samba.@sambashare[$i] + mount_dir=`uci get samba4.@sambashare[$i].name` + uci delete samba4.@sambashare[$i] uci commit - /etc/init.d/samba reload + /etc/init.d/samba4 reload return } }