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