Subversion Repositories ALCASAR

Rev

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

Rev 1452 Rev 1502
1
#!/bin/bash
1
#!/bin/bash
-
 
2
 
-
 
3
# alcasar-sms.sh
-
 
4
# by Nicolas Aubry & Rexy
-
 
5
# This script is distributed under the Gnu General Public License (GPL)
-
 
6
 
-
 
7
# This script manages the 'gammu-smsd' service when a GSM adapter is detected
-
 
8
# Ce script gère le service 'gammu-smsd' quand un adaptateur GSM est détecté
-
 
9
 
2
#########################################
10
#########################################
3
#######	VARIABLES ne pas toucher ########
11
#######	VARIABLES ########
4
nb_essais=3
12
nb_essais=3
5
time_account=1
13
time_account=1
6
time_ban=2
14
time_ban=2
7
#########################################
15
#########################################
8
####### IDs DB ##########################
16
####### IDs DB ##########################
9
u_db="radius"
17
u_db="radius"
10
p_db="password"
18
p_db="password"
11
#########################################
19
#########################################
12
#########################################
20
#########################################
13
 
21
 
14
rad="radcheck"
22
rad="radcheck"
15
radgp="radusergroup"
23
radgp="radusergroup"
16
radgpck="radgroupcheck"
24
radgpck="radgroupcheck"
17
radinf="userinfo"
25
radinf="userinfo"
18
 
26
 
19
sms_p="SMS_ban_perm"
27
sms_p="SMS_ban_perm"
20
sms_t="SMS_ban_temp"
28
sms_t="SMS_ban_temp"
21
 
29
 
22
inb="inbox"
30
inb="inbox"
23
SMS_c="SMS_country"
31
SMS_c="SMS_country"
24
 
32
 
25
config="/etc/gammu_smsd_conf"
33
config="/etc/gammu_smsd_conf"
26
logfile="/var/log/gammu-smsd/gammu-smsd.log"
34
logfile="/var/log/gammu-smsd/gammu-smsd.log"
27
script="/usr/local/bin/alcasar-sms.sh"
35
script="/usr/local/bin/alcasar-sms.sh"
28
public_page="/var/www/html/autoregistrationinfo.php"
36
public_page="/var/www/html/autoregistrationinfo.php"
29
index_page="/var/www/html/index.php"
37
index_page="/var/www/html/index.php"
30
separator="########## START ##########"
38
separator="########## START ##########"
31
end="%%%%%%%%%% STOP %%%%%%%%%%"
39
end="%%%%%%%%%% STOP %%%%%%%%%%"
32
 
40
 
33
 
41
 
34
usage="Usage: alcasar-gammu.sh 
42
usage="Usage: alcasar-gammu.sh 
35
Start Gammu-smsd   : --start
43
Start Gammu-smsd   : --start
36
Stop Gammu-smsd    : --stop 
44
Stop Gammu-smsd    : --stop 
37
Process on new sms : --new_sms"
45
Process on new sms : --new_sms"
38
 
46
 
39
 
47
 
40
nb_args=$#
48
nb_args=$#
41
args=$1
49
args=$1
42
 
50
 
43
 
51
 
44
# Functions
52
# Functions
45
function mode_huawei() {
53
function mode_huawei() {
46
	couple=$(lsusb | grep -i huawei | cut -d ' ' -f6)
54
	couple=$(lsusb | grep -i huawei | cut -d ' ' -f6)
47
	vendor=$(echo $couple | cut -d ':' -f1)
55
	vendor=$(echo $couple | cut -d ':' -f1)
48
	product=$(echo $couple | cut -d ':' -f2)
56
	product=$(echo $couple | cut -d ':' -f2)
49
 
57
 
50
	echo "*********************" >> /srv/log.log
58
	echo "*********************" >> /srv/log.log
51
	echo $vendor >> /srv/log.log
59
	echo $vendor >> /srv/log.log
52
	echo $product >> /srv/log.log
60
	echo $product >> /srv/log.log
53
 
61
 
54
	/usr/sbin/usb_modeswitch -I -H -v 0x$vendor -p 0x$product -V 0x$vendor -P 0x$product -W -n >> /srv/log.log
62
	/usr/sbin/usb_modeswitch -I -H -v 0x$vendor -p 0x$product -V 0x$vendor -P 0x$product -W -n >> /srv/log.log
55
}
63
}
56
 
64
 
