summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extras/hook-scripts/set/post/S30samba-set.sh127
-rw-r--r--extras/hook-scripts/start/post/S30samba-start.sh24
2 files changed, 147 insertions, 4 deletions
diff --git a/extras/hook-scripts/set/post/S30samba-set.sh b/extras/hook-scripts/set/post/S30samba-set.sh
new file mode 100644
index 00000000000..bec3ac270b3
--- /dev/null
+++ b/extras/hook-scripts/set/post/S30samba-set.sh
@@ -0,0 +1,127 @@
+#!/bin/bash
+
+PROGNAME="Ssamba-set"
+OPTSPEC="volname:"
+VOL=
+MNT_PRE="/mnt/samba"
+
+enable_cifs=""
+
+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_cifs=$value;;
+ *) ;;
+ esac
+ done
+
+ shift
+ break
+ ;;
+ esac
+ shift
+ done
+}
+
+function add_samba_export () {
+ volname=$1
+ mnt_pre=$2
+ mkdir -p $mnt_pre/$volname && \
+ printf "\n[gluster-$volname]\ncomment=For samba export of volume $volname\npath=$mnt_pre/$volname\nread only=no\nguest ok=yes\n" >> /etc/samba/smb.conf
+}
+
+function sighup_samba () {
+ pid=`cat /var/run/smbd.pid`
+ if [ "$pid" != "" ]
+ then
+ kill -HUP "$pid";
+ else
+ /etc/init.d/smb start
+ fi
+}
+
+function add_fstab_entry () {
+ volname=$1
+ mntpt=$2
+ mntent="`hostname`:/$volname $mntpt glusterfs defaults,transport=tcp 0 0"
+ exists=`grep "$mntent" /etc/fstab`
+ if [ "$exists" == "" ]
+ then
+ echo "$mntent" >> /etc/fstab
+ fi
+}
+
+function del_samba_export () {
+ volname=$1
+ cp /etc/samba/smb.conf /tmp/smb.conf
+ sed -i "/gluster-$volname/,/^$/d" /tmp/smb.conf &&\
+ mv /tmp/smb.conf /etc/samba/smb.conf
+}
+
+function umount_volume () {
+ volname=$1
+ mnt_pre=$2
+ umount -l $mnt_pre/$volname
+}
+
+function remove_fstab_entry () {
+ volname=$1
+ mntpt=$2
+ mntent="`hostname`:/$volname $mntpt glusterfs defaults,transport=tcp 0 0"
+ esc_mntent=$(echo -e "$mntent" | sed 's/\//\\\//g')
+ exists=`grep "$mntent" /etc/fstab`
+ if [ "$exists" != " " ]
+ then
+ sed -i /"$esc_mntent"/d /etc/fstab
+ fi
+}
+
+function is_volume_started () {
+ volname=$1
+ echo "$(grep status /var/lib/glusterd/vols/"$volname"/info | cut -d"=" -f2)"
+}
+
+function get_cifs () {
+ volname=$1
+ echo "$(grep user.cifs /var/lib/glusterd/vols/"$volname"/info | cut -d"=" -f2)"
+}
+
+function mount_volume () {
+ volname=$1
+ mntpt=$2
+ if [ "$(cat /proc/mounts | grep "$mntpt")" == "" ]; then
+ mount -t glusterfs `hostname`:$volname $mntpt && \
+ add_fstab_entry $volname $mntpt
+ fi
+}
+
+parse_args $@
+if [ "0" = $(is_volume_started "$VOL") ]; then
+ exit 0
+fi
+
+if [ "$enable_cifs" = "enable" ]; then
+ add_samba_export $VOL $MNT_PRE
+ mkdir -p $MNT_PRE/$VOL
+ sleep 5
+ mount_volume $VOL $MNT_PRE/$VOL
+ sighup_samba
+
+elif [ "$enable_cifs" = "disable" ]; then
+ del_samba_export $VOL
+ umount_volume $VOL $MNT_PRE
+ remove_fstab_entry $VOL $MNT_PRE/$VOL
+ sighup_samba
+fi
diff --git a/extras/hook-scripts/start/post/S30samba-start.sh b/extras/hook-scripts/start/post/S30samba-start.sh
index 5323cca76d5..70158e75590 100644
--- a/extras/hook-scripts/start/post/S30samba-start.sh
+++ b/extras/hook-scripts/start/post/S30samba-start.sh
@@ -33,9 +33,9 @@ function add_samba_export () {
function sighup_samba () {
pid=`cat /var/run/smbd.pid`
- if [ $pid != " " ]
+ if [ "$pid" != "" ]
then
- kill -HUP $pid;
+ kill -HUP "$pid";
else
/etc/init.d/smb condrestart
fi
@@ -52,11 +52,27 @@ function add_fstab_entry () {
fi
}
+function get_cifs () {
+ volname=$1
+ echo "$(grep user.cifs /var/lib/glusterd/vols/"$volname"/info | cut -d"=" -f2)"
+}
+
+function mount_volume () {
+ volname=$1
+ mntpt=$2
+ if [ "$(cat /proc/mounts | grep "$mntpt")" == "" ]; then
+ mount -t glusterfs `hostname`:$volname $mntpt && \
+ add_fstab_entry $volname $mntpt
+ fi
+}
parse_args $@
+if [ $(get_cifs "$VOL") = "disable" ]; then
+ exit 0
+fi
+
add_samba_export $VOL $MNT_PRE
mkdir -p $MNT_PRE/$VOL
sleep 5
-mount -t glusterfs `hostname`:$VOL $MNT_PRE/$VOL && \
- add_fstab_entry $VOL $MNT_PRE/$VOL
+mount_volume $VOL $MNT_PRE/$VOL
sighup_samba