From ecc475d0a517d7f58014bed93fc0957b3369d1b7 Mon Sep 17 00:00:00 2001 From: Raghavendra Talur Date: Thu, 6 Mar 2014 19:09:13 +0530 Subject: hook-scripts: Move smb hooks to right place. Moved the hook-scripts to dirs corresponding to event. Also, edited S30samba-set.sh to with changes in other two hook scripts to bring uniformity. Change-Id: Ib98c0a18d4bb5d0ba4b881b2e19b40d72580b1c2 BUG: 1073468 Signed-off-by: Raghavendra Talur Reviewed-on: http://review.gluster.org/7201 Reviewed-by: Poornima G Reviewed-by: Bala FA Tested-by: Gluster Build System --- extras/hook-scripts/set/post/Makefile.am | 1 + extras/hook-scripts/set/post/S30samba-set.sh | 126 +++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 extras/hook-scripts/set/post/Makefile.am create mode 100755 extras/hook-scripts/set/post/S30samba-set.sh (limited to 'extras/hook-scripts/set/post') diff --git a/extras/hook-scripts/set/post/Makefile.am b/extras/hook-scripts/set/post/Makefile.am new file mode 100644 index 00000000000..9ded234cf9b --- /dev/null +++ b/extras/hook-scripts/set/post/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = S30samba-set.sh diff --git a/extras/hook-scripts/set/post/S30samba-set.sh b/extras/hook-scripts/set/post/S30samba-set.sh new file mode 100755 index 00000000000..88f6e797b40 --- /dev/null +++ b/extras/hook-scripts/set/post/S30samba-set.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +#Need to be copied to hooks//set/post/ + +#TODO: All gluster and samba paths are assumed for fedora like systems. +#Some efforts are required to make it work on other distros. + +#The preferred way of creating a smb share of a gluster volume has changed. +#The old method was to create a fuse mount of the volume and share the mount +#point through samba. +# +#New method eliminates the requirement of fuse mount and changes in fstab. +#glusterfs_vfs plugin for samba makes call to libgfapi to access the volume. +# +#This hook script enables user to enable or disable smb share by volume set +#option. Keys "user.cifs" and "user.smb" both are valid, but user.smb is +#preferred. + + +PROGNAME="Ssamba-set" +OPTSPEC="volname:" +VOL= +CONFIGFILE= +LOGFILEBASE= +PIDDIR= + +enable_smb="" + +function parse_args () { + ARGS=$(getopt -l $OPTSPEC -o "o" -name $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 "=" " ") + case "$key" in + "user.cifs") + enable_smb=$value + ;; + "user.smb") + enable_smb=$value + ;; + *) + ;; + esac + done + + shift + break + ;; + esac + shift + done +} + +function find_config_info () { + cmdout=`smbd -b | grep smb.conf` + if [ $? -ne 0 ]; then + echo "Samba is not installed" + exit 1 + fi + CONFIGFILE=`echo $cmdout | awk '{print $2}'` + PIDDIR=`smbd -b | grep PIDDIR | awk '{print $2}'` + LOGFILEBASE=`smbd -b | grep 'LOGFILEBASE' | awk '{print $2}'` +} + +function add_samba_share () { + volname=$1 + STRING="\n[gluster-$volname]\n" + STRING+="comment = For samba share of volume $volname\n" + STRING+="vfs objects = glusterfs\n" + STRING+="glusterfs:volume = $volname\n" + STRING+="glusterfs:logfile = $LOGFILEBASE/glusterfs-$volname.%%M.log\n" + STRING+="glusterfs:loglevel = 7\n" + STRING+="path = %%P/\n" + STRING+="read only = no\n" + STRING+="guest ok = yes\n" + printf "$STRING" >> ${CONFIGFILE} +} + +function sighup_samba () { + pid=`cat ${PIDDIR}/smbd.pid` + if [ "x$pid" != "x" ] + then + kill -HUP "$pid"; + else + /etc/init.d/smb start + fi +} + +function del_samba_share () { + volname=$1 + sed -i "/\[gluster-$volname\]/,/^$/d" /etc/samba/smb.conf +} + +function is_volume_started () { + volname=$1 + echo "$(grep status /var/lib/glusterd/vols/"$volname"/info |\ + cut -d"=" -f2)" +} + +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 + add_samba_share $VOL + sighup_samba + fi + +elif [ "$enable_smb" = "disable" ]; then + del_samba_share $VOL + sighup_samba +fi -- cgit