samba36: add package with hotplug.d script for auto sharing
[openwrt/openwrt.git] / package / network / services / samba36 / files / samba.hotplug
diff --git a/package/network/services/samba36/files/samba.hotplug b/package/network/services/samba36/files/samba.hotplug
new file mode 100644 (file)
index 0000000..e1ae64e
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+. /usr/share/libubox/jshn.sh
+
+device_get_vars() {
+       json_init
+       json_load "$(ubus call block info)"
+
+       json_select devices
+
+       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 ..
+                       break
+               }
+
+               json_select ..
+       done
+
+       json_select ..
+}
+
+[ -f /var/run/config/samba ] || {
+       mkdir -p /var/run/config && touch /var/run/config/samba
+}
+
+[ "$ACTION" = "add" ] && {
+       device_get_vars $DEVICE label mount
+       [ -n "$mount" ] && {
+               uci -c /var/run/config batch <<-EOF
+                       set samba.$DEVICE="sambashare"
+                       set samba.$DEVICE.name="$label"
+                       set samba.$DEVICE.path="$mount"
+                       set samba.$DEVICE.browseable="yes"
+                       set samba.$DEVICE.read_only="yes"
+                       set samba.$DEVICE.guest_ok="yes"
+                       commit samba
+               EOF
+               /etc/init.d/samba reload
+       }
+}
+
+[ "$ACTION" = "remove" ] && {
+       uci -c /var/run/config batch <<-EOF
+               delete samba.$DEVICE
+               commit samba
+       EOF
+       /etc/init.d/samba reload
+}