[LEDE-DEV] samba36: fix bug when firstboot without saving config files.

Message ID 20180504032006.3804-1-rosysong@rosinson.com
State New
Headers show
Series
  • [LEDE-DEV] samba36: fix bug when firstboot without saving config files.
Related show

Commit Message

Rosysong May 4, 2018, 3:20 a.m.
When we upgrade firmware(without saving config files), system will
  reboot and executes switchjffs2() function(see fstools package).
  During the process of switchjffs2(), the devices(such as /dev/sdaxx,
  /dev/blockmmcxx) mounted under /mnt dir will lost.

  This is for patch https://patchwork.ozlabs.org/patch/892633/
  Since it will lost mount point, samba service also generate the options
  for devices.

Signed-off-by: Rosy Song <rosysong@rosinson.com>
---
 package/network/services/samba36/Makefile          |  2 -
 .../network/services/samba36/files/samba.defaults  | 60 ++++++++++++++++++++++
 2 files changed, 60 insertions(+), 2 deletions(-)
 create mode 100644 package/network/services/samba36/files/samba.defaults

Patch

diff --git a/package/network/services/samba36/Makefile b/package/network/services/samba36/Makefile
index 39bfcc6c4f..53843a7269 100644
--- a/package/network/services/samba36/Makefile
+++ b/package/network/services/samba36/Makefile
@@ -149,8 +149,6 @@  define Package/samba36-server/conffiles
 endef
 
 define Package/samba36-server/install
-	$(INSTALL_DIR) $(1)/etc/config
-	$(INSTALL_CONF) ./files/samba.config $(1)/etc/config/samba
 	$(INSTALL_DIR) $(1)/etc/samba
 	$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/samba
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/codepages/lowcase.dat $(1)/etc/samba
diff --git a/package/network/services/samba36/files/samba.defaults b/package/network/services/samba36/files/samba.defaults
new file mode 100644
index 0000000000..ae8dad98a9
--- /dev/null
+++ b/package/network/services/samba36/files/samba.defaults
@@ -0,0 +1,60 @@ 
+#!/bin/sh
+#
+# Copyright (C) 2018 OpenWrt.org
+# Copyright (C) 2018 rosysong@rosinson.com
+#
+
+. /lib/functions.sh
+. /lib/samba/samba.sh
+
+samba_conf_file=/etc/config/samba
+
+samba_append_header() {
+cat > $samba_conf_file <<EOF
+config samba
+	option 'name'			'OpenWrt'
+	option 'workgroup'		'WORKGROUP'
+	option 'description'		'OpenWrt'
+	option 'homes'			'1'
+
+EOF
+}
+
+samba_append_sambashare() { # <device name> <mount point>
+cat >> $samba_conf_file <<EOF
+config sambashare
+	option browseable 'yes'
+	option name '$1'
+	option path '$2'
+	option users 'root'
+	option read_only 'no'
+	option guest_ok 'yes'
+	option create_mask '0755'
+	option dir_mask '0755'
+
+EOF
+}
+
+_samba_init_config() {
+    local dn
+    local mp
+
+    config_get dn $1 device
+    config_get mp $1 target
+
+    [ -z "$dn" -o -z "$mp" ] && return
+
+    samba_append_sambashare $(basename $dn) $mp
+}
+
+samba_init_config() {
+    local dn
+    local mp
+
+    samba_append_header
+
+    config_load fstab
+    config_foreach _samba_init_config mount
+}
+
+[ ! -e $samba_conf_file ] && samba_init_config