diff options
Diffstat (limited to 'extras/hook-scripts/set/post/S30samba-set.sh')
| -rwxr-xr-x | extras/hook-scripts/set/post/S30samba-set.sh | 74 |
1 files changed, 52 insertions, 22 deletions
diff --git a/extras/hook-scripts/set/post/S30samba-set.sh b/extras/hook-scripts/set/post/S30samba-set.sh index 4bac61f48a1..854f131f6c8 100755 --- a/extras/hook-scripts/set/post/S30samba-set.sh +++ b/extras/hook-scripts/set/post/S30samba-set.sh @@ -24,11 +24,11 @@ CONFIGFILE= LOGFILEBASE= PIDDIR= GLUSTERD_WORKDIR= - -enable_smb="" +USERSMB_SET="" +USERCIFS_SET="" function parse_args () { - ARGS=$(getopt -l $OPTSPEC -o "o" -name $PROGNAME $@) + ARGS=$(getopt -o 'o:' -l $OPTSPEC -n $PROGNAME -- "$@") eval set -- "$ARGS" while true; do @@ -41,21 +41,25 @@ function parse_args () { shift GLUSTERD_WORKDIR=$1 ;; - *) + --) + shift + break + ;; + -o) shift - for pair in $@; do - read key value < <(echo "$pair" | tr "=" " ") + read key value < <(echo "$1" | tr "=" " ") case "$key" in "user.cifs") - enable_smb=$value + USERCIFS_SET="YES" ;; "user.smb") - enable_smb=$value + USERSMB_SET="YES" ;; *) ;; esac - done + ;; + *) shift break ;; @@ -85,7 +89,7 @@ function add_samba_share () { STRING+="glusterfs:loglevel = 7\n" STRING+="path = /\n" STRING+="read only = no\n" - STRING+="guest ok = yes\n" + STRING+="kernel share modes = no\n" printf "$STRING" >> ${CONFIGFILE} } @@ -95,13 +99,13 @@ function sighup_samba () { then kill -HUP "$pid"; else - /etc/init.d/smb condrestart + service smb condrestart fi } -function del_samba_share () { +function deactivate_samba_share () { volname=$1 - sed -i "/\[gluster-$volname\]/,/^$/d" /etc/samba/smb.conf + sed -i -e '/^\[gluster-'"$volname"'\]/{ :a' -e 'n; /available = no/H; /^$/!{$!ba;}; x; /./!{ s/^/available = no/; $!{G;x}; $H; }; s/.*//; x; };' ${CONFIGFILE} } function is_volume_started () { @@ -110,22 +114,48 @@ function is_volume_started () { cut -d"=" -f2)" } -parse_args $@ -if [ "0" = $(is_volume_started "$VOL") ]; then +function get_smb () { + volname=$1 + uservalue= + + usercifsvalue=$(grep user.cifs $GLUSTERD_WORKDIR/vols/"$volname"/info |\ + cut -d"=" -f2) + usersmbvalue=$(grep user.smb $GLUSTERD_WORKDIR/vols/"$volname"/info |\ + cut -d"=" -f2) + + if [ -n "$usercifsvalue" ]; then + if [ "$usercifsvalue" = "disable" ] || [ "$usercifsvalue" = "off" ]; then + uservalue="disable" + fi + fi + + if [ -n "$usersmbvalue" ]; then + if [ "$usersmbvalue" = "disable" ] || [ "$usersmbvalue" = "off" ]; then + uservalue="disable" + fi + fi + + echo "$uservalue" +} + +parse_args "$@" +if [ "0" = "$(is_volume_started "$VOL")" ]; then exit 0 fi -if [ "$enable_smb" = "enable" ]; then +if [ "$USERCIFS_SET" = "YES" ] || [ "$USERSMB_SET" = "YES" ]; then #Find smb.conf, smbd pid directory and smbd logfile path find_config_info - if ! grep --quiet "\[gluster-$VOL\]" /etc/samba/smb.conf ; then + + if [ "$(get_smb "$VOL")" = "disable" ]; then + deactivate_samba_share $VOL + else + if ! grep --quiet "\[gluster-$VOL\]" ${CONFIGFILE} ; then add_samba_share $VOL - sighup_samba + else + sed -i '/\[gluster-'"$VOL"'\]/,/^$/!b;/available = no/d' ${CONFIGFILE} + fi fi - -elif [ "$enable_smb" = "disable" ]; then - find_config_info - del_samba_share $VOL sighup_samba fi |