57
function start_gammu() {
65
function start_gammu() {
58
	#On truncate la table phones (informations signal / IMEI / batterie / sms recu et envoyé)
66
	#On truncate la table phones (informations signal / IMEI / batterie / sms recu et envoyé)
59
		sql_trunc_phones="connect gammu; TRUNCATE phones;"
67
		sql_trunc_phones="connect gammu; TRUNCATE phones;"
60
		result=$(mysql --user=$u_db --password=$p_db -B -se "$sql_trunc_phones")
68
		result=$(mysql --user=$u_db --password=$p_db -B -se "$sql_trunc_phones")
61
 
69
 
62
 
70
 
63
	#On verifie que le groupe sms est créé
71
	#On verifie que le groupe sms est créé
64
		sql_check_gp="connect radius; SELECT * FROM $radgp WHERE username='sms' AND groupname='sms';"
72
		sql_check_gp="connect radius; SELECT * FROM $radgp WHERE username='sms' AND groupname='sms';"
65
		result=$(mysql --user=$u_db --password=$p_db -B -se "$sql_check_gp")
73
		result=$(mysql --user=$u_db --password=$p_db -B -se "$sql_check_gp")
66
 
74
 
67
		if test -z "$result"
75
		if test -z "$result"
68
		then
76
		then
69
			sql_add_gp="connect radius; INSERT INTO $radgp (username,groupname) VALUES ('sms','sms');"
77
			sql_add_gp="connect radius; INSERT INTO $radgp (username,groupname) VALUES ('sms','sms');"
70
			sql_add_gp_att="connect radius; INSERT INTO $radgpck (groupname,attribute,op,value) VALUES ('sms','Simultaneous-Use',':=',1);"
78
			sql_add_gp_att="connect radius; INSERT INTO $radgpck (groupname,attribute,op,value) VALUES ('sms','Simultaneous-Use',':=',1);"
71
		
79
		
72
			mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp"
80
			mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp"
73
			mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp_att"
81
			mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp_att"
74
		fi
82
		fi
75
 
83
 
76
	#Start gammu
84
	#Start gammu
77
		echo $separator >> $logfile
85
		echo $separator >> $logfile
78
		sudo gammu-smsd --config $config --pid /var/run/gammu-smsd.pid --daemon
86
		sudo gammu-smsd --config $config --pid /var/run/gammu-smsd.pid --daemon
79
} # end function start_gammu
87
} # end function start_gammu
80
 
88
 
81
function stop_gammu() {
89
function stop_gammu() {
82
	#Stop gammu
90
	#Stop gammu
83
		sudo kill -9 gammu-smsd
91
		sudo kill -9 gammu-smsd
84
		sleep 10
92
		sleep 10
85
		echo $end >> $logfile
93
		echo $end >> $logfile
86
} # end function stop_gammu
94
} # end function stop_gammu
87
 
95
 
88
function unlock() {
96
function unlock() {
89
	#Suppression du numero dans la table SMS_ban_perm
97
	#Suppression du numero dans la table SMS_ban_perm
90
		sql_remove_ban_perm="connect gammu; DELETE FROM $sms_p"
98
		sql_remove_ban_perm="connect gammu; DELETE FROM $sms_p"
91
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_perm WHERE SenderNumber=$1;"
99
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_perm WHERE SenderNumber=$1;"
92
				
100
				
93
	# Ajout au groupe sms
101
	# Ajout au groupe sms
94
		sql_remove_gp="connect radius; DELETE FROM $radgp WHERE username='$1';"
102
		sql_remove_gp="connect radius; DELETE FROM $radgp WHERE username='$1';"
95
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_gp"
103
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_gp"
96
	
104
	
97
	# Suppression du compte dans Radcheck
105
	# Suppression du compte dans Radcheck
98
		sql_remove_compte="connect radius; DELETE FROM $rad WHERE username='$1';"
106
		sql_remove_compte="connect radius; DELETE FROM $rad WHERE username='$1';"
99
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_compte"
107
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_compte"
100
} # end function unlock
108
} # end function unlock
101
 
109
 
102
function change_country() {
110
function change_country() {
103
	# recupère le status du pays
111
	# recupère le status du pays
104
		sql_status_country="connect gammu; SELECT status FROM SMS_country WHERE name='$1'"
112
		sql_status_country="connect gammu; SELECT status FROM SMS_country WHERE name='$1'"
105
		stat=$(mysql --user=$u_db --password=$p_db -B -se "$sql_status_country")
113
		stat=$(mysql --user=$u_db --password=$p_db -B -se "$sql_status_country")
106
 
114
 
107
		if [ $stat -eq 0 ]
115
		if [ $stat -eq 0 ]
108
		then
116
		then
109
			sql_change_country="connect gammu; UPDATE $SMS_c SET status=1 WHERE name='$1'"
117
			sql_change_country="connect gammu; UPDATE $SMS_c SET status=1 WHERE name='$1'"
110
			mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
118
			mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
111
		else
119
		else
112
			sql_change_country="connect gammu; UPDATE $SMS_c SET status=0 WHERE name='$1'"
120
			sql_change_country="connect gammu; UPDATE $SMS_c SET status=0 WHERE name='$1'"
113
			mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
121
			mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
114
		fi
122
		fi
115
 
123
 
116
 
124
 
117
} # end change_country
125
} # end change_country
118
 
126
 
119
function supp_acc_rad() {
127
function supp_acc_rad() {
120
	# Suppression du compte dans Radcheck
128
	# Suppression du compte dans Radcheck
121
		sql_del_compte="connect radius; DELETE FROM $rad WHERE username='$1';"
129
		sql_del_compte="connect radius; DELETE FROM $rad WHERE username='$1';"
122
		mysql --user=$u_db --password=$p_db -B -se "$sql_del_compte"
130
		mysql --user=$u_db --password=$p_db -B -se "$sql_del_compte"
123
} # end function supp_acc_rad()
131
} # end function supp_acc_rad()
124
 
132
 
