mirror of
https://github.com/Lienol/openwrt
synced 2025-01-09 03:58:13 +08:00
autosamba: add package
This commit is contained in:
parent
f76af579ea
commit
a906154ab9
35
package/public/autosamba/Makefile
Normal file
35
package/public/autosamba/Makefile
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2010-2011 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=autosamba
|
||||||
|
PKG_VERSION:=1
|
||||||
|
PKG_RELEASE:=12
|
||||||
|
PKG_ARCH:=all
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/autosamba
|
||||||
|
TITLE:=Samba autoconfig hotplug script.
|
||||||
|
MAINTAINER:=Lean
|
||||||
|
DEPENDS:=+luci-app-samba +wsdd2
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/autosamba/description
|
||||||
|
A hotplug script to config Samba share automatically.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/autosamba/install
|
||||||
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/block
|
||||||
|
$(INSTALL_BIN) ./files/20-smb $(1)/etc/hotplug.d/block/20-smb
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,autosamba))
|
105
package/public/autosamba/files/20-smb
Normal file
105
package/public/autosamba/files/20-smb
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# D-Team Technology Co.,Ltd. ShenZhen
|
||||||
|
# 作者:Vic
|
||||||
|
#
|
||||||
|
# 警告:对着屏幕的哥们,我们允许你使用此脚本,但不允许你抹去作者的信息,请保留这段话。
|
||||||
|
#
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
. /lib/functions/service.sh
|
||||||
|
|
||||||
|
global=0
|
||||||
|
config_file="/etc/config/samba"
|
||||||
|
|
||||||
|
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 samba
|
||||||
|
config_foreach chk_en samba
|
||||||
|
|
||||||
|
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
|
||||||
|
/etc/init.d/samba reload
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
remove)
|
||||||
|
i=0
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
dev=`uci get samba.@sambashare[$i].device`
|
||||||
|
[ $? -ne 0 ] && break
|
||||||
|
|
||||||
|
[ "$dev" = "$device" ] && {
|
||||||
|
auto=`uci get samba.@sambashare[$i].auto`
|
||||||
|
[ $auto = "1" ] && {
|
||||||
|
mount_dir=`uci get samba.@sambashare[$i].name`
|
||||||
|
uci delete samba.@sambashare[$i]
|
||||||
|
uci commit
|
||||||
|
/etc/init.d/samba reload
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let i+=1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user