Subversion Repositories ALCASAR

Rev

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

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