diff --git a/net/ksmbd-tools/Makefile b/net/ksmbd-tools/Makefile index a6e56331e..618971daf 100644 --- a/net/ksmbd-tools/Makefile +++ b/net/ksmbd-tools/Makefile @@ -89,6 +89,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 + CONFIGURE_ARGS += \ --disable-shared \ --enable-static diff --git a/net/ksmbd-tools/files/ksmbd.hotplug b/net/ksmbd-tools/files/ksmbd.hotplug new file mode 100644 index 000000000..114bfa97f --- /dev/null +++ b/net/ksmbd-tools/files/ksmbd.hotplug @@ -0,0 +1,62 @@ +#!/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 +}