Subversion Repositories ALCASAR

Rev

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

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