[packages] samba3: expose interfaces configuration in uci, move generated smb.conf...
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 29 Nov 2011 10:35:57 +0000 (10:35 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 29 Nov 2011 10:35:57 +0000 (10:35 +0000)
SVN-Revision: 29354

net/samba3/Makefile
net/samba3/files/samba.config
net/samba3/files/samba.init
net/samba3/files/smb.conf.template

index e44f550f23f676d013506d177acff6d295d9a44c..ce470e7db84a78a027810f0582e65e3191a17001 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=samba3
 PKG_VERSION:=3.0.37
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_MD5SUM:=11ed2bfef4090bd5736b194b43f67289
 
index 3acff5d313070225ae398c01b6032e028fc3a32e..1dfe53da3be2920d6922f993b2125cb8c1584fe4 100644 (file)
@@ -3,6 +3,8 @@ config samba
        option 'workgroup'              'openwrt'
        option 'description'    'openwrt'
        option 'homes'                  '1'
+       list 'interface'                'lo'
+       list 'interface'                'lan'
                
 config sambashare
        option 'name'                   'tmp'
index 3c4cc6d94a78aa9b845f061305b7d3223a8224c9..3e46431f56d7d684d79201a8468ddad817d4eb89 100755 (executable)
@@ -8,23 +8,37 @@ smb_header() {
        local workgroup
        local description
        local homes
+       local interface
 
        config_get name $1 name
        config_get workgroup $1 workgroup
        config_get description $1 description
        config_get homes $1 homes
+       config_get interface $1 interface "lan"
+
+       # resolve interfaces
+       local interfaces=$(
+               include /lib/network
+               scan_interfaces
+               local net ifname; for net in $interface; do
+                       config_get ifname "$net" ifname "$net"
+                       echo -n "$ifname "
+               done
+       )
 
        [ -z "$name" ] && name=openwrt
        [ -z "$workgroup" ] && workgroup=openwrt
        [ -z "$description" ] && description=openwrt
 
-       cp /etc/samba/smb.conf.template /tmp/smb.conf
-       [ -L /etc/samba/smb.conf ] || ln -nsf /tmp/smb.conf /etc/samba/smb.conf
-       sed -i "s/|NAME|/$name/g" /tmp/smb.conf
-       sed -i "s/|WORKGROUP|/$workgroup/g" /tmp/smb.conf
-       sed -i "s/|DESCRIPTION|/$description/g" /tmp/smb.conf
+       mkdir -p /var/etc
+       cp /etc/samba/smb.conf.template /var/etc/smb.conf
+       [ -L /etc/samba/smb.conf ] || ln -nsf /var/etc/smb.conf /etc/samba/smb.conf
+       sed -i "s/|NAME|/$name/g" /var/etc/smb.conf
+       sed -i "s/|WORKGROUP|/$workgroup/g" /var/etc/smb.conf
+       sed -i "s/|DESCRIPTION|/$description/g" /var/etc/smb.conf
+       sed -i "s/|INTERFACES|/$interfaces/g" /var/etc/smb.conf
        [ "$homes" == "1" ] && {
-               echo -e "\n[homes]\n\tcomment = Home Directories\n\tbrowseable = no\n\tread only = no\n\tcreate mode = 0750" >> /tmp/smb.conf
+               echo -e "\n[homes]\n\tcomment = Home Directories\n\tbrowseable = no\n\tread only = no\n\tcreate mode = 0750" >> /var/etc/smb.conf
        }
 }
 
@@ -47,12 +61,12 @@ smb_add_share() {
 
        [ -z "$name" -o -z "$path" ] && return
 
-       echo -e "\n[$name]\n\tpath = $path" >> /tmp/smb.conf
-       [ -n "$users" ] && echo -e "\tvalid users = $users" >> /tmp/smb.conf
-       [ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /tmp/smb.conf
-       [ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /tmp/smb.conf
-       [ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /tmp/smb.conf
-       [ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /tmp/smb.conf
+       echo -e "\n[$name]\n\tpath = $path" >> /var/etc/smb.conf
+       [ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/smb.conf
+       [ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /var/etc/smb.conf
+       [ -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
 }
 
 start() {
index d3a28df55413e4845565feb045d2dd755128fd3d..969a83ed5fb29749ac867cbe8e760e2495e637b0 100644 (file)
@@ -14,3 +14,4 @@
        guest account = nobody
        invalid users = root
        smb passwd file = /etc/samba/smbpasswd
+       interfaces = |INTERFACES|