Subversion Repositories ALCASAR

Rev

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

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