You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

62 lines
1.1 KiB

#!/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
}