merge: packages: update branding in core packages
[openwrt/openwrt.git] / package / network / services / samba36 / files / samba.init
index 61398d8f4fb638a3b3853e54d5c6c0a20fd60c38..ae0e0e230dfe65c15a5f6fb09ad3b97bb406ecea 100755 (executable)
@@ -2,24 +2,20 @@
 # 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
        )
@@ -64,6 +60,7 @@ smb_add_share() {
        local guest_ok
        local create_mask
        local dir_mask
+       local browseable
 
        config_get name $1 name
        config_get path $1 path
@@ -72,6 +69,7 @@ smb_add_share() {
        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
 
@@ -81,17 +79,36 @@ smb_add_share() {
        [ -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
 }