Subversion Repositories ALCASAR

Rev

Rev 1798 | Rev 2223 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log

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