mt76: update to the latest version
[openwrt/staging/wigyori.git] / package / network / services / samba36 / files / lib / samba.sh
1 #!/bin/sh
2 #
3 # Copyright (C) 2018 OpenWrt.org
4 # Copyright (C) 2018 rosysong@rosinson.com
5 #
6
7 . /lib/functions.sh
8
9 FLAG_DEV_TYPE=
10 FLAG_DEV_MOPT=
11 FLAG_HAS_SECT=
12
13 samba_dev_filter() { # <devname> <[path,/dev/]>
14 case $1 in
15 ${2}mtdblock*|\
16 ${2}ubi*)
17 FLAG_DEV_TYPE="mtd"
18 ;;
19 ${2}loop*|\
20 ${2}mmcblk*|\
21 ${2}sd*|\
22 ${2}hd*|\
23 ${2}md*|\
24 ${2}nvme*|\
25 ${2}vd*|\
26 ${2}xvd*)
27 FLAG_DEV_TYPE="not-mtd"
28 ;;
29 *)
30 [ -b ${2}${1} ] && FLAG_DEV_TYPE="not-mtd"
31 [ -b /dev/mapper/$1 ] && FLAG_DEV_TYPE="not-mtd"
32 ;;
33 esac
34 }
35
36 samba_cfg_lookup() { # <section> <name>
37 config_get name $1 name
38 [ "$name" = "$2" ] || return
39 FLAG_HAS_SECT=y
40 }
41
42 samba_cfg_delete() { # <section> <name>
43 config_get name $1 name
44 [ "$name" = "$2" ] || return
45 uci -q delete samba.$1
46 }
47
48 samba_find_mount_point() { # <devname>
49 # search mount point in /proc/mounts
50 while read l; do
51 local d=$(echo $l | awk '/^\/dev/ {print $1}')
52 [ "$d" = "/dev/$1" ] || continue
53
54 FLAG_DEV_MOPT=$(echo $l | awk '/^\/dev/ {print $2}')
55 break
56 done < /proc/mounts
57 }
58
59 _samba_add_section() { # <devname> <mount point>
60 uci -q batch <<-EOF
61 add samba sambashare
62 set samba.@sambashare[-1].browseable='yes'
63 set samba.@sambashare[-1].name='$1'
64 set samba.@sambashare[-1].path='$2'
65 set samba.@sambashare[-1].users='root'
66 set samba.@sambashare[-1].read_only='no'
67 set samba.@sambashare[-1].guest_ok='yes'
68 set samba.@sambashare[-1].create_mask='0755'
69 set samba.@sambashare[-1].dir_mask='0755'
70 EOF
71 }
72
73 samba_add_section() { # <devname> [<mount point>]
74 FLAG_HAS_SECT=
75 FLAG_DEV_MOPT=
76
77 config_foreach samba_cfg_lookup sambashare $1
78 [ -z "$FLAG_HAS_SECT" ] || return
79
80 samba_find_mount_point $1
81 [ -n "$FLAG_DEV_MOPT" ] || return
82
83 [ -n "$2" -a "$2" = "$FLAG_DEV_MOPT" ] || \
84 _samba_add_section $1 $FLAG_DEV_MOPT
85 }
86
87 samba_delete_section() { # <devname>
88 config_foreach samba_cfg_delete sambashare $1
89 }