#!/bin/sh # # D-Team Technology Co.,Ltd. ShenZhen # 作者:Vic # # 警告:对着屏幕的哥们,我们允许你使用此脚本,但不允许你抹去作者的信息,请保留这段话。 # . /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() { 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*);; *) return;; esac path="/dev/$device" wait_for_init [ "$(uci -q get samba4.@samba[0].autoshare)" == "1" ] && { /etc/init.d/samba4 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 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 uci -q set samba4.@samba[0].autoshare='1' uci commit samba4 ;; 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