Subversion Repositories ALCASAR

Rev

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

Rev 2601 Rev 2631
1
#!/bin/bash
1
#!/bin/bash
2
# $Id: alcasar-sms.sh 2601 2018-08-19 23:58:27Z tom.houdayer $
2
# $Id: alcasar-sms.sh 2631 2018-09-12 21:16:42Z 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
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
PASSWD_FILE="/root/ALCASAR-passwords.txt"
20
PASSWD_FILE="/root/ALCASAR-passwords.txt"
21
u_db=$(grep '^db_user='     $PASSWD_FILE | cut -d'=' -f2-)
21
u_db=$(grep '^db_user='     $PASSWD_FILE | cut -d'=' -f2-)
22
p_db=$(grep '^db_password=' $PASSWD_FILE | cut -d'=' -f2-)
22
p_db=$(grep '^db_password=' $PASSWD_FILE | cut -d'=' -f2-)
23
#########################################
23
#########################################
24
#########################################
24
#########################################
25
 
25
 
26
rad="radcheck"
26
rad="radcheck"
27
radgp="radusergroup"
27
radgp="radusergroup"
28
radgpck="radgroupcheck"
28
radgpck="radgroupcheck"
29
radinf="userinfo"
29
radinf="userinfo"
30
 
30
 
31
sms_p="SMS_ban_perm"
31
sms_p="SMS_ban_perm"
32
sms_t="SMS_ban_temp"
32
sms_t="SMS_ban_temp"
33
 
33
 
34
inb="inbox"
34
inb="inbox"
35
SMS_c="SMS_country"
35
SMS_c="SMS_country"
36
 
36
 
37
config="/etc/gammu_smsd_conf"
37
config="/etc/gammu_smsd_conf"
38
config2="/etc/gammurc"
38
config2="/etc/gammurc"
39
logfile="/var/log/gammu-smsd/gammu-smsd.log"
39
logfile="/var/log/gammu-smsd/gammu-smsd.log"
40
script="/usr/local/bin/alcasar-sms.sh"
40
script="/usr/local/bin/alcasar-sms.sh"
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
	# Check phone number is set
69
	# Check phone number is set
70
	if [ -z "$(grep '^SMS_NUM=' $CONF_FILE | cut -d'=' -f2-)" ]; then
70
	if [ -z "$(grep '^SMS_NUM=' $CONF_FILE | cut -d'=' -f2-)" ]; then
71
		echo 'The phone number is not set.'
71
		echo 'The phone number is not set.'
72
		# exit 2
72
		# exit 2
73
	fi
73
	fi
74
 
74
 
75
	#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é)
76
	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;'
77
 
77
 
78
 
78
 
79
	#On verifie que le groupe sms est créé
79
	#On verifie que le groupe sms est créé
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
	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
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
		sql_add_gp="INSERT INTO $radgp (username,groupname) VALUES ('sms','sms'); INSERT INTO $radgpck (groupname,attribute,op,value) VALUES ('sms','Simultaneous-Use',':=',1);"
82
		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"
83
	fi
83
	fi
84
 
84
 
85
	#Start gammu
85
	#Start gammu
86
	echo $separator >> $logfile
86
	echo $separator >> $logfile
87
	/usr/bin/systemctl -q start gammu-smsd.service
87
	/usr/bin/systemctl -q start gammu-smsd.service
88
	/usr/bin/systemctl -q enable gammu-smsd.service
88
	/usr/bin/systemctl -q enable gammu-smsd.service
89
} # end function start_gammu
89
} # end function start_gammu
90
 
90
 
91
function stop_gammu() {
91
function stop_gammu() {
92
	#Stop gammu
92
	#Stop gammu
93
	/usr/bin/systemctl -q stop gammu-smsd.service
93
	/usr/bin/systemctl -q stop gammu-smsd.service
94
	/usr/bin/systemctl -q disable gammu-smsd.service
94
	/usr/bin/systemctl -q disable gammu-smsd.service
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='$5$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
		fi
346
		fi
347
		sed -i "s/^SMS=.*/SMS=on/" $CONF_FILE
347
		sed -i "s/^SMS=.*/SMS=on/" $CONF_FILE
348
		exit 0
348
		exit 0
349
		;;
349
		;;
350
	--stop)
350
	--stop)