125
function add_acc_rad() {
133
function add_acc_rad() {
126
	# Ajout table RadCheck : creation du compte
134
	# Ajout table RadCheck : creation du compte
127
		sql_add_pass="connect radius; INSERT INTO $rad (username,attribute,op,value) VALUES ('$1','Crypt-Password',':=','$2');"
135
		sql_add_pass="connect radius; INSERT INTO $rad (username,attribute,op,value) VALUES ('$1','Crypt-Password',':=','$2');"
128
		sql_add_expe="connect radius; INSERT INTO $rad (username,attribute,op,value) VALUES ('$1','Expiration',':=','$3');"
136
		sql_add_expe="connect radius; INSERT INTO $rad (username,attribute,op,value) VALUES ('$1','Expiration',':=','$3');"
129
		
137
		
130
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_pass"
138
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_pass"
131
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_expe"
139
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_expe"
132
			
140
			
133
	# Ajout au groupe sms
141
	# Ajout au groupe sms
134
		sql_add_gp="connect radius; INSERT INTO $radgp (username,groupname) VALUES ('$1','sms');"
142
		sql_add_gp="connect radius; INSERT INTO $radgp (username,groupname) VALUES ('$1','sms');"
135
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp"
143
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp"
136
} # end function add_acc_rad()
144
} # end function add_acc_rad()
137
		
145
		
138
function supp_num_temp() {
146
function supp_num_temp() {
139
	# Suppression du numéro dans table SMS_ban_temp
147
	# Suppression du numéro dans table SMS_ban_temp
140
		sql_remove_ban_temp="connect gammu; DELETE FROM $sms_t"
148
		sql_remove_ban_temp="connect gammu; DELETE FROM $sms_t"
141
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_temp WHERE SenderNumber=$1;"
149
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_temp WHERE SenderNumber=$1;"
142
} # end function supp_num_temp()
150
} # end function supp_num_temp()
143
	
151
	
144
function add_num_perm() {
152
function add_num_perm() {
145
	# Ajout du numero table SMS_ban_perm, 0 : creation du compte
153
	# Ajout du numero table SMS_ban_perm, 0 : creation du compte
146
		sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$1',0,'$2');"
154
		sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$1',0,'$2');"
147
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
155
		mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
148
} # end function add_num_perm()
156
} # end function add_num_perm()
149
 
157
 
150
function supp_num_perm() {
158
function supp_num_perm() {
151
	#Suppression du numero dans la table SMS_ban_perm
159
	#Suppression du numero dans la table SMS_ban_perm
152
		sql_remove_ban_perm="connect gammu; DELETE FROM $sms_p"
160
		sql_remove_ban_perm="connect gammu; DELETE FROM $sms_p"
153
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_perm WHERE SenderNumber=$1;"
161
		mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_perm WHERE SenderNumber=$1;"
154
} # end function add_num_perm()
162
} # end function add_num_perm()
155
 
163
 
