Subversion Repositories ALCASAR

Rev

Rev 2223 | Rev 2488 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 2223 Rev 2454
1
#!/bin/bash
1
#!/bin/bash
2
# $Id: alcasar-profil.sh 2223 2017-05-14 14:38:01Z tom.houdayer $
2
# $Id: alcasar-profil.sh 2454 2017-12-09 18:59:31Z tom.houdayer $
3
 
3
 
4
# alcasar-profil.sh
4
# alcasar-profil.sh
5
# by Richard REY
5
# by Richard REY
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
8
# Gestion des comptes liés aux profiles
8
# Gestion des comptes liés aux profiles
9
# Manage the profil logins
9
# Manage the profil logins
10
 
10
 
11
ADM_PROFIL="admin"
11
ADM_PROFIL="admin"
12
PROFILS="backup manager"
12
PROFILS="backup manager"
13
ALL_PROFILS=`echo $ADM_PROFIL $PROFILS`
13
ALL_PROFILS=`echo $ADM_PROFIL $PROFILS`
14
DIR_KEY="/usr/local/etc/digest"
14
DIR_KEY="/usr/local/etc/digest"
15
SED="/bin/sed -i"
15
SED="/bin/sed -i"
16
Lang=`echo $LANG|cut -c 1-2`
16
Lang=`echo $LANG|cut -c 1-2`
17
 
17
 
18
# liste les comptes de chaque profile
18
# liste les comptes de chaque profile
19
function list () {
19
function list () {
20
	for i in $ALL_PROFILS
20
	for i in $ALL_PROFILS
21
	do
21
	do
22
		if [ $Lang == "fr" ]
22
		if [ $Lang == "fr" ]
23
       		then
23
			then
24
			echo -n "Comptes liés au profil '$i' : "
24
			echo -n "Comptes liés au profil '$i' : "
25
 
25
 
26
		else
26
		else
27
	       		echo -n "accounts linked with profile '$i' : "
27
			echo -n "accounts linked with profile '$i' : "
28
		fi
28
		fi
29
		account_list=`cat $DIR_KEY/key_only_$i | cut -d':' -f1|sort`
29
		account_list=`cat $DIR_KEY/key_only_$i | cut -d':' -f1|sort`
30
		for account in $account_list
30
		for account in $account_list
31
		do
31
		do
32
			echo -n "$account " 
32
			echo -n "$account "
33
		done
33
		done
34
	echo
34
	echo
35
	done
35
	done
36
}
36
}
37
# ajoute les comptes du profil "admin" aux autres profils
37
# ajoute les comptes du profil "admin" aux autres profils
38
# crée le fichier de clés contenant tous les compte (pour l'accès au centre de gestion)
38
# crée le fichier de clés contenant tous les compte (pour l'accès au centre de gestion)
39
function concat () {
39
function concat () {
40
	> $DIR_KEY/key_all
40
	> $DIR_KEY/key_all
41
	for i in $PROFILS
41
	for i in $PROFILS
42
	do
42
	do
43
		cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$i
43
		cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$i
44
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_$i
44
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_$i
45
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_all
45
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_all
46
	done
46
	done
47
	cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$ADM_PROFIL
47
	cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$ADM_PROFIL
48
	cat $DIR_KEY/key_only_$ADM_PROFIL >> $DIR_KEY/key_all
48
	cat $DIR_KEY/key_only_$ADM_PROFIL >> $DIR_KEY/key_all
49
	chown -R root:apache $DIR_KEY
49
	chown -R root:apache $DIR_KEY
50
	chmod 640 $DIR_KEY/key_*
50
	chmod 640 $DIR_KEY/key_*
51
}
51
}
52
 
52
 
53
usage="Usage: alcasar-profil.sh [-l|--list] [-a|--add] [-d|--del] [-p|--pass]"
53
usage="Usage: alcasar-profil.sh [-l|--list] [-a|--add] [-d|--del] [-p|--pass]"
54
nb_args=$#
54
nb_args=$#
55
args=$1
55
args=$1
56
 
56
 
57
# on met en place la structure minimale
57
# on met en place la structure minimale
58
if [ ! -e $DIR_KEY/key_$ADM_PROFIL ]
58
if [ ! -e $DIR_KEY/key_$ADM_PROFIL ]
59
then
59
then
60
	touch $DIR_KEY/key_$ADM_PROFIL
60
	touch $DIR_KEY/key_$ADM_PROFIL
61
fi
61
fi
62
cp -f $DIR_KEY/key_$ADM_PROFIL $DIR_KEY/key_only_$ADM_PROFIL
62
cp -f $DIR_KEY/key_$ADM_PROFIL $DIR_KEY/key_only_$ADM_PROFIL
63
for i in $PROFILS
63
for i in $PROFILS
64
do
64
do
65
	if [ ! -e $DIR_KEY/key_only_$i ]
65
	if [ ! -e $DIR_KEY/key_only_$i ]
66
	then
66
	then
67
		touch $DIR_KEY/key_only_$i
67
		touch $DIR_KEY/key_only_$i
68
	fi
68
	fi
69
done
69
done
70
concat
70
concat
71
if [ $nb_args -eq 0 ]
71
if [ $nb_args -eq 0 ]
72
then
72
then
73
	echo $usage
73
	echo $usage
74
	exit 0
74
	exit 0
75
fi
75
fi
76
case $args in
76
case $args in
77
	-\? | -h* | --h*)
77
	-\? | -h* | --h*)
78
		echo "$usage"
78
		echo "$usage"