351
		gammu_pid=`/usr/sbin/pidof gammu-smsd|wc -l`
351
		gammu_pid=`/usr/sbin/pidof gammu-smsd|wc -l`
352
		if [ $gammu_pid != "0" ]
352
		if [ $gammu_pid != "0" ]
353
			then
353
			then
354
			stop_gammu
354
			stop_gammu
355
		else
355
		else
356
			echo "gammu is already stopped"
356
			echo "gammu is already stopped"
357
		fi
357
		fi
358
		sed -i "s/^SMS=.*/SMS=off/" $CONF_FILE
358
		sed -i "s/^SMS=.*/SMS=off/" $CONF_FILE
359
		exit 0
359
		exit 0
360
		;;
360
		;;
361
	--pidof)
361
	--pidof)
362
		/sbin/pidof gammu-smsd
362
		/sbin/pidof gammu-smsd
363
		;;
363
		;;
364
	--last_nosim)
364
	--last_nosim)
365
		# 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)
366
		cat $logfile | grep -n "NOSIM" | cut -d ':' -f1 | tail -n 1
366
		cat $logfile | grep -n "NOSIM" | cut -d ':' -f1 | tail -n 1
367
		exit 0
367
		exit 0
368
		;;
368
		;;
369
	--last_start)
369
	--last_start)
370
		# 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)
371
		cat $logfile | grep -n "##########" | cut -d ':' -f1 | tail -n 1
371
		cat $logfile | grep -n "##########" | cut -d ':' -f1 | tail -n 1
372
		exit 0
372
		exit 0
373
		;;
373
		;;
374
	--last_stop)
374
	--last_stop)
375
		# 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)
376
		cat $logfile | grep -n "%%%%%%%%%%" | cut -d ':' -f1 | tail -n 1
376
		cat $logfile | grep -n "%%%%%%%%%%" | cut -d ':' -f1 | tail -n 1
377
		exit 0
377
		exit 0
378
		;;
378
		;;
379
	--last_writeerror)
379
	--last_writeerror)
380
		#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)
381
		cat $logfile | grep -n "DEVICEWRITEERROR" | cut -d ':' -f1 | tail -n 1
381
		cat $logfile | grep -n "DEVICEWRITEERROR" | cut -d ':' -f1 | tail -n 1
382
		exit 0
382
		exit 0
383
		;;
383
		;;
384
	--last_timeout)
384
	--last_timeout)
385
		# 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)
386
		cat $logfile | grep -n "TIMEOUT" | cut -d ':' -f1 | tail -n 1
386
		cat $logfile | grep -n "TIMEOUT" | cut -d ':' -f1 | tail -n 1
387
		exit 0
387
		exit 0
388
		;;
388
		;;
389
	--last_secu)
389
	--last_secu)
390
		# 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)
391
		cat $logfile | grep -n "SECURITYERROR" | cut -d ':' -f1 | tail -n 1
391
		cat $logfile | grep -n "SECURITYERROR" | cut -d ':' -f1 | tail -n 1
392
		exit 0
392
		exit 0
393
		;;
393
		;;
394
	--last_puk)
394
	--last_puk)
395
		# 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)
396
		cat $logfile | grep -n "UNKNOWN" | cut -d ':' -f1 | tail -n 1
396
		cat $logfile | grep -n "UNKNOWN" | cut -d ':' -f1 | tail -n 1
397
		exit 0
397
		exit 0
398
		;;
398
		;;
399
	#--log)
399
	#--log)
400
	#	# Récupère le nom du fichier de log
400
	#	# Récupère le nom du fichier de log
401
	#	cat $config | grep logfile | cut -d ' ' -f3
401
	#	cat $config | grep logfile | cut -d ' ' -f3
402
	#	exit 0
402
	#	exit 0
403
	#	;;
403
	#	;;
404
	--connect)
404
	--connect)
405
		# display the com port speed
405
		# display the com port speed
406
		cat $config | grep connection | cut -d ' ' -f3
406
		cat $config | grep connection | cut -d ' ' -f3
407
		exit 0
407
		exit 0
408
		;;
