# Copyright (C) 2008-2012 OpenWrt.org
START=60
+USE_PROCD=1
smb_header() {
- local interface
- config_get interface $1 interface "loopback lan"
+ config_get samba_iface $1 interface "loopback lan"
# resolve interfaces
local interfaces=$(
. /lib/functions/network.sh
local net
- for net in $interface; do
+ for net in $samba_iface; do
local device
- network_get_device device "$net" && {
- local subnet
- network_get_subnet subnet "$net" && echo -n "$subnet "
- network_get_subnet6 subnet "$net" && echo -n "$subnet "
- }
-
+ network_is_up $net || continue
+ network_get_device device "$net"
echo -n "${device:-$net} "
done
)
local guest_ok
local create_mask
local dir_mask
+ local browseable
config_get name $1 name
config_get path $1 path
config_get guest_ok $1 guest_ok
config_get create_mask $1 create_mask
config_get dir_mask $1 dir_mask
+ config_get browseable $1 browseable
[ -z "$name" -o -z "$path" ] && return
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf
[ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/smb.conf
[ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/smb.conf
+ [ -n "$browseable" ] && echo -e "\tbrowseable = $browseable" >> /var/etc/smb.conf
}
-start() {
+init_config() {
config_load samba
config_foreach smb_header samba
config_foreach smb_add_share sambashare
- service_start /usr/sbin/smbd -D
- service_start /usr/sbin/nmbd -D
}
-stop() {
- service_stop /usr/sbin/smbd
- service_stop /usr/sbin/nmbd
+service_triggers() {
+ procd_add_reload_trigger samba
+
+ local i
+ for i in $samba_iface; do
+ procd_add_reload_interface_trigger $i
+ done
+}
+
+start_service() {
+ init_config
+
+ procd_open_instance
+ procd_set_param command /usr/sbin/smbd -F
+ procd_set_param respawn
+ procd_set_param file /var/etc/smb.conf
+ procd_close_instance
+
+ procd_open_instance
+ procd_set_param command /usr/sbin/nmbd -F
+ procd_set_param respawn
+ procd_set_param file /var/etc/smb.conf
+ procd_close_instance
}