156
function new_sms() {
164
function new_sms() {
157
	# Check Inbox table, manage Ban temp and perm, create account
165
	# Check Inbox table, manage Ban temp and perm, create account
158
		export salt='$1$passwd$'
166
		export salt='$1$passwd$'
159
	
167
	
160
		sql_select_inbox="connect gammu; SELECT ID, SenderNumber, TextDecoded FROM $inb;"
168
		sql_select_inbox="connect gammu; SELECT ID, SenderNumber, TextDecoded FROM $inb;"
161
		sql_delete_inbox="connect gammu; DELETE FROM $inb"
169
		sql_delete_inbox="connect gammu; DELETE FROM $inb"
162
		
170
		
163
		mysql --user=$u_db --password=$p_db -B -se "$sql_select_inbox" | while read result;
171
		mysql --user=$u_db --password=$p_db -B -se "$sql_select_inbox" | while read result;
164
		do
172
		do
165
		# On recupère le nombre de mots (resultat)
173
		# On recupère le nombre de mots (resultat)
166
			nb=$(echo $result | wc -w)
174
			nb=$(echo $result | wc -w)
167
			
175
			
168
		# On récupère le numéro de l'ID
176
		# On récupère le numéro de l'ID
169
				id=$(echo $result | cut -d ' ' -f1)
177
				id=$(echo $result | cut -d ' ' -f1)
170
 
178
 
171
		numero=$(echo $result | cut -d ' ' -f2)
179
		numero=$(echo $result | cut -d ' ' -f2)
172
 
180
 
173
		if [[ $numero =~ ^\+ ]] 
181
		if [[ $numero =~ ^\+ ]] 
174
		then
182
		then
175
	
183
	
176
			# On vérifie si le pays est bloqué		
184
			# On vérifie si le pays est bloqué		
177
				sql_select_countries="connect gammu; SELECT id FROM $SMS_c WHERE status=1"
185
				sql_select_countries="connect gammu; SELECT id FROM $SMS_c WHERE status=1"
178
				mysql --user=$u_db --password=$p_db -B -se "$sql_select_countries" | while read result_c;
186
				mysql --user=$u_db --password=$p_db -B -se "$sql_select_countries" | while read result_c;
179
				do
187
				do
180
 
188
 
181
				if [[ $numero =~ ^"$result_c" ]]
189
				if [[ $numero =~ ^"$result_c" ]]
182
				then		
190
				then		
183
 
191
 
184
				numero=$(echo $numero | cut -d '+' -f2)
192
				numero=$(echo $numero | cut -d '+' -f2)
185
 
193
 
186
				# On vérifie que le numéro n'est pas Ban Perm	
194
				# On vérifie que le numéro n'est pas Ban Perm	
187
					sql_ban_perm="connect gammu; SELECT * FROM $sms_p WHERE SenderNumber=$numero"
195
					sql_ban_perm="connect gammu; SELECT * FROM $sms_p WHERE SenderNumber=$numero"
188
					result_bp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_ban_perm")
196
					result_bp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_ban_perm")
189
 
197
 
190
					if test -z "$result_bp"
198
					if test -z "$result_bp"
191
					then
199
					then
192
						# Test sur le nombre de mots (resultat)
200
						# Test sur le nombre de mots (resultat)
193
						if [ $nb -eq 2 ]	# Si 2 mots : le mot de passe est manquant
201
						if [ $nb -eq 2 ]	# Si 2 mots : le mot de passe est manquant
194
						then
202
						then
195
							# On incrémente de 1 dans la table des bans temp // NO PASSWORD
203
							# On incrémente de 1 dans la table des bans temp // NO PASSWORD
196
							sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
204
							sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
197
							mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
205
							mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
198
 
206
 
199
						elif [ $nb -eq 3 ]	# Si 3 mots : id + mot de passe + numero 
207
						elif [ $nb -eq 3 ]	# Si 3 mots : id + mot de passe + numero 
200
						then
208
						then
201
							export pass=$(echo $result | cut -d ' ' -f3)
209
							export pass=$(echo $result | cut -d ' ' -f3)
202
							pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
210
							pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
203
			
211
			
204
							export LC_TIME="en_US.UTF-8"
212
							export LC_TIME="en_US.UTF-8"
205
							expir=$(date '+%d %B %Y' -d "$time_account days")
213
							expir=$(date '+%d %B %Y' -d "$time_account days")
206
			
214
			
207
							supp_acc_rad "$numero"
215
							supp_acc_rad "$numero"
208
							add_acc_rad "$numero" "$pass_salt" "$expir"
216
							add_acc_rad "$numero" "$pass_salt" "$expir"
209
							supp_num_temp "$numero"
217
							supp_num_temp "$numero"
210
							add_num_perm "$numero" "$expir"
218
							add_num_perm "$numero" "$expir"
211
						
219
						
212
						else	
220
						else	
213
						# Autrement, le mot de passe est trop grand ( > un mot )
221
						# Autrement, le mot de passe est trop grand ( > un mot )
214
							# On incrémente d'un 1 dans la table des bans temp
222
							# On incrémente d'un 1 dans la table des bans temp
215
								sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
223
								sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
216
								mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
224
								mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
217
						fi
225
						fi
218
			
226
			
219
						# On gère les bans temp en ban perm
227
						# On gère les bans temp en ban perm
220
							sql_select_temp="connect gammu; SELECT ID FROM $sms_t WHERE SenderNumber='$numero'"
228
							sql_select_temp="connect gammu; SELECT ID FROM $sms_t WHERE SenderNumber='$numero'"
221
							r_select_temp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_select_temp")
229
							r_select_temp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_select_temp")
222
							nb_ban_t=$(echo $r_select_temp| wc -w)
230
							nb_ban_t=$(echo $r_select_temp| wc -w)
223
			
231
			
224
						if [ $nb_ban_t -ge $nb_essais ]
232
						if [ $nb_ban_t -ge $nb_essais ]
225
						then
233
						then
226
							supp_num_temp "$numero"
234
							supp_num_temp "$numero"
227
			
235
			
228
								export LC_TIME="en_US.UTF-8"
236
								export LC_TIME="en_US.UTF-8"
229
								expir_f=$(date '+%d %B %Y' -d "$time_ban days")
237
								expir_f=$(date '+%d %B %Y' -d "$time_ban days")
230
				
238
				
231
							# Ajout du numero table SMS_ban_perm, 1 : flood
239
							# Ajout du numero table SMS_ban_perm, 1 : flood
232
								sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');"
240
								sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');"
233
								mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
241
								mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
234
						fi	
242
						fi	
235
					else
243
					else
236
						date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
244
						date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
237
						perm=$(echo $result_bp | cut -d ' ' -f5)
245
						perm=$(echo $result_bp | cut -d ' ' -f5)
238
			
246
			
239
						export LC_TIME="en_US.UTF-8"
247
						export LC_TIME="en_US.UTF-8"
240
						date_script=$(date '+%d %B %Y' -d "now")
248
						date_script=$(date '+%d %B %Y' -d "now")
241
 
249
 
242
					# On converti les deux dates en secondes, pour les comparer.
250
					# On converti les deux dates en secondes, pour les comparer.
243
						d_exp=$(date --date "$date_expiration" +%s)
251
						d_exp=$(date --date "$date_expiration" +%s)
244
						d_scr=$(date --date "$date_script" +%s)
252
						d_scr=$(date --date "$date_script" +%s)
245
 
253
 
246
 
254
 
247
						if test $d_scr -gt $d_exp		# Si le ban à expiré
255
						if test $d_scr -gt $d_exp		# Si le ban à expiré
248
						then
256
						then
249
 
257
 
250
							# Test sur le nombre de mots (resultat)
258
							# Test sur le nombre de mots (resultat)
251
							if [ $nb -eq 2 ]	# Si 2 mots : le mot de passe est manquant
259
							if [ $nb -eq 2 ]	# Si 2 mots : le mot de passe est manquant
252
							then
260
							then
253
							# On incrémente de 1 dans la table des bans temp
261
							# On incrémente de 1 dans la table des bans temp
254
								sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
262
								sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
255
								mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
263
								mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
256
 
264
 
257
							elif [ $nb -eq 3 ]	# Si 3 mots : id + mot de passe + numero 
265
							elif [ $nb -eq 3 ]	# Si 3 mots : id + mot de passe + numero 
258
							then
266
							then
259
								date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
267
								date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
260
								perm=$(echo $result_bp | cut -d ' ' -f5)
268
								perm=$(echo $result_bp | cut -d ' ' -f5)
261
 
269
 
262
								date_script=$(date '+%d %B %Y' -d "now")
270
								date_script=$(date '+%d %B %Y' -d "now")
263
 
271
 
264
							# On converti les deux dates en secondes, pour les comparer.
272
							# On converti les deux dates en secondes, pour les comparer.
265
								d_exp=$(date --date "$date_expiration" +%s)
273
								d_exp=$(date --date "$date_expiration" +%s)
266
								d_scr=$(date --date "$date_script" +%s)
274
								d_scr=$(date --date "$date_script" +%s)
267
 
275
 
268
								export pass=$(echo $result | cut -d ' ' -f3)
276
								export pass=$(echo $result | cut -d ' ' -f3)
269
								pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
277
								pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
270
				
278
				
271
								export LC_TIME="en_US.UTF-8"
279
								export LC_TIME="en_US.UTF-8"
272
								expir=$(date '+%d %B %Y' -d "$time_account days")
280
								expir=$(date '+%d %B %Y' -d "$time_account days")
273
 
281
 
274
 
282
 
275
								supp_acc_rad "$numero"
283
								supp_acc_rad "$numero"
276
								add_acc_rad "$numero" "$pass_salt" "$expir"
284
								add_acc_rad "$numero" "$pass_salt" "$expir"
277
								supp_num_temp "$numero"
285
								supp_num_temp "$numero"
278
								supp_num_perm "$numero"
286
								supp_num_perm "$numero"
279
								add_num_perm "$numero" "$expir"
287
								add_num_perm "$numero" "$expir"
280
					
288
					
281
							else	
289
							else	
282
							# Autrement, le mot de passe est trop grand ( > un mot )
290
							# Autrement, le mot de passe est trop grand ( > un mot )
283
								# On incrémente d'un 1 dans la table des bans temp
291
								# On incrémente d'un 1 dans la table des bans temp
284
									sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
292
									sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
285
									mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
293
									mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
286
									echo "Mot de passe incorrect, ajout du numero en ban temporaire"
294
									echo "Mot de passe incorrect, ajout du numero en ban temporaire"
287
							fi
295
							fi
288
				
296
				
289
							# On gère les bans temp en ban perm
297
							# On gère les bans temp en ban perm
290
								sql_select_temp="connect gammu; SELECT ID FROM $sms_t WHERE SenderNumber='$numero'"
298
								sql_select_temp="connect gammu; SELECT ID FROM $sms_t WHERE SenderNumber='$numero'"
291
								r_select_temp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_select_temp")
299
								r_select_temp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_select_temp")
292
								nb_ban_t=$(echo $r_select_temp| wc -w)
300
								nb_ban_t=$(echo $r_select_temp| wc -w)
293
			
301
			
294
							if [ $nb_ban_t -ge $nb_essais ]
302
							if [ $nb_ban_t -ge $nb_essais ]
295
							then
303
							then
296
								supp_num_perm "$numero"
304
								supp_num_perm "$numero"
297
								supp_num_temp "$numero"
305
								supp_num_temp "$numero"
298
			
306
			
299
									export LC_TIME="en_US.UTF-8"
307
									export LC_TIME="en_US.UTF-8"
300
									expir_f=$(date '+%d %B %Y' -d "$time_ban days")
308
									expir_f=$(date '+%d %B %Y' -d "$time_ban days")
301
			
309
			
302
								# Ajout du numero table SMS_ban_perm, 1 : flood
310
								# Ajout du numero table SMS_ban_perm, 1 : flood
303
									sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');"							mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
311
									sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');"							mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
304
							fi
312
							fi
305
						else
313
						else
306
							echo "Le ban de $numero est encore valide"	
314
							echo "Le ban de $numero est encore valide"	
307
						fi	
315
						fi	
308
						break
316
						break
309
					fi
317
					fi
310
				#else
318
				#else
311
					#echo "Pays bloqué"
319
					#echo "Pays bloqué"
312
				fi
320
				fi
313
			done
321
			done
314
		else
322
		else
315
			echo "Numero non autorisé (ex: 36665)"
323
			echo "Numero non autorisé (ex: 36665)"
316
		fi
324
		fi
317
				# On supprime la ligne d'ID=$id dans inbox
325
				# On supprime la ligne d'ID=$id dans inbox
318
				mysql --user=$u_db --password=$p_db -B -e "$sql_delete_inbox WHERE ID=$id;"
326
				mysql --user=$u_db --password=$p_db -B -e "$sql_delete_inbox WHERE ID=$id;"
319
		done
327
		done
320
} # end function new_sms
328
} # end function new_sms
321
 