408
		;;
409
	--replace_port)
409
	--replace_port)
410
		# modify the com port
410
		# modify the com port
411
		echo $2
411
		echo $2
412
		sed -i "s?^port = .*?port = $2?g" $config
412
		sed -i "s?^port = .*?port = $2?g" $config
413
		sed -i "0,/^device =/ s?device =.*?device = $2?" $config2
413
		sed -i "0,/^device =/ s?device =.*?device = $2?" $config2
414
		exit 0
414
		exit 0
415
		;;
415
		;;
416
	--replace_speed)
416
	--replace_speed)
417
		# modufy the com port speed
417
		# modufy the com port speed
418
		sed -i "s/^connection = at.*/connection = at$2/g" $config
418
		sed -i "s/^connection = at.*/connection = at$2/g" $config
419
		sed -i "0,/^connection =/ s/connection =.*/connection = $2/" $config2
419
		sed -i "0,/^connection =/ s/connection =.*/connection = $2/" $config2
420
		exit 0
420
		exit 0
421
		;;
421
		;;
422
	--pin)
422
	--pin)
423
		# Récupère le code PIN (file de conf)
423
		# Récupère le code PIN (file de conf)
424
		cat $config | grep PIN | cut -d ' ' -f3
424
		cat $config | grep PIN | cut -d ' ' -f3
425
		exit 0
425
		exit 0
426
		;;
426
		;;
427
	--replace_pin)
427
	--replace_pin)
428
		# Edition du code PIN
428
		# Edition du code PIN
429
		sed -i "s/^PIN =.*/PIN = $2/g" $config
429
		sed -i "s/^PIN =.*/PIN = $2/g" $config
430
		exit 0
430
		exit 0
431
		;;
431
		;;
432
	--try_ban)
432
	--try_ban)
433
		# Récupère le nombre d'essais avant le ban perm
433
		# Récupère le nombre d'essais avant le ban perm
434
		grep nb_essais= $script | head -n 1 | cut -d '=' -f2
434
		grep nb_essais= $script | head -n 1 | cut -d '=' -f2
435
		exit 0
435
		exit 0
436
		;;
436
		;;
437
	--replace_try_ban)
437
	--replace_try_ban)
438
		# Edition le nombre d'essais avant le ban perm
438
		# Edition le nombre d'essais avant le ban perm
439
		sed -i "s/^nb_essais=.*/nb_essais=$2/g" $script
439
		sed -i "s/^nb_essais=.*/nb_essais=$2/g" $script
440
		exit 0
440
		exit 0
441
		;;
441
		;;
442
	--time_account)
442
	--time_account)
443
		# 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
444
		grep time_account= $script | head -n 1 | cut -d '=' -f2
444
		grep time_account= $script | head -n 1 | cut -d '=' -f2
445
		exit 0
445
		exit 0
446
		;;
446
		;;
447
	--replace_time_account)
447
	--replace_time_account)
448
		# Edition de la durée de la session créée
448
		# Edition de la durée de la session créée
449
		sed -i "s/^time_account=.*/time_account=$2/g" $script
449
		sed -i "s/^time_account=.*/time_account=$2/g" $script
450
		exit 0
450
		exit 0
451
		;;
451
		;;
452
	--time_perm)
452
	--time_perm)
453
		# 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)
454
		grep time_ban= $script | head -n 1 | cut -d '=' -f2
454
		grep time_ban= $script | head -n 1 | cut -d '=' -f2
455
		exit 0
455
		exit 0
456
		;;
456
		;;
457
	--replace_time_perm)
457
	--replace_time_perm)
458
		# Edition de la durée d'un ban perm
458
		# Edition de la durée d'un ban perm
459
		sed -i "s/^time_ban=.*/time_ban=$2/g" $script
459
		sed -i "s/^time_ban=.*/time_ban=$2/g" $script
460
		exit 0
460
		exit 0
461
		;;
461
		;;
462
	--unlock_num)
462
	--unlock_num)
463
		# Appel de la fonction unlock : deban un numero $2
463
		# Appel de la fonction unlock : deban un numero $2
464
		unlock "$2"
464
		unlock "$2"
465
		exit 0
465
		exit 0
466
		;;
