samba.sh 1.8 KB

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