summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc
blob: 944bdbe81618bf134cdc1c092d15d9ecceeb095c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
function mount_shares()
{
	for (( CONFIGROW = 1; CONFIGROW < ${#ROHSHARES[@]}; CONFIGROW++ )); do
		SHAREPATH=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 1 -d$'\t')          # cifs- oder nfs-Share
		SHARELETTER=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 2 -d$'\t' | \
					sed 's/://g')					# Laufwerksbuchstabe ohne :
		SHARENAME=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 3 -d$'\t' | sed 's/ /_/g')	# Leerzeichen raus.
		SHAREUSER=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 4 -d$'\t')		# Username, bei Userhome nicht vorhanden
		SHAREPASS=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 5 -d$'\t')		# User-PW, bei Userhome nicht vorhanden

		# Sharetyp bestimmen:
		if [ "${SHAREPATH:0:2}" == '\\' ]  || [ "${SHAREPATH:0:2}" == '//' ]; then
			USER=$(echo "$SHAREUSER"|cut -d '\' -f 2)
			SHAREPATH="${SHAREPATH//\\//}"					# '\' --> `/` :-)
			MOUNTER=cifs
			MOUNTPARAM="$MOUNTCIFSPRAE"
			MOUNTOPTS="$MOUNTCIFSOPTS"
		else
			MOUNTER=nfs
			MOUNTPARAM="$MOUNTNFSPRAE"
			MOUNTOPTS="$MOUNTNFSOPTS"
		fi

		# User-Homeverzeichnis?
		if [ "${SHARENAME:0:5}" == "Home-" ]; then
			logger "openslx sharemapper: home share \"$SHARENAME\" found (for PERSISTENT)."
			export USER="${GLOBALUSER}"
			export PASSWD="${PW}"
			mounter "${MOUNTPARAM}" "${MOUNTOPTS}" "${SHAREPATH}" "${USERHOMEDIR}" 2>/dev/null 1>&2 &
			unset USER
			unset PASSWD

			# linken: userhomedir <-sharename, userhomedir <- shareletter 
			#logger "openslx sharemapper: Linking ${USERDESKTOP}/$(basename $USERHOMEDIR, if possible."
			logger "openslx sharemapper: Linking ${USERDESKTOP}/$(basename $USERHOMEDIR), if possible."
			# Changed: Link on Desktop no longer "Home-verz.", but same
			# name as last part of $USERHOMEDIR (-->PERSISTENT)
			# ln -s "$USERHOMEDIR" "${USERDESKTOP}"/"$SHARENAME"
			ln -s "$USERHOMEDIR" "${USERDESKTOP}"/$(basename "$USERHOMEDIR")
			logger "openslx sharemapper: "${USERDESKTOP}"/$(basename "$USERHOMEDIR") linked."
		else
			if [ -n "${SHARENAME}" ]; then
				mount_share &
			elif [ -n "${SHARELETTER}" ]; then
				SHARENAME="$SHARELETTER"
				mount_share &
			else
				SHARENAME="$(basename ${SHAREPATH})"
				if [ -n "${SHARENAME}" ]; then
					mount_share &
				else
					logger "openslx sharemapper: Neither SHARENAME nor SHARELETTER found - giving up! (Config row: $CONFIGROW)"
					continue
				fi
			fi
		fi
	done
}

mnt_shares() {
	logger "openslx sharemapper: Started."
	
	# Wait for network connection to base system
	x=1
	while ! ping -w 1 -c 1 "${NATADDR}" 2>/dev/null 1>&2; do
		[ "$x" -gt 20 ] && { logger "openslx sharemapper: could not reach base system. Giving up."; exit 1; }
		let x=x+1
		sleep 2
	done
	
	logger "openslx sharemapper: base system reaching; commencing."
	
	# REMAPMODE (remapMode):                0: None, 1 Native, 2 Native Fallback, 3 vmware
	# CREATEMISSING (createMissingRemap):   0: Nichts tun, 1 xdg-Verzeichnisse
	
	case "$REMAPMODE" in
		0)      logger "openslx sharemapper: remapMode 0 (do nothing) detected."
		        ;;
		1)      logger "openslx sharemapper: remapMode 1 (native mode) detected."
			preliminaries_native
			get_creds               # fills global var PW with (currently) decrypted password
			get_shares              # fills array ROHSHARES; row 0 global infos from (shares-)CONFIGFILE,
						# following rows:       column 1 share path, col 2 drive letter, col 3 share name,
						#                       column 4 username, col 5 password.
			mount_shares            # mounts shares given in array ROHSHARES.
			;;
		2)      logger "openslx sharemapper: remapMode 2 (fallback mode) detected."
			preliminaries_native
			get_creds               # fills global var PW with (currently) decrypted password
			get_shares              # fills array ROHSHARES; row 0 global infos from (shares-)CONFIGFILE,
			# following rows:       column 1 share path, col 2 drive letter, col 3 share name,
			#                       column 4 username, col 5 password.
			mount_shares            # mounts shares given in array ROHSHARES.
			check_fallback          # checks for a mounted home and fallbacks to vmware share, if none found.
			;;
		3)      logger "openslx sharemapper: remapMode 3 (vmware mode) detected."
			preliminaries_vmware
			mount_shares            # mounts shares given in array ROHSHARES - runvirt checks whether there's
                        			# a home share given or not..
			;;
		*)      logger "openslx sharemapper: unknown remapMode in $SLXCONFIGFILE; doing nothing."
			;;
	esac
	
	# By the way: We also have to start a bwLehrpool-Suite given script (runscript). For convenience we will start it here and 
	# after mounting shares, as perhaps a given script needs mounted shares.
	exit 0
}