329
 
322
 
330
 
323
# CORE
331
# CORE
324
case $args in
332
case $args in
325
	-h | --help)
333
	-h | --help)
326
		echo "$usage"
334
		echo "$usage"
327
		exit 0
335
		exit 0
328
		;;
336
		;;
329
	--start)
337
	--start)
-
 
338
		gammu_pid=`/usr/sbin/pidof gammu-smsd|wc -l`
-
 
339
		if [ $gammu_pid != "0" ]
-
 
340
			then
-
 
341
			echo "gammu is already started"
-
 
342
		else
330
		start_gammu
343
			start_gammu
331
		sed -i "s/\$service_SMS_status=false;/\$service_SMS_status=true;/g" $index_page
344
			sed -i "s/\$service_SMS_status=false;/\$service_SMS_status=true;/g" $index_page
332
		sed -i "s/\$service_SMS_status=false;/\$service_SMS_status=true;/g" $public_page
345
			sed -i "s/\$service_SMS_status=false;/\$service_SMS_status=true;/g" $public_page
-
 
346
		fi
333
		exit 0
347
		exit 0
334
		;;
348
		;;
335
	--stop)
349
	--stop)
-
 
350
		gammu_pid=`/usr/sbin/pidof gammu-smsd|wc -l`
-
 
