Subversion Repositories ALCASAR

Rev

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

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