466
		;;
467
	--change_country)
467
	--change_country)
468
		# Permet de changer l'état de blocage d'un pays
468
		# Permet de changer l'état de blocage d'un pays
469
		a=""
469
		a=""
470
		for i in "$@"
470
		for i in "$@"
471
		do
471
		do
472
			a=$(echo "$a $i")
472
			a=$(echo "$a $i")
473
		done
473
		done
474
		a=$(echo $a | cut -d ' ' -f2-$#)
474
		a=$(echo $a | cut -d ' ' -f2-$#)
475
		change_country "$a"
475
		change_country "$a"
476
		exit
476
		exit
477
		;;
477
		;;
478
	--change_country_ena_all)
478
	--change_country_ena_all)
479
		# Active l'ensemble des pays
479
		# Active l'ensemble des pays
480
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=1"
480
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=1"
481
		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"
482
		exit
482
		exit
483
		;;
483
		;;
484
	--change_country_dis_all)
484
	--change_country_dis_all)
485
		# Desactive l'ensemble des pays
485
		# Desactive l'ensemble des pays
486
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=0"
486
		sql_change_country="connect gammu; UPDATE $SMS_c SET status=0"
487
		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"
488
		exit
488
		exit
489
		;;
489
		;;
490
	--change_country_filter)
490
	--change_country_filter)
491
		# Change la valeur du filtrage (FR, UE, all, perso)
491
		# Change la valeur du filtrage (FR, UE, all, perso)
492
		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'"
493
		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"
494
		break
494
		break
495
		;;
495
		;;
496
	--new_sms)
496
	--new_sms)
497
		# 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
498
		new_sms
498
		new_sms
499
		exit 0
499
		exit 0
500
		;;
500
		;;
501
	--imei_device)
501
	--imei_device)
502
		# Recuperation de l'imei du device
502
		# Recuperation de l'imei du device
503
		sql_imei_phones="connect gammu; SELECT \`IMEI\` FROM phones;"
503
		sql_imei_phones="connect gammu; SELECT \`IMEI\` FROM phones;"
504
		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"
505
		exit 0
505
		exit 0
506
		;;
506
		;;
507
	--signal_device)
507
	--signal_device)
508
		# Recuperation du signal du device
508
		# Recuperation du signal du device
509
		sql_signal_phones="connect gammu; SELECT \`Signal\` FROM phones;"
509
		sql_signal_phones="connect gammu; SELECT \`Signal\` FROM phones;"
510
		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"
511
		exit 0
511
		exit 0
512
		;;
512
		;;
513
	--sms_received)
513
	--sms_received)
514
		# 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.
515
		sql_sms_received="connect gammu; SELECT \`Received\` FROM phones;"
515
		sql_sms_received="connect gammu; SELECT \`Received\` FROM phones;"
516
		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"
517
		exit 0
517
		exit 0
518
		;;
518
		;;
519
	--numero_alcasar)
519
	--numero_alcasar)
520
		# 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)
521
		grep '^SMS_NUM=' $CONF_FILE | cut -d'=' -f2-
521
		grep '^SMS_NUM=' $CONF_FILE | cut -d'=' -f2-
522
		exit 0
522
		exit 0
523
		;;
523
		;;
524
	--replace_numero_alcasar)
524
	--replace_numero_alcasar)
525
		# Edition du numero de la clé 3g (téléphone)
525
		# Edition du numero de la clé 3g (téléphone)
526
		sed -i "s/^SMS_NUM=.*/SMS_NUM=$2/" $CONF_FILE
526
		sed -i "s/^SMS_NUM=.*/SMS_NUM=$2/" $CONF_FILE
527
		exit 0
527
		exit 0
528
		;;
528
		;;
529
	--mode)
529
	--mode)
530
		# Mode huawei
530
		# Mode huawei
531
		mode_huawei
531
		mode_huawei
532
		exit 0
532
		exit 0
533
		;;
533
		;;
534
	*)
534
	*)
535
		# Default
535
		# Default
536
		echo "$usage"
536
		echo "$usage"
537
		exit 0
537
		exit 0
538
		;;
538
		;;
539
esac
539
esac
540
exit 0
540
exit 0
541
 
541