351
		if [ $gammu_pid != "0" ]
-
 
352
			then
336
		stop_gammu
353
			stop_gammu
337
		sed -i "s/\$service_SMS_status=true;/\$service_SMS_status=false;/g" $index_page
354
			sed -i "s/\$service_SMS_status=true;/\$service_SMS_status=false;/g" $index_page
338
		sed -i "s/\$service_SMS_status=true;/\$service_SMS_status=false;/g" $public_page
355
			sed -i "s/\$service_SMS_status=true;/\$service_SMS_status=false;/g" $public_page
-
 
356
		else
-
 
357
			echo "gammu is already stopped"
-
 
358
		fi
339
		exit 0 
359
		exit 0 
340
		;;
360
		;;
341
	--pidof)
361
	--pidof)
342
		/sbin/pidof gammu-smsd
362
		/sbin/pidof gammu-smsd
343
		;;
363
		;;
344
	--last_nosim)
364
	--last_nosim)
345
		# Récupère la dernière ligne où NOSIM est présent (error)
365
		# Récupère la dernière ligne où NOSIM est présent (error)
346
		cat $logfile | grep -n "NOSIM" | cut -d ':' -f1 | tail -n 1
366
		cat $logfile | grep -n "NOSIM" | cut -d ':' -f1 | tail -n 1
347
		exit 0 
367
		exit 0 
348
		;;
368
		;;
349
	--last_start)
369
	--last_start)
350
		# Récupère la dernière ligne où ########## est présent (séparateur)
370
		# Récupère la dernière ligne où ########## est présent (séparateur)
351
		cat $logfile | grep -n "##########" | cut -d ':' -f1 | tail -n 1
371
		cat $logfile | grep -n "##########" | cut -d ':' -f1 | tail -n 1
352
		exit 0 
372
		exit 0 
353
		;;
373
		;;
354
	--last_stop)
374
	--last_stop)
355
		# Récupère la dernière ligne où %%%%%%%%%% est présent (séparateur)
375
		# Récupère la dernière ligne où %%%%%%%%%% est présent (séparateur)
356
		cat $logfile | grep -n "%%%%%%%%%%" | cut -d ':' -f1 | tail -n 1
376
		cat $logfile | grep -n "%%%%%%%%%%" | cut -d ':' -f1 | tail -n 1
357
		exit 0 
377
		exit 0 
358
		;;
378
		;;
359
	--last_writeerror)
379
	--last_writeerror)
360
		#Récupère la dernière ligne où SECURITYERROR est présent (error)
380
		#Récupère la dernière ligne où SECURITYERROR est présent (error)
361
		cat $logfile | grep -n "DEVICEWRITEERROR" | cut -d ':' -f1 | tail -n 1
381
		cat $logfile | grep -n "DEVICEWRITEERROR" | cut -d ':' -f1 | tail -n 1
362
		exit 0 
382
		exit 0 
363
		;;
383
		;;
364
	--last_timeout)
384
	--last_timeout)
365
		# Récupère la dernière ligne où SECURITYERROR est présent (error)
385
		# Récupère la dernière ligne où SECURITYERROR est présent (error)
366
		cat $logfile | grep -n "TIMEOUT" | cut -d ':' -f1 | tail -n 1
386
		cat $logfile | grep -n "TIMEOUT" | cut -d ':' -f1 | tail -n 1
367
		exit 0 
387
		exit 0 
368
		;;
388
		;;
369
	--last_secu)
389
	--last_secu)
370
		# Récupère la dernière ligne où SECURITYERROR est présent (error)
390
		# Récupère la dernière ligne où SECURITYERROR est présent (error)
