diff options
Diffstat (limited to 'extras/hook-scripts/set/post/S30samba-set.sh')
| -rwxr-xr-x | extras/hook-scripts/set/post/S30samba-set.sh | 111 |
1 files changed, 73 insertions, 38 deletions
diff --git a/extras/hook-scripts/set/post/S30samba-set.sh b/extras/hook-scripts/set/post/S30samba-set.sh index 88f6e797b40..854f131f6c8 100755 --- a/extras/hook-scripts/set/post/S30samba-set.sh +++ b/extras/hook-scripts/set/post/S30samba-set.sh @@ -18,43 +18,51 @@ PROGNAME="Ssamba-set" -OPTSPEC="volname:" +OPTSPEC="volname:,gd-workdir:" VOL= CONFIGFILE= LOGFILEBASE= PIDDIR= - -enable_smb="" +GLUSTERD_WORKDIR= +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 case $1 in - --volname) - shift - VOL=$1 - ;; - *) - shift - for pair in $@; do - read key value < <(echo "$pair" | tr "=" " ") + --volname) + shift + VOL=$1 + ;; + --gd-workdir) + shift + GLUSTERD_WORKDIR=$1 + ;; + --) + shift + break + ;; + -o) + shift + 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 - ;; + ;; + *) + shift + break + ;; esac shift done @@ -79,9 +87,9 @@ function add_samba_share () { STRING+="glusterfs:volume = $volname\n" STRING+="glusterfs:logfile = $LOGFILEBASE/glusterfs-$volname.%%M.log\n" STRING+="glusterfs:loglevel = 7\n" - STRING+="path = %%P/\n" + STRING+="path = /\n" STRING+="read only = no\n" - STRING+="guest ok = yes\n" + STRING+="kernel share modes = no\n" printf "$STRING" >> ${CONFIGFILE} } @@ -91,36 +99,63 @@ function sighup_samba () { then kill -HUP "$pid"; else - /etc/init.d/smb start + 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 () { volname=$1 - echo "$(grep status /var/lib/glusterd/vols/"$volname"/info |\ + echo "$(grep status $GLUSTERD_WORKDIR/vols/"$volname"/info |\ 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 -#Find smb.conf, smbd pid directory and smbd logfile path -find_config_info -if [ "$enable_smb" = "enable" ]; then - if ! grep --quiet "\[gluster-$VOL\]" /etc/samba/smb.conf ; then +if [ "$USERCIFS_SET" = "YES" ] || [ "$USERSMB_SET" = "YES" ]; then + #Find smb.conf, smbd pid directory and smbd logfile path + find_config_info + + 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 - del_samba_share $VOL sighup_samba fi |