79
		exit 0
79
		exit 0
80
		;;
80
		;;
81
	--add|-a)	
81
	--add|-a)
82
		# ajout d'un compte
82
		# ajout d'un compte
83
		list
83
		list
84
		if [ $Lang == "fr" ]
84
		if [ $Lang == "fr" ]
85
	       	then
85
		then
86
			echo -n "Choisissez un profil ($ALL_PROFILS) : "
86
			echo -n "Choisissez un profil ($ALL_PROFILS) : "
87
		else
87
		else
88
			echo -n "Select a profile ($ALL_PROFILS) : "
88
			echo -n "Select a profile ($ALL_PROFILS) : "
89
		fi
89
		fi
90
		read profil
90
		read profil
91
		if [ $Lang == "fr" ]
91
		if [ $Lang == "fr" ]
92
		then
92
		then
93
			echo -n "Entrez le nom du compte à créer (profil '$profil') : "
93
			echo -n "Entrez le nom du compte à créer (profil '$profil') : "
94
		else
94
		else
95
		       	echo "Enter the name of the account to create (profile '$profil') : "
95
			echo "Enter the name of the account to create (profile '$profil') : "
96
		fi
96
		fi
97
		read account
97
		read account
98
		# on teste s'il n'existe pas déjà
98
		# on teste s'il n'existe pas déjà
99
		for i in $ALL_PROFILS
99
		for i in $ALL_PROFILS
100
		do
100
		do
101
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
101
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
102
			for j in $tmp_account
102
			for j in $tmp_account
103
				do
103
				do
104
				if [ "$j" = "$account" ]
104
				if [ "$j" = "$account" ]
105
					then if [ $Lang == "fr" ]
105
					then if [ $Lang == "fr" ]
106
						then
106
						then
107
							echo "Ce compte existe déjà"
107
							echo "Ce compte existe déjà"
108
						else
108
						else
109
							echo "This account already exists"
109
							echo "This account already exists"
110
						fi
110
						fi
111
					exit 0
111
					exit 0
112
				fi
112
				fi
113
				done
113
				done
114
		done
114
		done
115
		/usr/bin/htdigest $DIR_KEY/key_only_$profil "ALCASAR Control Center (ACC)" $account
115
		/usr/bin/htdigest $DIR_KEY/key_only_$profil "ALCASAR Control Center (ACC)" $account
116
		concat
116
		concat
117
		list
117
		list
118
		;;
118
		;;
119
	--del|-d)
119
	--del|-d)
120
		# suppression d'un compte
120
		# suppression d'un compte
121
		list
121
		list
122
		if [ $Lang == "fr" ]
122
		if [ $Lang == "fr" ]
123
		then
123
		then
124
			echo -n "entrez le nom du compte à supprimer : "
124
			echo -n "entrez le nom du compte à supprimer : "
125
		else
125
		else
126
			echo -n "enter the name of the account to remove : "
126
			echo -n "enter the name of the account to remove : "
127
		fi
127
		fi
128
		read account
128
		read account
129
		for i in $ALL_PROFILS
129
		for i in $ALL_PROFILS
130
			do
130
			do
131
			$SED "/^$account:/d" $DIR_KEY/key_only_$i
131
			$SED "/^$account:/d" $DIR_KEY/key_only_$i
132
			done
132
			done
133
		concat
133
		concat
134
		list
134
		list
135
		;;
135
		;;
136
	--pass|-p)
136
	--pass|-p)
137
		# changement du mot de passe d'un compte
137
		# changement du mot de passe d'un compte
138
		list
138
		list
139
		if [ $Lang == "fr" ]
139
		if [ $Lang == "fr" ]
140
		then
140
		then
141
			echo "Changement de mot de passe"
141
			echo "Changement de mot de passe"
142
			echo -n "Entrez le nom du compte : "
142
			echo -n "Entrez le nom du compte : "
143
		else
143
		else
144
			echo "Password change"
144
			echo "Password change"
145
			echo -n "Enter the name of the account : "
145
			echo -n "Enter the name of the account : "
146
		fi
146
		fi
147
		read account
147
		read account
148
		for i in $ALL_PROFILS
148
		for i in $ALL_PROFILS
149
		do
149
		do
150
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
150
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
151
			for j in $tmp_account
151
			for j in $tmp_account
152
				do
152
				do
153
				if [ "$j" = "$account" ]
153
				if [ "$j" = "$account" ]
154
					then
154
					then
155
					/usr/bin/htdigest $DIR_KEY/key_only_$i "ALCASAR Control Center (ACC)" $account
155
					/usr/bin/htdigest $DIR_KEY/key_only_$i "ALCASAR Control Center (ACC)" $account
156
				fi
156
				fi
157
				done
157
				done
158
		done
158
		done
159
		concat
159
		concat
160
		;;
160
		;;
161
	--list|-l)
161
	--list|-l)
162
		# liste des comptes par profile
162
		# liste des comptes par profile
163
		list
163
		list
164
		;;
164
		;;
165
	*)
165
	*)
166
		if [ $Lang == "fr" ]
166
		if [ $Lang == "fr" ]
167
		then
167
		then
168
			echo "Argument inconnu :$1";
168
			echo "Argument inconnu :$1";
169
		else
169
		else
170
			echo "Unknown argument : $i";
170
			echo "Unknown argument : $i";
171
		fi
171
		fi
172
		echo "$usage"
172
		echo "$usage"
173
		exit 1
173
		exit 1
174
		;;
174
		;;
175
esac
175
esac
176
 
176