提交 36fa5135 编写于 作者: R Rafał Miłecki 提交者: Beginner-Go

ksmbd-tools: add package with hotplug.d script for auto sharing

One of common use cases for SMB3 server in routers is sharing hotplugged
drives. Users make many attempts setting that up which often are not
optimal.

This script handles it in the cleanest way by using:
1. hotplug.d mount subsystem
2. runtime config in the /var/run/config/

It provides a working basic solution that can be later adjusted by
modifying provided hotplug script.

A pretty much idential solution was part of the samba36 package. It was
added in the OpenWrt commit ef1efa756e0d0 ("samba36: add package with
hotplug.d script for auto sharing") as an answer for feature required by
the Rosinson company.

Cc: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: NRafał Miłecki <rafal@milecki.pl>
上级 045be0c6
......@@ -84,6 +84,12 @@ define Package/ksmbd-avahi-service/description
Ksmbd (smb/445) Daemon service via mDNS/DNS-SD.
endef
define Package/ksmbd-hotplug
$(call Package/ksmbd-tools/Default)
TITLE+= hotplug script for auto sharing
DEPENDS:=+blockd
endef
MESON_ARGS += \
-Db_lto=true \
-Dkrb5=disabled
......@@ -116,6 +122,11 @@ define Package/ksmbd-avahi-service/install
$(INSTALL_DATA) ./files/smb.service $(1)/etc/avahi/services/
endef
define Package/ksmbd-hotplug/install
$(INSTALL_DIR) $(1)/etc/hotplug.d/mount
$(INSTALL_CONF) ./files/ksmbd.hotplug $(1)/etc/hotplug.d/mount/60-ksmbd
endef
define Package/ksmbd-server/conffiles
/etc/config/ksmbd
/etc/ksmbd/smb.conf.template
......@@ -130,3 +141,4 @@ endef
$(eval $(call BuildPackage,ksmbd-server))
$(eval $(call BuildPackage,ksmbd-utils))
$(eval $(call BuildPackage,ksmbd-avahi-service))
$(eval $(call BuildPackage,ksmbd-hotplug))
#!/bin/sh
. /usr/share/libubox/jshn.sh
device_get_vars() {
json_init
json_load "$(ubus call block info)"
json_select devices || return 1
json_get_keys keys
for key in $keys
do
json_select $key
json_get_var device device
[ "$device" = "$1" ] && {
shift
json_get_vars $@
json_select ..
json_select ..
return 0
}
json_select ..
done
json_select ..
return 2
}
[ -f /var/run/config/ksmbd ] || {
mkdir -p /var/run/config && touch /var/run/config/ksmbd
}
[ "$ACTION" = "add" ] && {
device_get_vars $DEVICE label mount || {
logger -t ksmbd-hotplug "Failed to get $DEVICE info"
exit 1
}
[ -n "$mount" ] && {
uci -c /var/run/config batch <<-EOF
set ksmbd.$DEVICE="share"
set ksmbd.$DEVICE.name="${label:-$DEVICE}"
set ksmbd.$DEVICE.path="$mount"
set ksmbd.$DEVICE.browseable="yes"
set ksmbd.$DEVICE.read_only="yes"
set ksmbd.$DEVICE.guest_ok="yes"
commit ksmbd
EOF
/etc/init.d/ksmbd reload
}
}
[ "$ACTION" = "remove" ] && {
uci -c /var/run/config batch <<-EOF
delete ksmbd.$DEVICE
commit ksmbd
EOF
/etc/init.d/ksmbd reload
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册