Subversion Repositories ALCASAR

Rev

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

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