371
		cat $logfile | grep -n "SECURITYERROR" | cut -d ':' -f1 | tail -n 1
391
		cat $logfile | grep -n "SECURITYERROR" | cut -d ':' -f1 | tail -n 1
372
		exit 0 
392
		exit 0 
373
		;;
393
		;;
374
	--last_puk)
394
	--last_puk)
375
		# Récupère la dernière ligne où PUK est présent (error)
395
		# Récupère la dernière ligne où PUK est présent (error)
376
		cat $logfile | grep -n "UNKNOWN" | cut -d ':' -f1 | tail -n 1
396
		cat $logfile | grep -n "UNKNOWN" | cut -d ':' -f1 | tail -n 1
377
		exit 0 
397
		exit 0 
378
		;;
398
		;;
379
	#--log)
399
	#--log)
380
	#	# Récupère le nom du fichier de log
400
	#	# Récupère le nom du fichier de log
381
	#	cat $config | grep logfile | cut -d ' ' -f3
401
	#	cat $config | grep logfile | cut -d ' ' -f3
382
	#	exit 0 
402
	#	exit 0 
383
	#	;;
403
	#	;;
384
	--connect)
404
	--connect)
385
		# Récupère la vitesse de co
405
		# Récupère la vitesse de co
386
		cat $config | grep connection | cut -d ' ' -f3
406
		cat $config | grep connection | cut -d ' ' -f3
387
		exit 0 
407
		exit 0 
388
		;;
408
		;;
389
	--replace_connect)
409
	--replace_connect)
390
		# Edition de la vitesse de co
410
		# Edition de la vitesse de co
391
		sed -i "s/^connection = at.*/connection = at$2/g" $config
411
		sed -i "s/^connection = at.*/connection = at$2/g" $config
392
		exit 0 
412
		exit 0 
393
		;;
413
		;;
394
	--pin)
414
	--pin)
395
		# Récupère le code PIN (file de conf)
415
		# Récupère le code PIN (file de conf)
396
		cat $config | grep PIN | cut -d ' ' -f3
416
		cat $config | grep PIN | cut -d ' ' -f3
397
		exit 0 
417
		exit 0 
398
		;;
418
		;;
399
	--replace_pin)
419
	--replace_pin)
400
		# Edition du code PIN
420
		# Edition du code PIN
401
		sed -i "s/^PIN =.*/PIN = $2/g" $config
421
		sed -i "s/^PIN =.*/PIN = $2/g" $config
402
		exit 0 
422
		exit 0 
403
		;;
423
		;;
404
	--try_ban)
424
	--try_ban)
405
		# Récupère le nombre d'essais avant le ban perm
425
		# Récupère le nombre d'essais avant le ban perm
406
		grep nb_essais= $script | head -n 1 | cut -d '=' -f2
426
		grep nb_essais= $script | head -n 1 | cut -d '=' -f2
407
		exit 0 
427
		exit 0 
408
		;;
428
		;;
409
	--replace_try_ban)
429
	--replace_try_ban)
410
		# Edition le nombre d'essais avant le ban perm
430
		# Edition le nombre d'essais avant le ban perm
411
		sed -i "s/^nb_essais=.*/nb_essais=$2/g" $script
431
		sed -i "s/^nb_essais=.*/nb_essais=$2/g" $script
412
		exit 0 
432
		exit 0 
413
		;;
433
		;;
414
	--time_account)
434
	--time_account)
415
		# Récupère la durée en jours de la session créée
435
		# Récupère la durée en jours de la session créée
416
		grep time_account= $script | head -n 1 | cut -d '=' -f2
436
		grep time_account= $script | head -n 1 | cut -d '=' -f2
417
		exit 0 
437
		exit 0 
418
		;;
438
		;;
419
	--replace_time_account)
439
	--replace_time_account)
420
		# Edition de la durée de la session créée
440
		# Edition de la durée de la session créée
421
		sed -i "s/^time_account=.*/time_account=$2/g" $script
441
		sed -i "s/^time_account=.*/time_account=$2/g" $script
422
		exit 0 
442
		exit 0 
423
		;;
443
		;;
424
	--time_perm)
444
	--time_perm)
425
		# Récupère la durée un jours d'un ban perm (après flood par exemple)
445
		# Récupère la durée un jours d'un ban perm (après flood par exemple)
426
		grep time_ban= $script | head -n 1 | cut -d '=' -f2
446
		grep time_ban= $script | head -n 1 | cut -d '=' -f2
427
		exit 0 
447
		exit 0 
428
		;;
448
		;;
429
	--replace_time_perm)
449
	--replace_time_perm)
430
		# Edition de la durée d'un ban perm
450
		# Edition de la durée d'un ban perm
431
		sed -i "s/^time_ban=.*/time_ban=$2/g" $script
451
		sed -i "s/^time_ban=.*/time_ban=$2/g" $script
432
		exit 0 
452
		exit 0 
433
		;;
453
		;;
434
	--unlock_num)
454
	--unlock_num)
435
		# Appel de la fonction unlock : deban un numero $2
455
		# Appel de la fonction unlock : deban un numero $2
436
		unlock "$2"
456
		unlock "$2"
437
		exit 0 
457
		exit 0 
438
		;;
458
		;;
439
	--change_country)
459
	--change_country)
440
		# Permet de changer l'état de blocage d'un pays
460
		# Permet de changer l'état de blocage d'un pays
441
		a=""
461
		a=""
442
		for i in "$@"
462
		for i in "$@"
443
		do 
463
		do 
444
			a=$(echo "$a $i")
464
			a=$(echo "$a $i")
445
		done
465
		done
446
		a=$(echo $a | cut -d ' ' -f2-$#)
466
		a=$(echo $a | cut -d ' ' -f2-$#)
447
		change_country "$a"
467
		change_country "$a"
448
		exit
468
		exit
449
		;;
469
		;;
450
	--change_country_ena_all)
470
	--change_country_ena_all)
451
		# Active l'ensemble des pays
471
		# Active l'ensemble des pays
452
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=1"
472
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=1"
453
		mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
473
		mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
454
		exit
474
		exit
455
		;;
475
		;;
456
	--change_country_dis_all)
476
	--change_country_dis_all)
457
		# Desactive l'ensemble des pays
477
		# Desactive l'ensemble des pays
458
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=0"
478
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=0"
459
		mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
479
		mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
460
		exit
480
		exit
461
		;;
481
		;;
462
	--change_country_filter)
482
	--change_country_filter)
463
		# Change la valeur du filtrage (FR, UE, all, perso)
483
		# Change la valeur du filtrage (FR, UE, all, perso)
464
		sql_change_country="connect gammu; UPDATE $SMS_c SET id='$2' WHERE name='FILTRAGE'"
484
		sql_change_country="connect gammu; UPDATE $SMS_c SET id='$2' WHERE name='FILTRAGE'"
465
		mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
485
		mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
466
		break
486
		break
467
		;;
487
		;;
468
	--new_sms)
488
	--new_sms)
469
		# Appel de la fonction new_sms : filtrage du password, creation du compte et ban
489
		# Appel de la fonction new_sms : filtrage du password, creation du compte et ban
470
		new_sms
490
		new_sms
471
		exit 0
491
		exit 0
472
		;;
492
		;;
473
	--imei_device)
493
	--imei_device)
474
		# Recuperation de l'imei du device
494
		# Recuperation de l'imei du device
475
		sql_imei_phones="connect gammu; SELECT \`IMEI\` FROM phones;"
495
		sql_imei_phones="connect gammu; SELECT \`IMEI\` FROM phones;"
476
		mysql --user=$u_db --password=$p_db -B -se "$sql_imei_phones"
496
		mysql --user=$u_db --password=$p_db -B -se "$sql_imei_phones"
477
		exit 0
497
		exit 0
478
		;;
498
		;;
479
	--signal_device)
499
	--signal_device)
480
		# Recuperation du signal du device
500
		# Recuperation du signal du device
481
		sql_signal_phones="connect gammu; SELECT \`Signal\` FROM phones;"
501
		sql_signal_phones="connect gammu; SELECT \`Signal\` FROM phones;"
482
		mysql --user=$u_db --password=$p_db -B -se "$sql_signal_phones"
502
		mysql --user=$u_db --password=$p_db -B -se "$sql_signal_phones"
483
		exit 0
503
		exit 0
484
		;;
504
		;;
485
	--sms_received)
505
	--sms_received)
486
		# Recuperation du nombre de sms reçu. Depuis la dernière activation.
506
		# Recuperation du nombre de sms reçu. Depuis la dernière activation.
487
		sql_sms_received="connect gammu; SELECT \`Received\` FROM phones;"
507
		sql_sms_received="connect gammu; SELECT \`Received\` FROM phones;"
488
		mysql --user=$u_db --password=$p_db -B -se "$sql_sms_received"
508
		mysql --user=$u_db --password=$p_db -B -se "$sql_sms_received"
489
		exit 0
509
		exit 0
490
		;;
510
		;;
491
	--numero_alcasar)
511
	--numero_alcasar)
492
		# Récupère le numero de la clé 3g (téléphone)
512
		# Récupère le numero de la clé 3g (téléphone)
493
		grep "\$current_num=" $public_page | head -n 1 | cut -d"'" -f2
513
		grep "\$current_num=" $public_page | head -n 1 | cut -d"'" -f2
494
		exit 0 
514
		exit 0 
495
		;;
515
		;;
496
	--replace_numero_alcasar)
516
	--replace_numero_alcasar)
497
		# Edition du numero de la clé 3g (téléphone)
517
		# Edition du numero de la clé 3g (téléphone)
498
		sed -i "s/\$current_num=.*/\$current_num='$2';/g" $public_page
518
		sed -i "s/\$current_num=.*/\$current_num='$2';/g" $public_page
499
		exit 0 
519
		exit 0 
500
		;;
520
		;;
501
	--mode)
521
	--mode)
502
		# Mode huawei
522
		# Mode huawei
503
		mode_huawei
523
		mode_huawei
504
		exit 0
524
		exit 0
505
		;;
525
		;;
506
	*)
526
	*)
507
		# Default
527
		# Default
508
		echo "$usage"
528
		echo "$usage"
509
		exit 0
529
		exit 0
510
		;;
530
		;;
511
esac
531
esac
512
exit 0
532
exit 0
513
 
533